我理解数值求解的逻辑,即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)发布于 2014-09-16 17:56:09
常微分方程使用常微分方程求解器。你的方程不是微分的,但它是一个非线性代数方程。
在Matlab中,你可以使用fzero来解决它。但是,您的函数可以很容易地重新排列为显式函数,并且可以在没有任何迭代过程的情况下进行解析求解。
https://stackoverflow.com/questions/25858642
复制相似问题