octave - Runge-Kutta 方法数值求解二阶非线性微分方程 - Octave
问题描述
所以我有这个解析不可解的非线性二阶微分方程:
x''=(-1/x)((x')²+gx-gh+ax')
我一直在尝试在 Octave 中应用 Runge-Kutta 方法一段时间,但没有得到好的结果。这是我一直在使用的代码:
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)
注意加法而不是减法。
推荐阅读
- ionic3 - 使用 google cordova 登录后,我被带到“www.google.com”
- c# - c#如何让web浏览器自动加载一个url
- scala - 为什么 DataFrame.stat.approxQuantile 因 n 个任务的序列化结果大小(1030.8 MB)大于 spark.driver.maxResultSize 而失败
- angular - 未找到传单标记生产环境角度 7
- javascript - 为每个单选按钮制作一个简单的真/假标志
- r - 粘贴向量的字符串索引
- swift - 在 TableView Cell 中设置 UIView 对象的宽度
- python - Python & Psycopg2 | 具有不同 WHERE 子句的动态查询
- html - 某些网页没有出现背景
- android - 如何使用参数从另一个类调用方法?