• 締切済み

プログラミング

C言語のプログラミングで困っています。 二つの微分方程式 y'=yの解をx=0~1の範囲 y'=-4yの解をx=0~4の範囲 を、Runge-Kutta法により求めるプログラムを作りたいのですが、全く分からず困ってます。 初期条件はx=0,y=1で、また、間隔Δxを変えたときの解の変化も調べたい。 回答よろしくお願いします。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

ほんとうに全く分からないなら ・あきらめる or ・担当教員にひたすら質問する のが本来の姿では?

関連するQ&A

  • C言語のプログラミング教えて!!

    C言語で次の二つの微分方程式 y'=yの解をx=0~1の範囲 y'=-4yの解をx=0~4の範囲 を、Heun法、Runge-Kutta法により求めるプログラムを作りたい。 初期条件はx=0,y=1で、また、間隔Δxを変えたときの解の変化も調べたい。全くわからずお手上げ状態です。 分かる方がいましたら、回答よろしくお願いします。

  • プログラムについて

    2つの微分方程式をEuler法、Heun法、Runge-Kutta法により求める。また、間隔Δxを変えたときの解の変化を調べたい。ただし、初期条件はx=0,y=1とする。分かる方がいましたら、回答よろしくお願いします。

  • Runge-Kutta,Runge-Kutta-Gillの二つの計算結果を比較して表示

    常微分方程式 dy/dx=1+y/x を下記の条件で解くというものです。 初期値x=1,y=1   計算区間(きざみ幅)h=0.05   計算区間[0,2]   真値 y=x(log|x|+1) Runge-Kutta法とRunge-Kutta-Gill法の2つの数値計算方法を用いて、計算結果を比較するプログラムを作るというものです。それぞれ表示させるのはxの値、yの値、真値、誤差です。Runge-Kutta法とRunge-Kutta-Gill法はユーザー関数にします。 初心者なのにこんな難しい課題だされて本当に困っています。自分でもがんばってプログラムを作ったのですが、表示させるのがうまくいきませんでした。計算結果を表示させるプログラムはメイン関数に置くのですか?それともユーザー関数に置くのですか?どなたか教えてください!よろしくお願いします。

  • 常微分方程式の問題で。

    常微分方程式の問題で オイラー法、ルンゲ・クッタ法、ルンゲ・クッタ・ギル法、ミルン法、アダムス法より2つの方法を用いて解け。 y''+y'/x+y=0 初期条件y'/x=-1/2 0<=x<=4 h=0.4 という問題なのですが、基本的に解き方がわかりません。 二階微分なので連立ルンゲ・クッタで解くのかな?っと思ったのですが 結局それからどうすればいいのかわかりません。 2つの方法とありますが、これはどの方法でも解けるものなのでしょうか? 本当はC言語のプログラムを組まなければいけないのですが、 この理論がわからないのでおねがいします。

  • 常微分方程式の数値解法: 陰解法のルンゲクッタ法の公式について

    陽的なRunge-Kutta法は, y(i+1)=y(i)+1/6*(k1+2*k2+2*k3+k4) ただし,k1=hf(xi,yi), k2=hf(xi+h/2, yi+k1/2) k3=hf(xi+h/2, yi+k2/2) k4=hf(xi+h,yi+k3) と表すことは x=[x0,xn]の範囲でルンゲ・クッタ法により数値的にy(x)を解きたいのですが, 解こうとしている問題の初期条件がx=xnの時,y=0となっており,陰的(xnからx0に向かって)に解かなければならないのだろう,と考えています. 上記の公式でhの代わりに-hを入れて,プログラムを走らせても求めたい結果に大きな差異が生じてしまい困っています. そこで,陰的なRunge-kutta法の公式には,陽的な解き方と比較してどのような修正をすればよいか,教えてください. ちなみに解きたい微分方程式は, d2y/dx2 = x と仮定します. よろしくお願いいたします!!

  • ルンゲクッタ法による数値計算の高速化(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言語での実装方法についてお教えください。

  • 次の連立微分方程式の解をRunge-Kutta法で

    dR/dt=102-(R-V)*0.019 dP/dt=(R-P)*0.019 dL/dt=(P-L)*0.007 dA/dt=(L-A)*0.033 dC/dt=(A-C)*0.004 dV/dt=(C-V)*0.001 この連立微分方程式の解をRunge-Kutta法で導き出し 関数Aの時間的変動をグラフ化したいのですが C言語で作成したプログラムを実行しても想定外の結果となってしまいます (想定:t=0からt=12あたりまでAは増加し、ピークを迎えた後減少する) というのも、とある論文を基に数値シミュレーションを試みている状況なのです Runge-Kuttaの理論に関してはWikipediaやPukiwikiを参照しました プログラムの実装で参考にしたWebは http://www.geocities.jp/supermisosan/rksimultaneousequation.html http://www.330k.info/essay/Explicit-Runge-Kutta-Butcher-Tableau などの”古典的Runge-Kutta”という部分を参考にしました 実際VC++6.0で作成したプログラムも添付したいと思います Runge-Kutta法の使い方(根本)から間違っているのか? プログラムのコードが間違っているのか? ご教授いただけますでしょうか

  • Cプログラミングの問題です。ニュートン法を利用して3次方程式の解を求めるプログラミング作成。

    C言語のプログラミング問題です。 ニュートン法を利用して、3次方程式の解を求めるプログラムを作成しなさい。 とのことです。プログラムが得意ではないので、よろしくお願いします。 C言語のプログラミング問題で、ニュートン法を利用して次の3次方程式の解を求めるプログラミングを作成。というものなのですが、プログラミングが苦手でうまくできません。 y=ax^3+bx^2+cx+d (ただし、a>0とする) 任意の係数a,b,c,dを与え、y=0のときの解(実根のみ)を求めるプログラミングを作成せよ。 という問題です。プログラミングの内容を説明しなくてはいけないので、内容のほうも若干詳しく説明していただけると助かります。 どなたか教えてください、よろしくお願いします。

  • 方程式の計算を教えることになったのですが...

    y'=y+x^2 , y(0)=1 のときのy(3)の値をEuler法およびRunge-Kutta法により求める問題を教えることになったのですが、分かりやすくプログラムを教えるためにはどういう風に教えればいいのでしょうか? 皆さんの考えを教えてください。

  • 微分方程式

    すいません。 微分方程式 dx/dt=y dy/dt=t+0.1-x-(x-t)^{3} を解ける人いたら解いてもらえませんでしょうか?(数値解法でない方法で) 真解が知りたいです。 初期値は適当な値でいいので、t=0,x=4,y=1 でお願いします。 そもそも、これって真解求まるのかすらわかりません。 今、プログラムの課題で上記の微分方程式をおいらー法で解くプログラムを作ってるんですが、真解を求めて、その誤差を測りたいと思っている次第です。 よろしくお願いします。