所以我有一个解析不可解的非线性二阶微分方程:
x''=(-1/x(((x'(²+gx gh+ax'(
一段时间以来,我一直试图在Octave中应用龙格-库塔方法,但没有得到好的结果。这是我一直在使用的代码:
graphics_toolkit('gnuplot')
to=0
tf=2.8
N=150
dt=[tf-to]/N
b=2.65
g=9.81
h=0.07
y(1)=0.015
z(1)=0
t(1)=to
for i=1:N-1
y(i+1)= y(i) - dt.*z(i)
z(i+1)= z(i) - dt.*[z(i).**2 + g.*y(i) - g.*h + b.*z(i)]./y(i)
t(i+1)= t(i) + dt
endfor
plot(y,t)
title=('Numerical solution')
xlabel=('Time')
ylabel=('Position')
坦率地说,我不知道问题出在哪里,也许是因为我没有得到这个方法,或者是因为我的代码缺少了一些重要的东西。
感谢您的时间和关注。
的实现
y' = z
在欧拉方法中是
y(i+1)= y(i) + dt.*z(i)
注意加法而不是减法。