振り子の初期角度(x)、重力加速度(g)、線の長さ(l)、および時間ステップを考慮して、振り子運動の微分方程式を解こうとしていますh)。私はオイラー法を使ってこれを試してみました。しかし、今私はGSLで実装されたRunge-Kuttaメソッドを使用します。私はgslのマニュアルから学習を実装しようとしましたが、私は1つの問題で立ち往生しています。振り子は止めたくありません。私が最初の角度1radで始めるとしましょう。何回スイングしても、常に1radでピークの傾きがあります。ここで私はGSLにそれを与えるために使用する方程式や関数があります:振り子運動のためのODEを解決するGSL
x''(t) + g/l*sin(x(t)) = 0
それを変換:
x''(t) = -g/l*sin(x(t))
と分解:
y(t) = x'(t)
y'(t) = -g/l*sin(x(t))
それが十分でない場合はここでは、コードスニペットは、です私はプログラム全体を投稿することができます(それほど長くはありません)が、おそらくどこかに問題があります:
パラメータg
とl
が関数に正しく渡されているので、すでにチェックしています。
摩擦がない場合、これはまさにあなたが期待するべきことです。 –
ええと、このように考えることはありませんでしたが、あなたはおそらく正しいでしょう。なぜそれを解決する他の方法(オイラー法を用いる)がそれを最終的に停止させるのか?多分私はどこかで間違いを犯しましたが、はい、あなたは完全に正しいと思います。他のプログラムが盗聴されているようですが、これはそうではありません。私はとてもばかげている...私はこのプログラムを最初に実行し、次にもう1つを実行すると、多分振り子の最終的な停止に影響されず、ここに書き込む前にそれを考えるようになるだろう。ありがとうございました! – Wojtek
大きな質問です。前提は間違っていましたが、私はそれから多くを学びました!ありがとう! –