fprintf函数的用法matlab_从零开始的matlab学习笔记——(12)其它求根方法

上一节我们说了说多项式的根,这一篇我们讨论一下方程组,超越方程等的求根。

方程组求解:

首先看一下最简单的多元一次方程:

3x+2y=7.5

5x+7y=23.5

直接运用克拉默法则:

ans=inv(a)*b,这里inv(a)=1/a

这样解得x=0.5,y=3

完整代码:

a=[3 2;5 7];

b=[7.5;23.5];

ans=inv(a)*b;

fprintf(' x = %g, y = %g',ans(1),ans(2));

结果:

64b26f85081f6154667f951aa61acd29.png

注意几点:

1、a矩阵存放等式左边的系数,b存放等式右边的常数

2、系数为0也要补上

这是一个最简单的版本,但是好多情况下我们还会碰到多元也多次的方程(比如高中的解析几何),这时候我们需要借助solve()函数。

solve函数用途很多,这里只介绍两种。

一个就是求解多元多次方程

x^2+y^2=4

y-x+1=0

求交点,一个正常的高中解析几何题,这次我们尝试用matlab解决

卑微的代码:

syms x y

f=(x^2 + y^2 == 4)

g=(y - x + 1 == 0)

[x,y]=solve(f,g)

a=[x,y]

pretty(a)

这里还是细致的说一下吧

1、定义符号变量x,y

2、定义解析式f,g

3、运用solve函数

4、pretty()美化一下结果

solve函数:

solve(f,g)两个参数,代表两个解析式,返回值为一个矩阵[x,y],代表求的值x,y

我们看一下结果:

58bbd98f5f77b7d12bf1fd86167dc2d0.png

这里注意几点:

1、解析式的等号是==,不要写成=

2、solve的返回值是个矩阵

3、答案中每一列代表一个变量的取值,以这个答案为例:

x1,y1

x2,y2

所以排布是这个样的。

超越方程:

solve函数解决超越方程是有一定局限性的,只能接触一些值比较特殊的解,比如有理数,一些根式,复杂一些的比如e,sin1这些解决不了

我们来看一个例子:

这个代入x=1是成立的

代码很简单:

syms x

f=(log(x)==2.^x-2)

ans=solve(f)

这个只有一个参数,返回值是一个矩阵,代表所有解

结果ans=1.0

但是一作图,会发现其实有两个根:

479170832d6d09bd60dd3a37bd32438c.png
matlab作图后面会说的,先挖个坑

其中一个根无法简单表示出来,solve就解决不了,自动忽略了(???)所以solve函数求解超越方程是有一定局限性的。

这一节我们说了说matlab其它的求解方法,下一节再回到多项式和符号计算。

欢迎喜欢的朋友点赞关注收藏啊:)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值