数学建模(生物数学篇)之 MATLAB在常微分方程求解中的基本应用实例(1/3)

一、实验目的:

理解并掌握利用MATLAB绘制常微分方程的积分曲线簇和特解的图形。

二、实验内容

1  求方程的通解和满足初始条件的特解并绘制图形。

2  求方程的通解及其满足初始条件的特解,这里为常数。

3  求三阶非齐次线性方程组的通解和满足初始条件的特解并绘制特解的图形与积分曲线簇。

练习:

1求解方程,并自行选择适当初值,绘制出积分曲线簇。

2求解方程,并自行选择适当初值,绘制出积分曲线簇。

3求方程的通解和特解,并自行选择适当初值进行绘图。

程序代码:

1

sols=dsolve('Dy=exp(x)*cos(y)^2','x')

syms C x

y=atan(C+exp(x));

for i=-5:3

       ezplot(subs(y,'C',i),[-3,4,-0.5,1.6],1)

       hold on

end

y=dsolve('Dy=exp(x)*cos(y)^2,y(0)=pi/3','x')

figure;ezplot(y)

2

syms m x k x t x0 t0

eqn='m*D2x+k*x=0';

gensol=dsolve(eqn,'t')

sol=dsolve(eqn,'x(t0)=x0','Dx(t0)=v0')

3

eqn='D3x+2*D2x+2*Dx=cos(5*t)+sin(4*t)'

sols=simplify(dsolve(eqn,'t'))

syms C1 C2 C3 t

y=(7*cos(4*t))/520 - C1 - (2*cos(5*t))/629 - sin(4*t)/130 - (23*sin(5*t))/3145 + C2*exp(-t)*cos(t) + C3*exp(-t)*sin(t) + 1/8

C=sym([C1,C2,C3]);

C0=sym([0.3,0.4,0.2,0.5;0,0.3,-1.5,-0.8;1,0.8,0.5,-0.3])

 for i=1:4

 ezplot(subs(y,C,[C0(1,i),C0(2,i),C0(3,i)]),[0,15,-1,0.5],1);

 hold on;

 end

sol0=dsolve(eqn,'x(0)=0,Dx(0)=0,D2x(0)=0','t');

ezplot(sol0,[0,15,0,0.15],2);

ezplot(sol0,diff(sol0,'t'),[0,15],3);

练习1

sols=dsolve('Dy=-y/x+sin(x)/x','x')

syms C x

y=C/x - cos(x)/x;

for i=-5:3

       ezplot(subs(y,'C',i),[-8,8,-8,8],10)

       hold on

   end

y=dsolve('Dy=-y/x+sin(x)/x,y(1)=pi/3','x')

figure;ezplot(y)

练习2.

eqn='Dy=-(2*x*y-sec(x)^2)/(x^2+2*y)';

sols=dsolve(eqn,'x')

syms C x

y=(C + x^4/4 + 2i/(exp(x*2i) + 1))^(1/2) - x^2/2- (C + x^4/4 + 2i/(exp(x*2i) + 1))^(1/2) - x^2/2

for i=-5:3

       ezplot(subs(y,'C',i),[-3,4,-3,2],1)

       hold on

   end

y=dsolve(eqn,'y(1)=pi/3','x')

figure;ezplot(y)

练习3.

eqn='Dy=-3*x*y+x*exp(-x^2)'

sols=dsolve(eqn,'x')

syms C x

y= C*exp(-(3*x^2)/2) + exp(x^2/2)*exp(-(3*x^2)/2)

for i=-5:3

       ezplot(subs(y,'C',i),[-8,8,-8,8],88)

       hold on

   end

y=dsolve(eqn,'y(0)=2','x')

figure;ezplot(y)

程序测试及运行结果:

1


2


例3


练习1.



练习2.


练习3.

y =

y =

分析与讨论:

  1. 在 MATLAB 中,规定用 D 表示一阶求导,而用 D2,D3 等表示求二阶、三阶导数,以此类推。而在常微分方程求解中,指令ezplot 用来绘制微分方程解的图形,基本调用格式为 ezplot(sol,[xmin,xmax,ymin,ymax],fig) 表示绘制解 sol 在[xmin,xmax,ymin,ymax]指定的范围内的图形,fig 表示图形窗口 的编号。
  2. 为了在一个图形窗口绘制积分曲线簇,需要给通解中的任意常数 C1 几个不 同的值而得到特解,采用的是 for 循环结构。格式为

for i=m:k:n

循环体语句

end

        其中 i 表示循环变量,m,n 分别为循环初值和循环终值,k 表示步长,缺省时默 认值为 1.当初值大于终值时,步长为负数。每执行完循环体语句集的指令一遍, 循环变量增加一个步长,继续循环,直到超过终值为止。循环结束必须用 end 表示。

  1. 为了将几个不同的绘图语句绘制的图形同一个图形窗口显示,采用图形保持 语句 hold on,否则,后绘制的图形会覆盖前面所绘制图形,而只有后绘制的图 形显示出来。要取消图形保持,可以用 hold off 语句。figure 是打开新的绘图窗 口指令,逐次打开的绘图窗口会自动按先后标号。
  2. subs(expr,old,new)的使用方法:对表达式 expr 将旧变量 old 用新值或新的表 达式、变量 new 代换。

猜你喜欢

转载自blog.csdn.net/qq_59819866/article/details/131453145