线性方程组的欧拉法

4次浏览(最近30天)
奥斯卡·Mevik拍
奥斯卡·Mevik拍 2019年11月27日
编辑: 1月 2019年11月28日
函数posi =位置(m)
m = 10;%的车数
N = 400;%步骤
h = 0, 1;% Stepsize
v_1 = 25;% 1的速度
%指定起始值
i = 1: m
Posi (1,m) = (m +1 - i) * 10;
结束
第一辆车的位置是独立于其他车的
i = 1: N
Posi (i+1,1) = Posi (i,1) + h * v_1;
结束
j = 2: m
i = 1: N
及(i + 1, j) =及功率(i, j) + h * velo (i, j,及(i, j - 1)及(i, j));
结束
结束
结束
函数veloc = velo (i, j, x, y)
m = 10;
N = 400;
v_1 = 25;
d = 10;
h = 0.1;
除了第一辆车外,所有的车都以零速度起步。。
j = 1: m
VELOC(1,J + 1)= 0;
结束
%如果两辆车之间的距离差异为“D”,则速度不会
%的变化。
如果X - y = d
veloc (i, j) = veloc(张,j);
%否则速度会改变
其他的
Veloc (i,j) = Veloc (i,j-1) + h * acc(i,j,x,y);
结束
函数访问= acc (i, j, x, y)
d = 10;
如果位置差大,汽车会加速快
如果X - y * d * 2
访问(i, j) = 10;
如果位置差大,汽车会加速快
elseifX - y
访问(i, j) = 5;
如果太近,减速。
elseifX - Y
访问(i, j) = 2;
结束
问题的起源是一个ODE系统。
我的想法是创建一个nx m -矩阵,每辆车的位置,速度和加速度的每一个欧拉步骤。为此,我使用了三个不同的函数。我不明白为什么不行。
不能来执行赋值,因为左边的大小是1乘1,而
正确的边是1-by-10。
错误在velo(第22行)
Veloc (i,j) = Veloc (i,j-1) + h * acc(i,j,x,y);
错误在位置(第20行)
及(i + 1, j) =及功率(i, j) + h * velo (i, j,及(i, j - 1)及(i, j));
似乎是对加速函数的调用缺少了一些东西。我想保留变量x,y和原函数的区别。我哪里做错了?
任何帮助都将不胜感激!<3

答案(1)

1月
1月 2019年11月28日
编辑:1月 2019年11月28日
h = 0, 1;
你的意思是0.1加个点
不需要将加速创建为数组。回复一个标量:
函数访问= acc (i, j, x, y)
d = 10;
如果X - y * d * 2
如果位置差大,汽车会加速快
访问= 10;%没有(i, j) !
elseifX - y如果位置差大,汽车会加速快
访问= 5;
elseifX - Y 如果太近,减速
访问= 2;
结束
顺便说一下,这个失败了 x - y = = d .把这个案例包括在其他案例中。
同样的问题也发生在速度上。您不需要定义 veloc (i, j) ,但是标量 veloc .在主函数中定义位置和速度的数组。然后计算当前的加速度,并使用它来确定新的速度,再用它来更新位置。

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!