これをここに載せておくべきかMaths stackexchangeに載せるべきか分からないので、間違っているとごめんなさい。私はMATLABとプログラミング一般には非常に新しく、代入の有限差分法を使ってODE問題を解決しようとするいくつかの問題を抱えています。MATLAB - 有限差分[添え字インデックスは正の整数または論理でなければなりません]
マイ有限差分方程式は次のとおりです。tは時間増分のための51x1配列です
z(t+dt) = (dt^2*(γ^2*h*sin(γ*t)-β*z(t)) - z(t-dt)*(1-dt*α)+2*z(t))/(1 + dt*α)
。基本的には、0から1までのt値のz(t)を0.02単位で計算したいと思います。
dt = 0.02
t = [0:dt:T]';
z(0) = 0
z(dt)= 0
for i = t
z(i+dt) = (dt^2*(gamma^2.*h.*sin(gamma*t)-beta*z(i)) - z(i-dt)*(1-dt*alpha)+2*z(i))/(1 + dt*alpha)
end
アルファ、ベータおよびガンマ:私は、初期条件のZ(0)= 0とZ(ΔT)= 0
私の現在のコード(ではないすべてのものが、私に迷惑を与えているビットを持っています
「添え字インデックスは、正の整数または論理でなければなりません」というエラーが発生し続けます。MATLAB配列は要素1で始まり0ではないことを理解しています。 、要素0にアクセスしようとするとエラーが発生します。
私は自分の有限差分関数や初期条件の入力方法に誤りがあるかどうかはわかりません。 i = tを設定することで、tの値、または行列の要素のforループを実行していますか?例えば。 i = 0のときは、行列の0要素にアクセスしようとしていますか、それとも、式のi変数を0に設定していますか?
ご協力いただければ幸いです。
ありがとうございました!
インデックスは正の整数**整数**または論理でなければなりません。 '0.02'は整数ではありません。 – excaza