Matlab 版 (精华区)

发信人: bage (最近比较烦), 信区: Matlab
标  题: Matlab详细教程(六十一)
发信站: 哈工大紫丁香 (Sun Feb  4 13:16:20 2001), 转信

发信人: finance (淼水), 信区: MathTools
发信站: BBS 水木清华站 (Sun Apr  4 08:28:13 1999) WWW-POST

8.2 非线性方程式的实根 

------------------------------------------------------------------------------
--

如果求根的方程式不为多项式的形态 就不能用 roots 函数。而这类的方策’h半是非线
性方程式, 其函数形态变化很大。对于解这类方程式的根,可以用 fzero函数,它其实
是用来找一函数 f(x) 的 x 值代入时,会使该函数值为零 (f(x)=0);而这也就是根的特
性,因此我们可以用 fzero求根。 


要求任一方程式的根有三步骤: 

先定义方程式。要注意必须将方程式安排成 f(x)=0 的形态,例如一方程式为sin(x)=3,
 则该方程式应表示为 f(x)=sin(x)-3。可以 m-file 定义方程式。 
代入适当范围的 x, y(x) 值,将该函数的分布图画出,藉以了解该方程式的「长相」。 

由图中决定y(x)在何处附近(x0)与 x 轴相交,以fzero的语法fzero('function',x0) 即
可求出在 x0附近的根,其中 function 是先前已定义的函数名称。如果从函数分布图看
出根不只一个,则须再代入另一个在根附近的 x0,再求出下一个根。 
以下分别介绍几数个方程式,来说明如何求解它们的根。


例一、方程式为 

sin(x)=0 

我们知道上式的根有 ,求根方式如下: 

>> r=fzero('sin',3) % 因为sin(x)是内建函数,其名称为sin,因此无须定义它 

r = % 选择 x=3 附近求根 

3.1416 

>> r=fzero('sin',6) % 选择 x=6 附近求根 

r = 

6.2832


例二、方程式为先前提到的 MATLAB 内建函数 humps,我们不须要知道这个方程式的形态
为何,不过我们可以将它划出来,再找出根的位置。求根方式如下: 

>> x=linspace(-2,3); 

>> y=humps(x); 

>> plot(x,y), grid % 由图中可看出在0和1附近有二个根 

>> r=fzero('humps',1.2) 

r = 

1.2995


例三、方程式为 

 

这个方程式其实是个多项式,我们说明除了用 roots 函数找出它的根外,也可以用这节
介绍的方法求根,注意二者的解法及结果有所不同。求根方式如下: 

% m-function, f_1.m 

function y=f_1(x) % 定义 f_1.m 函数 

y=x.^3-2*x-5;


>> x=linspace(-2,3); 

>> y=f_1(x); 

>> plot(x,y), grid % 由图中可看出在2和-1附近有二个根 

>> r=fzero('f_1',2); % 决定在2附近的根 

r = 

2.0946 

>> p=[1 0 -2 -5] 

>> r=roots(p) % 以求解多项式根方式验证 

r = 

2.0946 

-1.0473 + 1.1359i 

-1.0473 - 1.1359i 


例四、方程式为 

 

求根方式如下: 

% m-function, f_2.m 

function y=f_2(x) % 定义 f_2.m 函数 

y=x.^2.*sin(x)+cos(x); 


>> x=linspace(-3,3); 

>> y=f_2(x); 

>> plot(x,y), grid % 由图中可看出在-1和3附近有二个根 

>> r=fzero('f_2',-1); % 决定在-1附近的根 

r = 

-0.8952 

>> r=fzero('f_2',3); % 决定在3附近的根 

r = 

3.0333


例五、方程式为 

 

求根方式如下: 

% m-function, f_3.m 

function y=f_3(x) % 定义 f_3.m 函数 

y=2*exp(-x).*sin(2*pi*x)-0.5; 


>> x=0:0.1:2; y=f_3(x); 

>> plot(x,y), grid % 由图中可看出在0,0.5和1附近有三个根 

>> r=fzero('f_3',0) % 决定在0附近的根 

r = 

0.0420 

>> r=fzero('f_3',0.5) % 决定在0.5附近的根 

r = 

0.4368 

>> r=fzero('f_3',1) % 决定在1附近的根 

r = 

1.1435 


------------------------------------------------------------------------------
--

   
上一页 下一页 讲义大纲 

--
行至水穷处,坐看云起时
***********************
菩提本无树,明镜亦非台
本来无一物,何处染尘埃

--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: bage.bbs@smth.org]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:7.141毫秒