资源描述:
《代数方程和微分方程求解.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章:代数方程和微分方程求解代数方程组的符号解代数方程组的符号求解函数为solve函数,函数调用格式为x=solve(fun1,fun2,…,funm,var1,…,varm)其中fun1,fun2,…为符号表达式。var1,var2,….为符号变量,指明所求解的变量。如果不指明所求解的变量,则系统根据变量在英文字母中与x的接近程度选择。solve函数还有另一种调用形式x=solve(eq1,eq2,…,eqm,var1,…,varm);其中eq是字符串,定义方程。var也是字符串,指明所求解的变量。例4.1求解线性方程组参考程序symsxyza[u,v,w]=so
2、lve(a*x+y+z-1,x+a*y+z-...2,x+y+a*z-3,x,y,z)输出结果:u=(a-4)/(a^2+a-2)v=2/(a+2)w=(3*a)/(a^2+a-2)也可以利用下面的语句求解>>s=solve('a*x+y+z-1','x+a*y+z-2','x+y+a*z-3','x','y','z')s=x:[1x1sym]y:[1x1sym]z:[1x1sym]其中,s是结构形数据。可以用下面的方法显示求得的解>>s.xans=(a-4)/(a^2+a-2)方程组的符号求解得到的是解析式。其优点是可以得到含未知参数的解,有利于进一步的分析。缺点是
3、计算效率低,且复杂的问题一般得不到解析解。常微分方程组的符号求解常微分方程(组)的符号运算函数为dsolve,调用格式为变量=dsolve(eq1,eq2,…);其中equ1,equ2等是字符串,描述微分方程。方程形式与solve语句中类似,其中的导数项利用D表示,Dy,D2y分别描述y的一阶和二阶导数。初值和边值条件也利用方程描述。例4.2:求微分方程的通解和在初始条件y(0)=1,y’(0)=2下的特解>>y=dsolve('D2y-2*Dy+2*y=0')y=C24*exp(t)*cos(t)+C25*exp(t)*sin(t)>>y=dsolve('D2y-2
4、*Dy+2*y=0',...'y(0)=1','Dy(0)=2')y=exp(t)*cos(t)+exp(t)*sin(t)代数方程的数值方法多项式在matlab语言中,多项式利用行向量表示。如向量u=[120-54]用作多项式函数时,与多项式对应。因此,多项式运算对应向量的相关运算,如多项式的加法对应向量的加法等。多项式求根多项式运算的几个常用函数:P=conv(p1,p2);%多项式乘法[d,r]=deconv(p1,p2);%多项式除法Dp=polyder(p);%多项式的导数Ip=polyint(p)%多项式的积分(原函数)Y=polyval(p,x)%输出多
5、项式p在向量x的值多项式求根的函数为r=roots(p)求得多项式p的所有根。例4.3:求多项式的根并在多项式图形中表示。参考程序:q=[1-20138-328-2231692-1260];r=roots(q);x=-2.2:0.05:8;y=polyval(q,x);y1=polyval(q,r);plot(x,y,r,y1,'p')xlim([-2.2,8])legend('polynomial','roots')线性方程组的求解线性方程组Ax=b可以利用矩阵除法直接得到。但当系数矩阵为稀疏矩阵时,利用稀疏矩阵函数可以得到更高的计算效率。稀疏矩阵利用函数A1=sp
6、arse(A);定义。例4.4:求解n阶线性方程组对n=1000,分别利用正常方法和稀疏矩阵求解,并比较计算时间。参考程序:n=1000;A=diag(2*ones(1,n))+diag(ones(1,n-1),1)+diag(ones(1,n-1),-1);A(n,1)=1;b=ones(n,1);ticx=Ab;tocA1=sparse(A);ticx=A1b;toc输出结果:Elapsedtimeis0.144504seconds.Elapsedtimeis0.009240seconds.求解非线性方程f(x)=0一般利用以下形式的迭代方法:xk+1=(x
7、k)k=1,2,…如著名的Newton迭代法就是众多迭代方法中的一种。非线性方程求根迭代是一种逐步近似的过程,在迭代求根中,需要给定初始近似来启动迭代过程。初始近似的选取非常重要,这是因为许多方法只有当接近所求的解时,迭代才收敛。当方程有多个解时,需要充分靠近所求的解,才能保证迭代收敛到这个解。Matlab中非线性方程求根的函数是fzero,调用格式为p=fzero(fun,x0);其中x0是初始值。fun可以是字符串以指示函数名,也可以是以@开头的函数句柄如‘sin’,@sin,@(x)sin(x)都可以,应用最灵活的是后一种。例4.5:求方程si