文档详情

代数方程和微分方程求解.ppt

发布:2017-12-07约6.62千字共45页下载文档
文本预览下载声明
第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 求解线性方程组 参考程序 syms x y z a [u,v,w]=solve(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: [1x1 sym] y: [1x1 sym] z: [1x1 sym] 其中,s是结构形数据。可以用下面的方法显示求得的解 s.x ans = (a - 4)/(a^2 + a - 2) 方程组的符号求解得到的是解析式。其优点是可以得到含未知参数的解,有利于进一步的分析。缺点是计算效率低,且复杂的问题一般得不到解析解。 常微分方程组的符号求解 常微分方程(组)的符号运算函数为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*Dy+2*y=0,... y(0)=1,Dy(0)=2) y = exp(t)*cos(t) + exp(t)*sin(t) 代数方程的数值方法 多项式 在matlab语言中,多项式利用行向量表示。如向量 u=[1 2 0 -5 4] 用作多项式函数时,与多项式 对应。因此,多项式运算对应向量的相关运算,如多项式的加法对应向量的加法等。 多项式求根 多项式运算的几个常用函数: P=conv(p1,p2); %多项式乘法 [d,r]=deconv(p1,p2); %多项式除法 Dp=polyder(p); %多项式的导数 Ip=polyint(p) %多项式的积分(原函数) Y=polyval(p,x) %输出多项式p在向量x的值 多项式求根的函数为 r=roots(p) 求得多项式p的所有根。 例4.3:求多项式 的根并在多项式图形中表示。 参考程序:   q =[1 -20 138 -328 -223 1692 -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=sparse(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); tic x=A\b; toc A1=sparse(A); tic x=A1\b; toc 输出结果: Elapsed time is 0.144504 seconds. Elapsed time is 0.009240 seconds.
显示全部
相似文档