「数値計算法レポート2-オイラー」の編集履歴(バックアップ)一覧はこちら
「数値計算法レポート2-オイラー」(2011/06/29 (水) 10:06:10) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
適当に作ったオイラー法
//C/linenumber
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "report2.h"
int main(){
double x,y,vx,vy;
int i;
FILE *fpdata;
if((fpdata=fopen("euler.dat","w")) == NULL){
printf("error:cannot open file\n");
exit(1);
}
for(i=-10;i<=10;i++){
x=min;
y=i*20;
vx=sqrt(Energy/mass)*c;
vy=0;
while(x<=max && y<=max && y>=min && x>=min){
fprintf(fpdata,"%lf %lf ",x,y);
x=x+vx*dt;
y=y+vy*dt;
vx=vx+Z*197/137/mass*x/(pow(x*x+y*y,1.5))*c*c*dt;
vy=vy+Z*197/137/mass*y/(pow(x*x+y*y,1.5))*c*c*dt;
}
}
fclose(fpdata);
}
//C/linenumber
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "report2.h"
int main(){
double x,y,vx,vy;
int i;
FILE *fpdata;
if((fpdata=fopen("euler.dat","w")) == NULL){
printf("error:cannot open file\n");
exit(1);
}
for(i=-10;i<=10;i++){
x=min;
y=i*20;
vx=sqrt(Energy/mass)*c;
vy=0;
while(x<=max && y<=max && y>=min && x>=min){
fprintf(fpdata,"%lf %lf ",x,y);
x=x+vx*dt;
y=y+vy*dt;
vx=vx+Z*197/137/mass*x/(pow(x*x+y*y,1.5))*c*c*dt;
vy=vy+Z*197/137/mass*y/(pow(x*x+y*y,1.5))*c*c*dt;
}
}
fclose(fpdata);
}