Presentation is loading. Please wait.

Presentation is loading. Please wait.

2分法のプログラム作成方法 2分法のプログラム(全体構成) プログラム作成要領 2分法のメイン関数(変数宣言)

Similar presentations


Presentation on theme: "2分法のプログラム作成方法 2分法のプログラム(全体構成) プログラム作成要領 2分法のメイン関数(変数宣言)"— Presentation transcript:

1 2分法のプログラム作成方法 2分法のプログラム(全体構成) プログラム作成要領 2分法のメイン関数(変数宣言)
2分法のメイン関数(データの読み込み) 2分法のメイン関数(繰り返し計算) 2分法のメイン関数(結果の表示) 2分法の関数(関数の値を計算)

2 2分法のプログラム(全体構成) 関数の計算方法を書く #include <stdio.h>
double func(double x); /*==========================*/ /* main function */ int main(){   フローチャートに従い処理を書く return(0); } /*=============================*/ /* define function */ double func(double x){   関数の計算方法を書く return(y);

3 2分法のメイン関数(変数宣言) 最初に変数宣言を行ってから、処理を書く double eps=1e-15; /* precision */ double a, b, c; double test; char temp; int i=0;

4 2分法のメイン関数(データの読み込み) 計算の両端の a と b を読み込む。 a と b が不適切な場合、再度読み込む。 do{
printf("\ninitial value a = "); scanf("%lf%c", &a, &temp); printf("initial value b = "); scanf("%lf%c", &b, &temp); test=func(a)*func(b); if(test >= 0){ printf(" bad initial value !! f(a)*f(b)>0\n\n"); } }while(test >= 0);

5 2分法のメイン関数(繰り返し計算) 設定した精度まで、繰り返し計算を行う。 while(b-a>eps){ c=(a+b)/2;
if(func(c)*func(a)<0){ b=c; }else{ a=c; } i++; printf(" %d\t%20.15f\n",i,c);

6 2分法のメイン関数(結果の表示) 結果を表示する。 表示の方法は、以下の通り。 改行して、solution x = と書く。
フィールド幅 少なくとも20カラム 精度 小数点以下15桁 最後に2回改行 printf("\nsolution x = %20.15f\n\n",c);

7 2分法の関数(関数の値を計算) 関数を使うときは、プロトタイプ宣言を忘れないこと。 変数の宣言を行う。 関数の計算を行う。
呼び出し側に値を返す。 double func(double x){ double y; y=x*x*x-3*x*x+9*x-8; return(y); }

8 ニュートン法のプログラム作成方法 ニュートン法のプログラム(全体構成) プログラム作成要領 ニュートン法のメイン関数(変数宣言)
ニュートン法のメイン関数(データの読み込み) ニュートン法のメイン関数(繰り返し計算と結果の表示) ニュートン法の関数(関数の値を計算) ニュートン法の関数(導関数の値を計算)

9 ニュートン法のプログラム(全体構成) フローチャートに従い処理を書く #include <stdio.h>
#include <math.h> #define IMAX 50 double func(double x); double dfunc(double x); /*===========================*/ /* main function */ int main(){ フローチャートに従い処理を書く return(0); } /* define function  */ double func(double x){    関数の計算方法を書く return(y); /* define derived function */ double dfunc(double x){    導関数の計算方法を書く return(dydx);

10 double eps=1e-15; /* precision */ double x[IMAX+10]; char temp;
ニュートン法のメイン関数(変数宣言) 最初に変数宣言を行ってから、処理を書く i番目の計算結果は、配列x[i]に格納される。 double eps=1e-15;     /* precision */ double x[IMAX+10]; char temp; int i=-1;

11 ニュートン法のメイン関数(データの読み込み)
計算の初期値 を読み込み、配列x[0]に格納。 printf("\ninitial value x0 = "); scanf("%lf%c", &x[0], &temp);

12 ニュートン法のメイン関数(繰り返し計算と結果の表示)
設定した精度まで、繰り返し計算を行う。 目的の精度に達したら結果を表示する。   do{ i++; x[i+1]=x[i]-func(x[i])/dfunc(x[i]); printf(" %d\t%e\n", i, x[i+1]); if(fabs((x[i+1]-x[i])/x[i])<eps) break;   }while(i<=IMAX); if(i>=IMAX){ printf("\n not converged !!! \n\n"); }else{ printf("\niteration= %d solution x=%20.15f\n\n",i,x[i+1]); }

13 ニュートン法の関数(関数の値を計算) 関数を使うときは、プロトタイプ宣言を忘れないこと。 変数の宣言を行う。 関数の計算を行う。
呼び出し側に値を返す。 double func(double x){ double y; y=x*x*x-3*x*x+9*x-8; return(y); }

14 ニュートン法の関数(導関数の値を計算) 関数を使うときは、プロトタイプ宣言を忘れないこと。 変数の宣言を行う。 関数の計算を行う。
呼び出し側に値を返す。 double dfunc(double x){ double dydx; dydx=3*x*x-6*x+9; return(dydx); }


Download ppt "2分法のプログラム作成方法 2分法のプログラム(全体構成) プログラム作成要領 2分法のメイン関数(変数宣言)"

Similar presentations


Ads by Google