みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

大学のC言語の課題で

ルンゲクッタ法を用いたバネの単振動を解析する課題をやっています。以下の部分まで作ったのですが、
どうしても最後のほうがわかりません。
関数fとf2のreturn やメイン関数を変更すればいいとおもうのですが、どうやっても満足な結果が得られません。どなたか詳しい方教えてもらえない?

#include<stdio.h>
#include<math.h>



double f(double t,double y1)
{
return y1;
}

double f2(double t2,double y2)
{
double w=5.0,k=0.5;
return -w*w*f(t2,y2)-2.0*k*y2;

}


int main(void)
{
int count,bunkatu,npr;
double t_0,T;
double k1,k2,k3,k4;
double y,t,dt,dt_2,dt_6;

t_0 = 0.0;
T=10.0;
bunkatu=2000;
npr=1000;
y=1.0;

printf("\n# [t_0,T]=[%6.4lf,%6.4lf] N=%d\n",t_0,T,bunkatu);

t=t_0;
dt=(T-t_0)/(double)bunkatu;
dt_2=dt/2.0;
dt_6=dt/6.0;

for(count=0;count <=bunkatu;count++)
{
if(count %(bunkatu/npr)==0)
printf("\n %5.2lf %10.5f",t,y);
k1=f2(t,y);
k2=f(t+dt_2,y+k1*dt_2);
k3=f(t+dt_2,y+k2*dt_2);
k4=f(t+dt,y+k3*dt);

y+=(k1+2.0*k2+2.0*k3+k4)*dt_6;
t+=dt;
}
printf("\n");
return 0;
}

投稿日時 - 2006-07-24 16:54:04

QNo.2296402

暇なときに回答ください

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

1階微係数って記憶しなくてもいいんだっけ?

投稿日時 - 2006-07-25 12:16:12

ANo.4

本当に教えてほしいんでしょうかね。
配布されたものらしきプログラムを投げつけ
ルンゲクッタ法を用いたバネの単振動を解析する課題
としか説明せず
みんながよくわからないなりに必死に読んでくれてるにもかかわらず、補足要求に
たいしても
「初期値を決めて解析する方法」
としか言わず。

本当に教えてもらいたいなら
プログラムの注釈をこまかくかいたり、
どこでどのような処理をするプログラムか、説明を書いたり、
物理の様々な式を計算しているなら
最低限計算している式を書くのが常識です。

私も読みましたがルンゲクッタ法がよくわからないのでプログラムをどう改良したらよいかもよくわかりませんでした。

詳しい補足要求お願いします。

投稿日時 - 2006-07-25 01:56:39

ANo.3

物理わからないなりに読んでみましたが、
まず、fとf2の二種類あるのがよくわかりません。

また、"単振動を解析"だけでは何を求めるのかわかりませんが、
仮に求めるのが、時刻tにおける位置yのグラフであるなら、
関数f()は時刻tにおける速度sを返すはずです。

return y1;
が速度でないということはわかりますが、どうでしょうか。
時刻tにおける速度sを求める計算式は、私にはわからないので
ご自身で数学的に求めてください^^。

投稿日時 - 2006-07-25 01:32:43

ANo.2

これはプログラミングするとき全般に言えることですが、
「他人に見せるコードにはわかりやすくコメントしましょう」を守ってください(^^;
私は大学に入って間もないのでルンゲクッタをよく知りません。
それで式と照らし合わそうと努力したのですが、大変な苦労です。
どの変数がルンゲクッタの式の何に対応しているのか教えてください。

投稿日時 - 2006-07-24 22:55:24

ANo.1

まず、どういう処理をしているか書いてください。
何処が分からないのか分かりません。
ルンゲ=クッタ法の方法通りにやってください。

投稿日時 - 2006-07-24 19:14:14

補足

y''=-w^2y'-2.0ky
で初期値を決めて解析する方法です。

投稿日時 - 2006-07-24 20:58:19

あなたにオススメの質問