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

Slides:



Advertisements
Similar presentations
プログラミング 関数編 情報科学科. プログラミングにあたって C 言語では、 main 内に処理を記述 1000 行になるような大きなプログラムでは、 プログラム全体が何をしているのかを把握 することが困難になる 他人が見ると非常に理解しにくい 作成者であっても時が経てば内容を忘れて、他 人が見た時と同じ状況になる.
Advertisements

オブジェクト指向言語・ オブジェクト指向言語演習 中間試験回答例. Jan. 12, 2005 情報処理技術基礎演習 II 2 オブジェクト指向言語 中間試験解説 1  (1) 円柱の体積(円柱の体積 = 底面の円の面積 x 高さ) を求めるプログラムを作成しなさい。ただし、出力結果は、入 力した底面の円の半径.
配列の宣言 配列要素の初期値 配列の上限 メモリ領域 多次元配列 配列の応用
情報処理演習 (9)グラフィックス システム科学領域 日浦 慎作.
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
第13回構造体.
解答 1 複素数を構造体として定義し、二つの複素数の積(結果は複素数)を返す 関数 を定義せよ。
第12回構造体.
解析的には解が得られない 方程式を数値的に求める。 例:3次方程式
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
画像ファイル(ppm)の読み書き 画像データ用のメモリ確保・解放
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
第2回ネットワークプログラミング 中村 修.
プログラミング演習(2組) 第12回
関数 関数とスタック.
画像ファイル(ppm)の読み書き 画像データ用のメモリ確保・解放
構造体 構造体, 構造体とポインタの組み合わせ,.
第7回 条件による繰り返し.
プログラミング演習 バージョン1 担当教員:綴木 馴.
プログラミング2 関数
関数とポインタ 値呼び出しと参照呼び出し swapのいろいろ 関数引数 数値積分
繰り返し計算 while文, for文.
関数と配列とポインタ 1次元配列 2次元配列 配列を使って結果を返す 演習問題
#include <stdio. h> int main() { /. 表示をする
関数の定義.
Cプログラミング演習 第7回 メモリ内でのデータの配置.
プログラミング序論 2. n人のインディアン.
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
知能情報工学演習I 第12回(後半第6回) 課題の回答
今までの練習問題の復習.
indentについて forやifの「中身」を右に寄せる. forやifの「外枠」は右に寄せない. int x; x = 3;
第7回 条件による繰り返し.
第9回関数Ⅰ (簡単な関数の定義と利用) 戻り値.
第7回 プログラミングⅡ 第7回
Cの実行モデル.
四則演算,変数 入力文,出力文,代入文, ライブラリ関数
関数への道.
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
整数データと浮動小数データ.
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
岩村雅一 知能情報工学演習I 第12回(C言語第6回) 岩村雅一
疑似乱数, モンテカルロ法によるシミュレーション
メモリとメモリアドレス, ポインタ変数,関数へのポインタ渡し
Cプログラミング演習資料.
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
IF文 START もしも宝くじが当たったら 就職活動する 就職活動しない YES END NO.
情報基礎演習B 後半第2回 担当 岩村 TA 谷本君.
ファイルの読み込み, ファイルからのデータの取り出し, ファイルの書き出し
高度プログラミング演習 (11).
ニュートン法による 非線型方程式の解.
ループだよ!難しいよ! 第5章 while(ループ);.
cp-15. 疑似乱数とシミュレーション (C プログラミング演習,Visual Studio 2019 対応)
cp-3. 計算 (C プログラミング演習,Visual Studio 2019 対応)
Cプログラミング演習 ニュートン法による方程式の求解.
岩村雅一 知能情報工学演習I 第12回(後半第6回) 岩村雅一
知能情報工学演習I 第12回( C言語第6回) 課題の回答
全体の流れ 画像ファイルを開き,画像データをメモリ上にロード メモリ上にロードした画像データに処理を加える
プログラミング演習I 2003年6月11日(第9回) 木村巌.
2005年度 データ構造とアルゴリズム 第2回 「C言語の復習:配列」
四則演算,変数 入力文,出力文,代入文, ライブラリ関数
知能情報工学演習I 第9回(後半第3回) 課題の回答
計算技術研究会 第5回 C言語勉強会 関数(function)を使う
C言語講座 四則演算  if ,  switch 制御文.
岩村雅一 知能情報工学演習I 第13回(後半第7回) 岩村雅一
プログラミング演習I 補講用課題
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
第1章 文字の表示と計算 printfと演算子をやります 第1章 文字の表示と計算.
= 55 課題6-1 #define _CRT_SECURE_NO_WARNINGS
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
Presentation transcript:

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);

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

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);

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);

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

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

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

ニュートン法のプログラム(全体構成) フローチャートに従い処理を書く #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);

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;

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

ニュートン法のメイン関数(繰り返し計算と結果の表示) 設定した精度まで、繰り返し計算を行う。 目的の精度に達したら結果を表示する。   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]); }

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

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