Matlab编程与求微分方程的解
返老还童经典台词-幼师资格证报考条件
1.
求微分方程
(x
2
1)y'2xysinx0
的通解
symsxy
y=dsolve('(x^2-1)*Dy+2*x*y-sin(x)=0','x')
y=(-cos(x)+C1)(x^2-1)
2.
求微分方程
y''2y'5ye
x
sinx
的通解.
symsxy
y=dsolve('D2y-2*Dy+5*y=exp(x)*sin(x)','x')
y =exp(x)*sin(2*x)*C2+exp(x)*cos(2*x)*C1+13*ex
p(x)*sin(x)
3. 求微分方程组
dx
xy0
dt
dy
xy0
dt
在初始条件
x|<
br>t0
1,y|
t0
0
下的特解,并画出解函数
yf
(x)
的图形.
symsxyt
[x,y]=dsolve('Dx+x
+y=0','Dy+x-y=0','x(0)=1','y(0)=0')
ezplot(x,y,[0,1.3]);axis auto
x =(12-1
4*2^(12))*exp(2^(12)*t)+(12+14*2^(12))*exp(-2^(12)
*t)
y=-(12-14*2^(12))*2^(12)*exp(2^(12)*t)+(12
+14*2^(12))*2^(12)*exp(-2^(12)*t)-(12-1
4*2^(12
))*exp(2^(12)*t)-(12+14*2^(12))*exp(-2^(12)*t)
4.分别用 ode23、ode45 求上述第 3 题中的微分方程初值问题的数值解(
近似解),
求解区间为
t[0,2]
.利用画图来比较两种求解器之间的差异.
function lulu4
%RIGIDODE Euler
equations of a rigid body without external
forces
tspan = [0 2];
y0 = [1; 0];
% Solve the problem
using ode45
ode45(@f,tspan,y0);
%
--------------------------------------------------
----------
functiondydt = f(t,y)
dydt = [ -y(1)-y(2)
-y(1)+y(2) ];
fun=inline('-x-y','x','y');
[x,y]=ode23(fun,[0,2],'-x+y');
5.
用 Euler 折线法求解微分方程初值问题
12x
2
y'
y
3
,
y
y(0)1
f=sym('y-12*x^2y^3');
a=0;
b=1;
h=0.1;
n=(b-a)h+1;
x=0;
y=1;
szj=[x,y];
for i=1:n-1
y=y+h*subs(f,{'x','y'},{x,y});
x=x+h;
sjz=[szj;x,y];
end
szj
plot(szj(:,0),szj(:,2))
的数值解(步长h取0.1),求解范围为区间[0,2].
6. 用四阶Runge-
Kutta法求解微分方程初值问题
y'ye
x
cosx,
y(0)1
的数值解(步长h取0.1),求解范围为区间[0,3]
.
四阶Runge-Kutta法的迭代公式为(Euler 折线法实为一阶Runge-
Kutta法):
y
0
y(x
0
),
x
k1
x
k
h,
h
y
k1
y
k
(L
1
2L
2
2L
3
L
4
)
6
k0
,1,2,
,n1
L
1
f(x
k
,y
k
)
hh
L
2
f(x
k
,y
k
L
1
)
22
h
h
L
3
f(x
k
,y
k
L
2
)
22
L
4
f(x
k
h,y
k
hL
3
)
f=sym('y-exp(x)
*cos(x)');
a=0;
b=1;
h=0.1;
n=(b-a)h+1;
x=0;
y=1;
szj=[x,y];
for
i=1:n-1
l1=subs(f,{'x','y'},{x,y});
l2=subs(f,{'x','y'},{x+h2,y+l1*h2});
l3=subs(f,{'x','y'},{x+h2,y+l2*h2});
l4=subs(f,{'x','y'},{x+h,y+l3*h});
y=y+h*(l1+2*l2+2*l3+l4)6;
x=x+h;
szj=[szj;x,y];
end
szj
plot(szj(:,1),szj(:,2))