MATLAB入门(10)MATLAB的数值分析 非线性方程式的实根

豆豆网   技术应用频道   2007年12月24日    社区交流

关键字: MATLAB入门 MATLAB

本文详细介绍MATLAB入门(10)MATLAB的数值分析 非线性方程式的实根

  MATLAB入门(10)MATLAB的数值分析 非线性方程式的实根。

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

  先定义方程式。要注意必须将方程式安排成 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,因此无须定义它,选择 x=3 附近求根 
  r=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

  例三、方程式为y=x.^3-2*x-5 

  这个方程式其实是个多项式,我们说明除了用 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附近有二个根

MATLAB入门(10)MATLAB的数值分析 非线性方程式的实根

  >> 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 

来源:豆豆网转载    责编:豆豆技术应用

正在加载评论...