発生している問題・エラーメッセージ
t=0.14あたりで関数f1,f2が発散してしまう
解決したいこと
printfで発散する部分は見つけたのですがなぜ発散するのかがわかりません
関数f1とf2が発散してしまう理由を教えてくださるとありがたいです。
c ソースコード
#include<stdio.h>
#include<math.h>
#define h 0.001
#define g 9.80665
#define pai 3.14159265359
#define R 2.04
double Euler(double y0,double y1,double y2,double y3,double t);
double f1(double c ,double x);
double f2(double z ,double c, double x);
double f3(double a);
int main()
{
Euler(1,0,2.04,1,0);
return 0;
}
double Euler(double y0,double y1,double y2,double y3,double t){
double x,z,a,c;
while(t<=5.0){
y0=f3(y0);
y1=f3(y1);
y2=f3(y2);
y3=f3(y3);
printf("%lf %lf %lf\n",Rcos(y0)sin(y2),Rsin(y0)sin(y2),Rcos(y0));
x=y0;
z=y1;
a=y2;
c=y3;
printf("%lf %lf %lf \n ",f1(c,x),f2(z,c,x),t);
y0=x+zh;
y2=a+c*h;
y1=z+f1(c,x)*h;
y3=c+f2(z,c,x)*h;
t=t+h;
//printf("%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf\n",x,z,a,y0,y4,y1,y5,t);
}
}
double f1(double c ,double x){
return (Rccsin(x)cos(x)-gsin(x))/R;
}
double f2(double z ,double c, double x){
return -2zccos(x)/sin(x);
}
double f3(double a){
return a-pai;
}
回答3件
あなたの回答
tips
プレビュー