matlab编程求解微分方程

如题所述

1.

function test()
[t, y] = ode45(@func, [0, 10], [0.2; 0.8], [], 3, 2);

figure(1); clf;
plot(t, y);
legend('i', 's');
grid on;

function f = func(t, y, lamda, mu)
f = zeros(2, 1);
f(1) = y(1) * (lamda * y(2) - mu);
f(2) = -lamda * y(1) * y(2);

2.

精确解是: x = t*(e^t-1), y = 1+e^t*(t-1)

function test()
[t,y] = ode45(@func,[0, 6], [0, 0, 0, 0].');
figure(1); clf;
plot(t, y);
grid on;
legend('x', 'xp', 'y','yp');

function f = func(t, y)
f = zeros(4, 1);
f(1) = y(2);
f(2) = 2*y(4)-y(1)+2*y(2)-2*y(3)-t+4-2*exp(t);
f(3) = y(4);
f(4) = 2*y(4)-y(1)+y(2)-y(3)-t+2-exp(t);

追问

你确定求解的式子是一样的?

追答

哪里有问题?你看不懂答案?

温馨提示:答案为网友推荐,仅供参考
相似回答