[英]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.