用ode45模拟自由落体

28次浏览(最近30天)
卢卡斯门泽尔
卢卡斯门泽尔 2020年12月22日
评论道: 卢卡斯门泽尔2020年12月23日
大家好,我正在尝试模拟一个自由落体项目,从平流层(大约50公里)到地面。因此,为了得出一个合适的解决方案,必须考虑阻力。我已经找到了欧拉方法的正确解,但还没有找到ode45方法的正确解。此外,我需要把加速度(微分)的[矢量]解放在速度项中,我的意思是,你可以很容易金宝搏官方网站地意识到这一点,通过在代码中放入一个边斜率,这些步骤将自己重复,直到完成。但是现在说到我的问题,我已经用ode45方法尝试了很多方法,但没有一个成功。
这里我的代码:
函数(一)= Test2
开始= [0];
tspan = [0 100];
[t,A] = ode45(@Beschleunigung, tspan, start);
%(结束+ 1)= - g + 1 / (2 * m) * c_w * *ρ(结束)* (v(结束))^ 2;
情节(t (: 1));
结束
函数dv = Beschleunigung(t, v)
g = 9.81;
m = 120;
c_w = 0.28;
一个= 2.7;
ρ= 1.2041;
dt = 0.5;
你好= 40000;
vi = 0;
t = [0];时间数组声明
h = (hi);@ Höhe-Arrays声明
v = (vi);% Geschwindigkeits-Arrays声明
一个= [0];% beschleunigung - arrays声明
dv = 0 (2, 1);
一个= dv(结束);
dv (1 + 1) = g - m (1/2 *) * c_w * *ρ* v ^ 2;
v(终端+ 1)=(结束)+ dv (1) * dt;
h(终端+ 1)= h(结束)+ v * dt(结束);
t(结束+ 1)= t(结束)+ dt;
结束
1评论
卢卡斯门泽尔
卢卡斯门泽尔 2020年12月22日
这是我程序的错误
> > Test2
错误使用odearguments(第93行)
BESCHLEUNIGUNG必须返回一个列向量。
错误在ode45(第115行)
odearguments(FcnHandlesUsed, solver_name, ode, tspan, y0, options,
变长度输入宗量);
错误Test2(第10行)
[t,A] = ode45(@Beschleunigung, tspan, start);

登录评论。

接受的答案

艾伦·史蒂文斯
艾伦·史蒂文斯 2020年12月22日
也许更像这样:
你好= 40000;%初始高度
开始=[0]你好;%[初高度,初速度]
tspan = [0 100];
[t,A] = ode45(@Beschleunigung, tspan, start);
%(结束+ 1)= - g + 1 / (2 * m) * c_w * *ρ(结束)* (v(结束))^ 2;
次要情节(2,1,1)
情节(t(: 1)),网格
包含(“t”), ylabel (“高度”
次要情节(2,1,2)
情节(t(:, 2)),网格
包含(“t”), ylabel (“速度”
函数dv = Beschleunigung(~, hv)
g = 9.81;
m = 120;
c_w = 0.28;
一个= 2.7;
ρ= 1.2041;
v =高压(2);速度百分比,向下正
dv = [- v;% dh / dt
g - 1 /(2 *米)*级c_w * *ρ* v ^ 2);% dv / dt
结束
8的评论
卢卡斯门泽尔
卢卡斯门泽尔 2020年12月23日
哦,圣诞快乐

登录评论。

更多的答案(0)

标签

社区寻宝

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

开始狩猎!