用matlab如何求解常微分方程

提问:这两道题用matlab怎么做呀?
求解常微分方程的准确解

img

求解常微分方程的数值解

img

第一个

% 定义常微分方程
ode = @(t,x) [x(2); -9*x(1)+6e3];

% 定义初始条件
t0 = 0;
x0 = [0; 0];

% 求解常微分方程
[t, x] = ode45(ode, [t0, 10], x0);

% 绘制解的图像
plot(t, x(:,1), '-o')
xlabel('t')
ylabel('x(t)')
title('Solution of x"(t) + 9x(t) = 6e3, x''(0) = x(0) = 0')

第二题:

% 定义常微分方程
ode = @(x,y) x^2 +100*y^2;

% 定义初始条件
x0 = 0;
y0 = 0;

% 求解常微分方程
[x, y] = ode45(ode, [x0, 5], y0);

% 绘制解的图像
plot(x, y, '-o')
xlabel('x')
ylabel('y(x)')
title('Solution of y = x^2 + 100*y^2, y(0) = 0')

【参考代码】

%% 常微分方程1求解 syms x y(x) eq1 = diff(y,x) == x^2 + y; ySol1 = dsolve(eq1, y(0)==1); ySol1 % 输出准确解

% 数值解 y0 = 1; % 初始条件 xspan = [0, 10]; % 自变量的取值范围 [x,y] = ode45(@(x,y) x^2 + y, xspan, y0); plot(x,y) % 绘制数值解

%% 常微分方程2求解 syms x y(x) eq2 = diff(y,x) == -2xy; ySol2 = dsolve(eq2, y(0)==2); ySol2 % 输出准确解

% 数值解 y0 = 2; % 初始条件 [x,y] = ode45(@(x,y) -2xy, xspan, y0); plot(x,y) % 绘制数值解