簡體   English   中英

在MATLAB中數值求解ode

[英]Solving an ode numerically in matlab

我理解數值求解的邏輯,即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)

ode求解器用於常微分方程。 您的方程不是微分方程,而是非線性代數方程。
在Matlab中,您可以使用fzero解決它。 但是,您的函數可以很容易地重新排列為明確的,並且可以解析地解決,而無需任何迭代過程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM