用matlab编程常微分方程数值解法:显式 Euler法、 求解如下常微分方程初值问题:dudt = −4u + 6v u0 = 1dvdt = 3u − 7v v0 = 20 ≤ t ≤ 1
% 显式Euler法数值解常微分方程初值问题 clear;clc;
% 定义常微分方程和初值 f = @(t, u, v) -4u + 6v; g = @(t, u, v) 3u - 7v; u0 = 1; v0 = 2;
% 定义参数 t0 = 0; tn = 1; h = 0.01;
% 计算步数 n = (tn-t0)/h;
% 初始化u和v u(1) = u0; v(1) = v0;
% 循环求解 for i = 1:n t(i) = t0 + (i-1)h; u(i+1) = u(i) + hf(t(i), u(i), v(i)); v(i+1) = v(i) + h*g(t(i), u(i), v(i)); end
% 绘图 plot(t, u(1:end-1), 'r', t, v(1:end-1), 'b'); xlabel('t'); ylabel('u(t), v(t)'); legend('u(t)', 'v(t)');
原文地址: https://www.cveoy.top/t/topic/houA 著作权归作者所有。请勿转载和采集!