一、单变量非线性方程求解
在 MATLAB 中提供了一个 fzero 函数,可以用来求 单变量非线性方程的根。该函数的调用格式为:z=fzero('fname',x0,tol,trace)其中 fname 是待求根的函数文件名, x0 为搜索的起 点。一个函数可能有多个根,但 fzero 函数只给出 离 x0 最近的那个根。 tol 控制结果的相对精度,缺 省时取 tol=eps , trace指定迭代信息是否在运算中显示 , 为1时显示 , 为0时不显示 , 缺省时取trace=0 。
例
7-8
求
f(x)=x-10
x
+2=0
在
x0=0.5
附近的根。
步骤如下:
(1)
建立函数文件
funx.m
。
function fx=funx(x)
fx=x-10.^x+2;
(2)
调用
fzero
函数求根。
z=fzero('funx',0.5)
z = 0.3758
运行结果 :
二、非线性方程组的求解
对于 非线性方程组 F(X)=0 ,用 fsolve 函数求其数值解。 fsolve 函数的调用格式为:X=fsolve('fun',X0,option)其中 X 为返回的解, fun 是用于定义需求解的非线性方程组的 函数文件名, X0 是求根过程的初值, option 为最优化工具 箱的选项设定。最优化工具箱提供了 20 多个选项,用户可 以使用 optimset 命令将它们显示出来。如果想改变其中某 个选项,则可以调用 optimset() 函数来完成。例如 Display 选项决定函数调用时中间结果的显示方式,其中 ‘ off ’ 为 不显示 , ‘ iter ’ 表示 每步都显示 , ‘ final ’ 只显示 最终结果 。 optimset(‘Display’,‘off’) 将设定 Display 选项为 ‘off’ 。
例
7-9
求下列非线性方程组在
(0.5,0.5)
附近的数值解。
(1)
建立函数文件
myfun.m
。
function q=myfun(p)
x=p(1);
y=p(2);
q(1)=x-0.6*sin(x)-0.3*cos(y);
q(2)=y-0.6*cos(x)+0.3*sin(y);
(2)
在给定的初值
x0=0.5,y0=0.5
下,调用
fsolve
函数求方程
的根。
x=fsolve('myfun',[0.5,0.5]',optimset('Display','off'))
x =
0.6354
0.3734
运行结果 :
将求得的解代回原方程,可以检验结果是否正确,命令如下:
q=myfun(x)
q =1.0e-009 *0.2375
0.2957
运行结果 :
![](https://i-blog.csdnimg.cn/direct/f883e60f82db4edba17f5fac62b38afa.png)
![](https://img-blog.csdnimg.cn/direct/4e74fe0b79594014b8b25167e86e2a09.png)
你向往什么,就向着那里努力你期待什么,就全身心地追寻只要你不认输,就没有什么能阻挡你的脚步!!!
![](https://i-blog.csdnimg.cn/direct/b73b80bae88f47a3963d51f11d871838.png)