日期: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)))