资源描述:
《求解非线性方程根的Matlab函数》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、求解非线性方程根的Matlab函数Matlab软件提供了多种求解非线性方程(组)的根的方法,下面分别来介绍:Solve函数Fzero函数Fsolve函数Solve函数可以得到方程根的解析或数值解,其命令格式为Solve(‘eqn1’,‘eqn2’,…,‘eqnN’)Solve(‘eqn1’,‘eqn2’,…,‘eqnN’,‘var1,var2,…,varN’)‘eqn1’,‘eqn2’,…,‘eqnN’是方程的表达式;‘var1,var2,…,varN’是相应的变量.1.Solve函数1.1求出方程根的解析表达式例1:分别求一元二次方程ax2+bx+c=0和三角方程psin(x)=r的根.解
2、:输入x=solve(‘a*x^2+b*x+c’)得到X=[1/2/a*(-b+(b^2-4*a*c)^(1/2)]X=[1/2/a*(-b-(b^2-4*a*c)^(1/2)]再输入x=solve(‘p*sin(x)=r’)得到x=asin(r/p)即x=arcsin(r/p).1.2求出方程根的数值解上述过程得到的方程的解析解,在得不到解析解的情况下,有时solve()函数可以得到方程的数值解.例2:求超越方程e-x=sin(πx/2)的根.解:输入x_star=solve(‘exp(-x)=sin(3.1416*x/2)’,’x’)得到x_star=0.4435728573490921
3、3055096933568404例3:求解非线性方程组x2+xy+y=3X2-4x+3=0解:输入[x,y]=solve(‘x^2+x*y+y=3’,’x^2-4*x+3=0)得到X=[1][3]Y=[1][-3/2]1.3求出多项式方程的全部根Solve()函数的另一种功能是求多项式的全部根.例4:求多项式x3-6x2+11x-6=0的根.解:输入solve(‘x^3-6*x2+11*x-6’)得到ans=[1][2][3]另外,在Matlab中,roots()函数也可以求出多项式全部根,其命令格式为roots(a)其中,a=(a0,a1,…,an)T是一个向量表达多项式p(x)=a0xn
4、+a1xn-1+…+an-1x+an例5:用roots()函数求例4的全部根。解:输入roots([1-611-6])得到ans=3.00002.00001.00001.4有些方程无法用solve()函数求出根由于solve()函数是以解析解为主,因此并不是所有的方程都能得到解(解析解或数值解)。例如:S=solve(‘x^2*y^2-2*x-1=0’,x^2-y^2-1=0’)得到S=x:[8x1sym]y:[8x1sym]这样就需要调用相应的数值解函数,如:fzero,fsolve2.Fzero函数2.1fzero()函数fzero()函数是求一维变量的零点,其计算格式为:x=fzero
5、(fun,x0)x=fzero(fun,x0,options)[x,fval]=fzero(…)其中,x为方程的零点,fval为计算终止时的函数值,fun为方程的函数,x0为初始点,options为选择项,它包括Display和TolX。