提问:这两道题用matlab怎么做呀?
求解常微分方程的准确解
求解常微分方程的数值解
第一个
% 定义常微分方程
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) % 绘制数值解