我到处都找过了,但什么也没找到。
首先,我想说我从未使用过 Mat Lab,所以我不知道我在做什么。
我尝试了一些方法,但没有任何效果。显然 y(0)=2 试图创建一个包含 0 个值为 2 的单位的列表?
无论如何,有人可以帮助我吗?
我需要在 Mat Lab 中编写一个灵活的欧拉方法方程来求解这样的几个方程。
1) y' = 5-3sqrt(y) ; y(0)=2
其中 h= .1 , .05 , .025, .01 && t =.5 ,1 , 1.5 , 2 , 2.5 ,3
我不知道我在做什么。
让我们假设以恒定的时间步长实现该方法,例如dt>0
。
如果我们想将方程积分到某个时间T>0
,我们考虑时间离散化
tt = 0:dt:T;
为了速度目的,我们最好预先分配我们的解向量,即
yy=zeros(1,length(tt));
yy
将包含我们将产生的解决方案的第一个按时间顺序的近似值(即,很少滥用符号,
yy(1)==y_r(t=0)
and
yy(end)==y_r(t=T) + global error,
其中函数y_r=y_r(t)
是我们真正的解决方案)。
假设我们有一个正规形式的一阶 ODE,即
dy_r / dt = f(y_r;t)
和一个初始数据
y_r(t=0)=y_0
(即我们有一个柯西问题)。因此,我们应该首先初始化我们的解向量
yy(1) = y_0;
然后,我们可以找到未来时代的解决方案,即
N = length(tt);
for t = 2 : N // we should look at future times, thus we start from 2
// NOTE: this is first order explicit Euler scheme.
yy(t) = yy(t-1) + dt*f(yy(t-1),t);
end
我们完成了。我们现在可以绘制解决方案。
plot(tt,yy);
现在的重点是:你是使满意 with 一阶时间精度?
想想如果你使用这个方案来解决例如哈密顿量问题(例如简谐振子),它会给你的系统提供人工激励(正确地,你可以看到偏离正确的哈密顿轨道的漂移)。简而言之,过了一会儿你的解决方案是完全人造的.
事实上,当您解决实际问题时,您必须仔细考虑您的问题和物理原理,然后选择合适的数值方案来求解方程。很快,您可能会被要求实施更准确的方案,例如龙格·库塔(你可以更好地信任它,但只是一点点,至少以其原始形式)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)