显式欧拉格式——matlab实现

日期:2020-3-16

显式欧拉格式

格式为:
在这里插入图片描述
我运用显式欧拉格式计算三道例题,然后展现其效果,最后将我的代码展示出来
1.在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
呈现出这样的曲线的原因是该函数由一开始的极其陡峭变为后来的非常平稳,其中斜率的变化率非常之大。
而欧拉格式走的是直线,在一个步长内斜率是不发生变化的,也就是当这个折线走完一个步长,与真实的曲线之间在数值上已经有很大的差别了。后面随着曲线的陡峭程度变小,折线与曲线在树枝上的差距也趋于缓和。

代码如下:

clear; close all
%%2.2
%% function and parament
% we are going to cacular the funtion y(3) from y(2)
f = @(t)(exp(-10*t));
df = @(t,y)(-10*y);
startP = 0;
endP = 2;
omiga0 = 1;
h = 0.1;
%% show Euler format
%显式欧拉方法
omiga = zeros(1,20);
omiga(1) = omiga0 + h*df(startP,omiga0);
for i = 2:20
    omiga(i) = omiga(i-1) + h*df(startP+h*(i-1),omiga(i-1));
end
%% show Euler error figure
figure('name','例2.3');
axis on
X = 0:0.01:2;
plot(X,f(X))
hold on
X1 = 0:0.1:2;
plot(X1,[omiga0,omiga])
axis equal;
legend({'原函数','欧拉格式'},'Location','northwest')
figure('name','显式欧拉格式下例2.3的误差')
title('显式欧拉格式下例2.3的误差')
plot(X1,([omiga0,omiga]-f(X1)))
  • 8
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值