【发布时间】:2014-09-15 23:51:57
【问题描述】:
我了解数值求解的逻辑,matlab 从未知值开始,然后循环直到方程收敛到一个值。但是,我不明白输入方程式的正确方法。我认为使用ode45 函数是最好的方法。我有以下等式U^(n+1) = U^n - (t'*3250/10)-(t'/2)(.004(v^n)^2/10。
我怀疑我的方程需要采用不同的形式,但是我不确定让 matlab 求解方程的正确方法。
我尝试按原样在 matlab 中输入方程,但是它抱怨 v 和 n 是未知变量,我不确定如何处理这些变量。求解这个方程的最终目标是找到 v 的值。
C=@(t,v) u^n-(3250*t'/10)-(t'/2)*((.004*(v^n)^2)/10)
[t,v]=ode45(C,[0,5],1)
产生以下错误:
Undefined function or variable 'u'.
Error in @(t,v)u^n-(3250*t'/10)-(t'/2)*((.004*(u^n)^2)/10)
Error in odearguments (line 88)
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.
Error in ode45 (line 114)
{neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...
Error in ae301_3 (line 2)
[t,v]=ode45(C,[0,5],1)
【问题讨论】:
-
呃,你用什么功能/工具箱来解决问题?检查它的文档?
-
ode45mathworks.com/help/matlab/ref/ode45.html 文档中的示例对我的情况没有帮助 -
所以,向我们展示您的代码。我怀疑你没有正确声明你的函数。
-
u^n、v^n和t'应该是什么?这是您尝试翻译方程式还是recurrence relations?文档不清楚怎么办?你也可以通读这个MathWorks blog post。 -
你对ODE求解逻辑的理解有误。 Matlab 的
ode45使用一步龙格-库塔法。有关此类方法的背景信息,请参阅en.wikipedia.org/wiki/…。您需要提供有关问题中变量的更多信息,尤其是u、n和t'。