ここから本文です

オイラー法について

ksq********さん

2019/7/1401:00:03

オイラー法について

単振り子をオイラー法でとく
プログラミングを学ぶなかでオイラー法を使いたくなったので質問します
オイラー法というのはつまりある関数上の一点が求まった後微分係数に添いながら次の点を求めていくというものなのでしょうか?

また振り子の角度を求める式が
f(θ)=(-g/L)sinθ
g(vθ)=vθ
θ=∮g(vθ)dt
vθ=∮f(θ)dt
で求まる様なのですがこのg(vθ)=vθという式はどのようにして導かれたのでしょうか?
ただ微小なθを時間の関数であるv(速さ?)と一緒に考えて時間で積み集めたらθになるよねって事なのでしょうか?

またそうだとしたら、ここでいう速さは角速度と物体の接線方向の速度のどちらなのでしょうか?

補足vθの件は解決したので、
オイラー法についての解答をいただけると幸いです

閲覧数:
53
回答数:
1

違反報告

ベストアンサーに選ばれた回答

mao********さん

編集あり2019/7/1402:27:12

オイラー法には陽的な方法と陰的な方法がありますが
陰的なものはめんどくさいので陽的なものを解説します
(興味があれば返信くだされば解説します)

陽的オイラー法とは、微分方程式
dx/dt=f(x(t))
を数値的に解く方法のうち最も簡単なものです。

dx/dtを近似する方法として、{x(t+Δt)-x(t)}/Δtを用いたのが陽的オイラー法です。
これを
dx/dt=f(x)
に代入すると
{x(t+Δt)-x(t)}/Δt=f(x(t))
これをx(t+Δt)について解いて
x(t+Δt)=x(t)+f(x(t))Δt
を得ます。これが陽的オイラー法の式です。
この式を文字通り解釈すると、
時刻tのときの位置がわかっているとき、Δt秒後の位置を、微分係数f(x)にΔtをかけることで近似するのが、陽的オイラー法です。
ですから、
「オイラー法というのはつまりある関数上の一点が求まった後微分係数に添いながら次の点を求めていくというものなのでしょうか?」
というのはまあ合っていると思います。

ただ、
dx/dt=f(x)
の形にしか適用できないので、運動方程式のように二階の微分方程式は、変形する必要があります。

ここでちょっと道を外れて、微分方程式の理論について。
ax⁽ⁿ⁾+bx⁽ⁿ⁻¹⁾+...+cx=0
のような微分方程式を、線形(同次)微分方程式といいました。
線形微分方程式は、以下のようなことがいえます。
[定理]
線形微分方程式は、ベクトルYを用いて
dY/dt=f(Y)の形に変形できる。

証明を出してもわかりにくいとおもうので、ここでは例を話します。
y''+y=0
という線形微分方程式があったとします。
ここで、dy/dt=zと、新しい変数を導入すると、
y''+y=z'+y=0より、z'=-y
となり
y'=z
z'=-y
と簡単な形になります。
ここで、ベクトルYを、
Y=
(y)
(z)
行列Aを、A=
(0 -1)
(1 0)
と定義すると、
y'=z
z'=-yは、
dY/dt=AY
と,
f(Y)=AYとすれば
dY/dt=f(Y)
の形で書けていますね。

ところで、微分方程式y''+y=0は単振動の方程式ですね。
単振り子の厳密式とは異なりますが。。。

それでも同様に、単振り子の方程式
d²θ/dt²=-(g/l)sinθも変形できます。
dθ/dt=φとすると、
dφ/dt=-(g/l)sinθ
dθ/dt=φ

よってX=(φ,θ)とすれば
dX/dt=(-(g/l)sinθ,φ)
になります。
f(X)=(-(g/l)sinθ,φ)の場合ですね。この場合は線形でないので、先の定理の条件は満たしておらず、行列では書けませんが、同じ方法が通用します。

  • 質問者

    ksq********さん

    2019/7/1409:58:35

    例え話のところわかりやすかったです!
    物理でならってる話にもつながって理解が深まりました
    ありがとうございます

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる