编写MATLAB函数,用欧拉法求解微分方程

编写MATLAB函数,用欧拉法求解微分方程

问题描述:

img

欧拉法是求解常微分方程组的最简单算法,自行查阅资料学习欧拉
法,编写MATLAB函数,其功能是用欧拉法求解如下形式的一阶常
微分方程:
                                    dy
                                         =f(y,t)
                                     dt
                                      y(0)=yo
并调用这个函数求下面方程的解,将解以图像形式呈现
                                         =y²+t
                                     dt
                                      y(0)=1
偶数学号提交

你好,代码供参考:

function eulerMain %主函数

odefun = @(t,y) [y^2+t];% 构建微分方程
y0 = [1]; % 设置初值y(0)=1
tspan = [0, 0.8];% 微分方程求解时间跨度
[t,y] = euler(odefun, tspan, y0);%利用欧拉法求odefun
plot(t,y)%画图
xlabel('t')
ylabel('y')
end
function [t, y] = euler(odefun, tspan, y0)
% odefun ode函数
% tspan: 求解时间范围
% x0:初值
t = tspan(:);
if(numel(tspan)==2)
    t = linspace(tspan(1), tspan(2), 1001)';
end
dy0 = odefun(t(1), y0);
y = zeros(numel(t), numel(dy0));
y(1,:) = y0(:);
for i = 2:1:numel(t)
    y(i,:) = y(i-1,:) + odefun(t(i-1),y(i-1,:))'*(t(i)-t(i-1));%向前欧拉积分
end
end

欧拉法效果

img

有帮助望采纳哟谢谢啦