【问题标题】:Simulating nonlinear differential quation in MATLAB?在MATLAB中模拟非线性微分方程?
【发布时间】:2014-12-06 23:58:41
【问题描述】:

我被分配了一个程序,我必须在其中为方程和图形创建一个 MATLAB 模型,如下所示 - http://i.stack.imgur.com/wV0ro.png。不幸的是,我已经被困了很长一段时间。

或 dh/dt = (-r^2*sqrt(2*g*h))/(0.5r+htan(phi))^2

在哪里

g=386.4 in/s^2
h = 2+(34/64) in
r = 1/10 in
angle=30.519612098961595 degrees

我计算了 dh/dt,即 -0.185963075319895 in/s 和清空时间 t=13.611573134321043 s,这是我通过 t=h/-c1_solution 计算的。

我的 x 和 y 范围是:

t1_span = [0 t] 
y1_span = [0 ; h] 

到目前为止我的功能是这样的:

function hvt1 = leak(r,h,angle, g)

c1_solution_1 = (-(r(y1_span))^2 * sqrt(2*g*h(y1_span))) ;
c1_solution_2 = (0.5*r(t1_span)+h(t1_span)*tand(angle))^2 ;
c1_solution = c1_solution_1(1)/c1_solution_2(1) ; 
hvt1 = c1_solution ;

所以,这肯定需要工作。我对这种类型的事情非常缺乏经验。我想知道如何模拟容器如何随时间排出。我猜我将不得不使用 ode45。我知道如何在我的程序中格式化 ode45,但在创建函数时遇到了问题。

提前致谢。 :)

【问题讨论】:

  • 我会将此标记为“不清楚你在问什么”,但你是新人。你的帖子需要编辑:写下你试图模拟的微分方程,以及你当前的实现,那就是它。其余的我们不需要知道。

标签: matlab plot modeling differential-equations nonlinear-functions


【解决方案1】:

ode45 的文档并没有什么神秘或不清楚的地方。正如我在评论中所说,不清楚你在问什么,你应该在你的帖子中重写微分方程,而不是链接到外部图像......

在此示例中,您可以将 solver 替换为任何 matlab 求解器。 r,g,phi 是您的问题定义的常量,h0 是您的初始状态,tspan 是您考虑解决方案的时间跨度。一些求解器允许您指定时间步长,而其他求解器则动态选择它。

[t,h] = solver( @dh_dt, tspan, h0 );

function dh = dh_dt(t,h)
    dh = - r*r*sqrt(2*g*h);
    dh = dh / (.5*r + h*tan(phi))^2;
end

【讨论】:

  • 不幸的是,我的教授本人并不清楚他的指示。他说要做的就是模拟一个漏斗状的水箱。我想我必须通过随时间绘制漏斗中的水位来对此进行建模。
  • 另外,我了解如何使用 ode45,但我的问题在于我正在创建的函数。
  • 两件事:i) ,而不是你的教授,向你不认识的人提出了一个不清楚的问题,他们正在利用空闲时间试图弄清楚you 是什么意思。如果你认为你得到了不明确的指示,你不应该去向陌生人问不清楚的问题,而应该向你的教授询问细节; ii) 在我的回答中给出了用于 Matlab 求解器的微分函数,那么这是否回答了您的问题?
  • 看来我得做一个模型来预测漏斗的排水时间。我假设这意味着我使用我估计的时间来清空并绘制它随着时间的流逝而产生的曲线。它可能看起来像本页底部的图:diego.assencio.com/…
  • 是的,我认为应该是这样的。具体来说,您应该使用h(t) 的数值估计来找出它变为0 的时间。
猜你喜欢
  • 1970-01-01
  • 2016-08-08
  • 1970-01-01
  • 2014-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-07
相关资源
最近更新 更多