欧拉的方法

27意见(过去30天)
保罗杰克逊
保罗杰克逊 在2021年9月23日15:21
评论: 保罗 2021年9月24日0:26
我被发现了一个半成品的代码,并要求实施欧拉的方法来解决它。
我看过无数的实施例子,但我认为完成的块混淆了我
我已经访问了函数myode(t,y),应该给我一个基于t和y的特定解决方案
这是我给出的代码。
dt = .1;
t_values = [0:dt:500];
numsteps = length(t_values);
y_initial = [50; 1];
y_values = zeros(2,numsteps);
y_values(:,1)= y_initial;
为了i1 = 2: numsteps;
Y_Values(:,i1)=
我想要帮助的问题是了解如何利用预先写的代码,我当前的尝试是
Y_Values(:,i1)= y_values(i1)+ dt * myode(t_values(i1),y_values(i1))
任何帮助是极大的赞赏。我尝试立即重写代码,然后我没有取得任何进展。
此致

接受答案

杰夫海耶斯
杰夫海耶斯 在2021年9月23日15:49
保罗(亚当?) - 我认为你缺少的所有这些都在你的任务中
Y_Values(:,i1)= y_values(i1)+ dt * myode(t_values(i1),y_values(i1))
记住这一点 y_values. 是2D array ..所以您需要访问每列的两行。这些作业是这样做的
Y_Values(:,i1)=
所以你需要做同样的事情(否则你会得到分配错误,也可能是错误 Myode 由于它可能需要2x1数组作为此功能的第二个输入。
其次,算法的每个步骤都使用先前迭代的结果。目前,您的代码正在使用 I1 在任务的两侧。由于最小值 I1 是2,那么你可以访问以前的值 I1-1 。尝试以下内容
y_values(:,i1)= y_values(:,i1-1)+ dt * myode(t_values(i1-1),y_values(i1-1));
1条评论
保罗
保罗 2021年9月24日0:26
应该:
y_values(:,i1)= y_values(:,i1-1)+ dt * myode(t_values(i1-1),y_values(:,i1-1));

登录评论。

更多答案(0)

标签

下载188bet金宝搏


释放

R2021A

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!

被某某人翻译