至急お願いします。
至急お願いします。
数値解析のプログラミングの問題です。
dx(t)/dt=3x(t)+2
x...至急お願いします。
数値解析のプログラミングの問題です。
dx(t)/dt=3x(t)+2
x(0)=0 を台形則を用づくオイラー法で解け
という問題なのですが、解法の筋道を立てることができません。 C言語かエクセルで解きたいのです。
ヒントだけでもいいので教えて下さい。/*
0713_134753改訂オイラー法,c
macaron252さん
数値解析のプログラミングの問題です。
dy(x)/dx_=_f(x,y)_=_3y(x)+2
y(0)=0
を台形則に「基づく」オイラー法で解けという問題です
>>>>_ならば、こうです
__k1_=_f(x,y)
__k2_=_f(x+h,y+hk1)
__yn_=_y_+_(k1+k2)*h/2
C言語かエクセルで解きたいのです。
ヒントだけでもいいので教えて下さい。
>>>>C言語で
真値への収束状況を観察します。
*/
#include_<stdio.h>
#define___XEND__1.0
//_導関数
double_f(double_x,double_y){
__return_3*y+2;
}
double_eular(double_x,double_y,double_h){
__double__k1,k2;
__k1_=_f(x,y);
__k2_=_f(x+h,y+h*k1);
__return_y+(k1+k2)*h/2;
}
//_例題
int_main(void){
__double__x,y;
__double__h;
__int_____n;
__int_____k;
__for(n=8;n<100000;n*=2){
____h_=_XEND/n;
____x_=_y_=_0;
____for(k=1;k<=n;k++){
______y_=_eular(x,y,h);
____}
____printf("n=%5d_h=%f_y=%f\n",n,h,y);
__}
__return_0;
}
/*_出力
n=____8_h=0.125000_y=12.027460
n=___16_h=0.062500_y=12.520515
n=___32_h=0.031250_y=12.668942
n=___64_h=0.015625_y=12.709495
n=__128_h=0.007813_y=12.720078
n=__256_h=0.003906_y=12.722780
n=__512_h=0.001953_y=12.723462
n=_1024_h=0.000977_y=12.723634
n=_2048_h=0.000488_y=12.723677
n=_4096_h=0.000244_y=12.723688
n=_8192_h=0.000122_y=12.723690
n=16384_h=0.000061_y=12.723691
n=32768_h=0.000031_y=12.723691
n=65536_h=0.000015_y=12.723691
*/とても親切にお答えいただき
ありがとうございます(>_<)
図書館で調べて原理は
分かってもプログラムを組むことが
できずにいました(/ _ ; )
回答していただいたものを
もう一度自分で実行し
意味を理解しようと思います。
わからないことがあったら
またぜひお願いします。