• 締切済み

ルンゲクッタ法について

ルンゲクッタ法は刻み幅固定のためプログラムで計算途中で誤差を減らせないと思うのですが、計算途中で誤差を減らせるような手法はどのようなものがあるでしょうか。

みんなの回答

  • Broner
  • ベストアンサー率23% (129/554)
回答No.1

解析理論は、ルンゲクッタ法は、「刻み幅が十分小さいので、誤差が小さく無視できる。」と言う原則があります。 刻み幅が、大きくて誤差が無視できないなら、元に戻って始めから刻み幅を、誤差に対応できるように十分に小さくしないといけません。 このような数値計算は、途中から誤差を減らせるような手法はないと思います。それが微分積分の基本事項だと思います。

関連するQ&A

  • ルンゲクッタ法について

    ルンゲクッタ法についての問題なのですがよくわかりません。 常微分方程式 du/dt=u について、ルンゲクッタ法(3次.4次)による誤差分析を行えという問題です。

  • オイラー法、2次ルンゲクッタ法、4次ルンゲクッタ法のC言語プログラムに

    オイラー法、2次ルンゲクッタ法、4次ルンゲクッタ法のC言語プログラムについて教えてください! 課題なのですが、まったくわからず困ってます>< 1 常微分方程式 dy/dx=f(x,y),y(0)=1 の数値解をオイラー法を用いて計算するプログラムを作為せよ。ただし、f(x,y)=3-6x^2-4x+2xyとする。 2 α=1,β=1,γ=1/2,σ=1/2 の場合の2次ルンゲクッタ法を考える。1と同じ常微分方程式(f(x,y)も同じ)を考え、その数値解を求めるプログラムを作成せよ。また、オイラー法と2次ルンゲクッタ法の実行結果を示して、2つの近似精度を比較せよ。 3 1と同じ常微分方程式(f(x,y)も同じ)を考え、その数値解を4次ルンゲクッタ法を使って求めるプログラムを作成せよ。また、オイラー法、2次ルンゲクッタ法、4次ルンゲクッタ法の実行結果を示して、3つの近似精度を比較せよ。 以上の3つです。 休んでいた自分が悪いのですが、ネットで調べてもよくわからなくて… わかる方、よろしくおねがいします…

  • java 単振り子 ルンゲクッタ法

    javaを使って単振り子の運動方程式をルンゲクッタ法を使って、数値計算し、結果をappletを使ってグラフにするという課題に取り組んでいます。 恥ずかしながらjavaは始めたばかりで、いろいろソースも調べたのですが違う言語や、appletでないものしかありません>< ですので、javaでルンゲクッタ法を使って単振り子の運動方程式を数値計算するソースの書き方を教えてもらいたく質問させていただきました。グラフ化はどうにかがんばるのでその数値計算のところをぜひ教えてください。よろしくお願いします。

    • ベストアンサー
    • Java
  • 微分方程式をルンゲクッタ法を用いて解くプログラム

    2*(y''(x))+0.5(y'(x))+2.5y=1 Y(0)=0.1,y'(0)=0.1 この微分方程式をルンゲクッタ法を用いて、 x軸が0から50位(0.01刻み)までのyの値を算出するプログラムを作りたいのですが、どうすればいいのかさっぱり分かりません。 ネットで色々と調べてみたのですが、ルンゲクッタ法をどうやってプログラムで表せば良いのかが分かりません。 どうか、回答をよろしくお願いします。

  • ルンゲクッタ フェールベルグ法

    ルンゲクッタ 法とルンゲクッタ フェールベルグ法の違いについて、教えてください。 また、株価変動を予測する場合、どちらの方法が最適ですか。

  • ルンゲクッタ法による数値計算の高速化(C言語)

    C言語にて4次のルンゲクッタ法で 次の非線形連立微分方程式を計算するプログラムを作りました。(添付画像) 出力される計算結果は、 ある時点で変数xが指数関数で立ち上がり、また指数関数で立ち下がるグラフです。 ファイル軽量化と高速化のため、必要なデータ(x > 1E-5)だけ抜粋しsaveしています。 下記リンクのサイトを元に、 逐次計算→CSVファイル出力するプログラムは作れたのですが、 計算に時間が掛かり過ぎて困っています。 http://hooktail.org/computer/index.php?Runge-Kutta%CB%A1 ネットで調べると高速化の手法として、 Adaptive Runge-Kutta法というものがあり、 変化量が小さい区間はステップを大きく取り、 変化量が大きくなるとステップを細かくするという手法があると知りました。 ただし英語文献はいくつか見つかりましたが、具体的なCでの実装方法がわかりません。 Adaptive Runge-KuttaのC言語での実装方法についてお教えください。

  • オイラー法、ルンゲクッタ法について。

    オイラー法、ルンゲクッタ法について。 この2つについて分からない事があるので質問します。 まず、オイラーについてですが、yi+1=yi+hf(x,y)という式がテイラー展開によって求まると言われましたが、テイラー展開の2次以降の項は微少量として無視できるのは分かります。でもそもそもテイラー展開ってひとつ先の値を今の値から求まるみたいな展開でしたっけ??というのが一つ目の質問です。 2つ目は、オイラーの式の中のf(x,y)についてです。簡単なバネ・マス・ダンパ系を考えた時、運動方程式はm・d2x/dt2+c・dx/dt+kx=0となると思いますが、この場合のf(x,y)はどうやって求めるのでしょうか。 3つ目はルンゲクッタそもそもについてです。 ルンゲクッタとはK1K2K3K4という係数(?)に1221という重みをかけるとyi+1が求まるそうですが、この理由がどんなサイトや本を見ても納得出来ません。 何か分かりやすい本やサイトがあれば教えて頂けないでしょうか。 以上3つの質問、回答よろしくお願いします。

  • ルンゲクッタ法の中でも,もっとも精度の良い方法を教えてください.

    ルンゲクッタ法の中でも,もっとも精度の良い方法を教えてください. よろしくお願いします. 名称だけでいいのでお願いします. できるだけ、早急な回答をよろしくお願いいたします。

  • ルンゲクッタの連立常微分の解き方が分かりません。

    「スライディングモード制御」という制御システムの基本的な考え方である、 次の連立常微分方程式をルンゲクッタ法で解いて、さらにC++でのプログラムを 作るのですが、インターネットや書籍で色々調べてもうまく分かりません。 どなたかお教えください。よろしくお願いします。 (式) x’=y y’=2y-x+u u=-φx フィードバックゲイン φ= 4   σ(x、y)>0                  -4   σ(x、y)<0 σ(x、y)=xS,S=0.5x+y 閉ループシステム? 以上が与えられている情報です。 初期値や刻み幅hなどの指定がないため余計に混乱しています。 (自分で適当な値を決めればいいのでしょうか?) ルンゲクッタの解き方だけでもわかればプログラムもなんとかできるかもしれないので、 どうかよろしくお願いします。

  • ルンゲクッタ法の中でも,もっとも精度の良い方法を教えてください.

    ルンゲクッタ法の中でも,もっとも精度の良い方法を教えてください. よろしくお願いします. 名称だけでいいのでお願いします. できるだけ、早急な回答をよろしくお願いいたします。

専門家に質問してみよう