ラザフォードの散乱のプログラミングを書いているのですが、コンパイルエラーへの対処がわからないです。
特に、7,8,9,10行目で「 initializer element is not a compile-time constant」と出ます。
15行目で「note: 'g' declared here」と出ます。
24、25,26で「 too few arguments to function call, expected 4, have 2」と出ます。
プログラム初心者なので、よければエラーの原因と対処法を教えてもらいたいです。
コンパイルは「paiza.LO」のサイトで行いました。
よろしくお願いします。
C
1#include <stdio.h> 2#include <math.h> 3 4#define N 10 5 6double x=-2000, b=2000,y[N]={10,50,100,150,200,300}; 7double n,h,t,vx,vy,q=5.30*2,ma=6.664*pow(10,-27),M; 8 9double M=q/ma; 10double vx=pow(M,0.5); 11double n=40000; 12double h=(b-x)/n; 13 14 15double g(double x, double y, double ma, double r); 16 17int main() { 18 double i; 19 for(i = 0 ; i <=n ; i++) 20 { 21 double k1,k2,k3,k4; 22 23 t+=h; 24 k1 = g(t,vy); 25 k2 = g(t+h*0.5,vy+k1*0.5); 26 k3 = g(t+h*0.5,vy+k2*0.5); 27 k4 = g(t+h, y+k3); 28 vy = vy + (k1+2.0*k2+2.0*k3+k4)/6.0; 29 y=vy*t; 30 x=vx*t; 31 printf("%2f %f %f\n",t,x,y); 32 33 return 0; 34 } 35} 36 37double g(double x, double y, double ma, double r){ 38 double z=79,m=3.141592,e=8.854*pow(10,-12),r=sqrt(pow(x,2)+pow(y,2)); 39 40 g =2*z*z*y/(4*m*e*ma*pow(r,3)); 41 42 return(g); 43}
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/21 04:56