首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用matlab数值求解常微分方程

用matlab数值求解常微分方程
EN

Stack Overflow用户
提问于 2014-09-16 07:51:57
回答 1查看 114关注 0票数 0

我理解数值求解的逻辑,即matlab从未知值开始循环,直到方程收敛到一个值为止。然而,我不明白的是如何正确地进入我的方程式。我认为使用ode45函数是最好的方法。我有下面的等式U^(n+1) = U^n - (t'*3250/10)-(t'/2)(.004(v^n)^2/10。我怀疑我的方程需要不同的形式,但是我不确定让matlab求解方程的正确方法。

我试着在matlab中按原样输入方程,但是它抱怨v和n是未知变量,我不确定如何处理它们。求解这个方程的最终目标是找到v的值。

代码语言:javascript
复制
C=@(t,v) u^n-(3250*t'/10)-(t'/2)*((.004*(v^n)^2)/10)
[t,v]=ode45(C,[0,5],1)

生成以下错误:

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2014-09-16 17:56:09

常微分方程使用常微分方程求解器。你的方程不是微分的,但它是一个非线性代数方程。

在Matlab中,你可以使用fzero来解决它。但是,您的函数可以很容易地重新排列为显式函数,并且可以在没有任何迭代过程的情况下进行解析求解。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25858642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档