资源描述:
《实验8非线性方程和常微分方程new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验8非线性方程和常微分方程的解法一、实验目的学会用MATLAB软件求解非线性方程和常微分方程。二、实验内容与要求1.非线性方程的整值解(1)最小二乘法格式:fsolve(’fun’,)%求方程fun=0在估计值x附近的近似解。[例1.72]求方程的解。>>fc=inline(‘x-exp(-x)’);>>xl=fsolve(fc,0)xl=0.5671问题1.28:求解方程,观察知有多解,如何求之?先用命令fplot(’5*x^2*sin(x)-exp(-x),0]’,[0,10])作图1.13,注意5*x^2*sin(x)-exp
2、(-x),0]中的“[…,0]”是作y=0直线,即x轴。方程在[0,10]区间从图中可看出有4个解,分别在0,3,6,9附近,所以用命令:>>fun=inline(’5*x^2*sin(x)-exp(-x)’);>>fsolve(fun,[0,3,6,9],le-6)得出结果:ans=0.59183.14076.28329.4248【例1.73】求解方程组x-0.7sinx-0.2cosy=0先编制函数文件fu.m:functiony=fu(x)y(1)=x(1)-0.7*sin(x(1))-0.2*cos(x(2));y(2)=x(
3、1)-0.7*cos(x(1))+0.2*sin(x(2));y=[y(1),y(2)];在命令窗口调用fu运算:>>x1=fsolve(‘fu’,[0.5,0.5])x1=0.52650.5079(2)零点法格式:%求函数在附近的零点。说明:估计值若为标量时,则在附近查找零点,=[]向量时,则首先要求函数值,然后将严格在[]区间内零点,若找不到,系统将给出提示。【例1.74】求函数的零点。>>fn=inline('sin(x^2)/x+x*exp(x)-4');>>x=fzero(fn,[1,2])%这里的fn不要加单引号x=1.0
4、748注意:方程解的估计值可用fplot作图看出;用function建立函数文件fn,求解调用时fn两边要加单引号,而用inline时fn两边不要加单引号;这两种方法也可解线性方程组。⒉代数方程的符号解格式:%求解方程,输入参量可是符号表达式或字符表达式。%对中指定的变量求解方程。%求解方程组。%对方程组中指定的n个变量加求解【例1.75】>>solve('a*x^2+b*x+c')>>solve('a*x^2+b*x+c','b')>>[x,y]=solve('x+y=1','x-11*y=5')>>[a,u,v]=solve('a
5、*u^2+v^2','u-v=1','a^2-5*a+6')计算结果为:ans=[1/2/a*(-b+(b^2-4*a*c)^(1/2))][1/2/a*(-b-(b^2-4*a*c)^(1/2))]ans=-(a*x^2+c)/xx=4/3y=-1/3a=[2][2][3][3]u=[1/3+1/3*i*2^(1/2)][1/3-1/3*i*2^(1/2)][1/4+1/4*i*3^(1/2)][1/4-1/4*i*3^(1/2)]v=[-2/3+1/3*i*2^(1/2)][-2/3-1/3*i*2^(1/2)][-3/4+1/4
6、*i*3^(1/2)][-3/4-1/4*i*3^(1/2)]注意:对于单个的方程或方程组,若不存在符号解,则返回方程(组)的数值解。问题1.29:用符号法求解问题1.28中的方程,结果不对,所以要验根,多用几种方法相互验证,用符号法解方程,解的表达式不易懂,怎么办?x=solve('3*x^2-exp(x)')x=[-2*lambertw(-1/6*3^(1/2))][-2*lambertw(-1,-1/6*3^(1/2))][-2*lambertw(1/6*3^(1/2))]再用命令:>>vpa(x,3)ans=[.912][3.
7、72][-.460]3.常微分方程数值解法格式:%区间上,用初始条件求解显示微分方程说明:solver为命令ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb,之一。odefun为显示常微分方程。tspan积分区间(即求解区间)的向量。要获得问题在其他指的时间点上的解,则令(要求是单调的)。包含初始条件的向量。求解具体ODE的基本过程如下所示。根据问题所属学科中的规律、定律、公式,用微分方程与初始条件进行描述。F(y,y’,y’’,…,y(n),t)=0y(0)=y0,y’(0)=y1,…,
8、y(n-1)(0)=yn-1而y=[y;y(1);y(2);…;y(m-1)],n与m可以不等。运用数学中的变量替换:yn=y(n-1),yn-1=y(n-2),…,y2=y’,y1=y,把高阶(大于2阶)的方程(组)写