- 1、本文档共45页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
代数方程和微分方程求解
第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.
文档评论(0)