プログラミング論 数値積分 http://www.ns.kogakuin.ac.jp/~ct13140/Prog/

Slides:



Advertisements
Similar presentations
数値解析シラバス C言語環境と数値解析の概要(1 回) C言語環境と数値解析の概要(1 回) 方程式の根(1回) 方程式の根(1回) 連立一次方程式(2回) 連立一次方程式(2回) 補間と近似(2回) 補間と近似(2回) 数値積分(1回) 数値積分(1回) 中間試験(1回) 中間試験(1回) 常微分方程式(1回)
Advertisements

配列の宣言 配列要素の初期値 配列の上限 メモリ領域 多次元配列 配列の応用
情報処理演習 (9)グラフィックス システム科学領域 日浦 慎作.
プログラミング演習(1組) 第7回
コンピュータープログラミング(C言語)(3) 1.関数と分割コンパイル (復習) 2.キーボード入力
プログラミング論 I 補間
数個、数十個のデータ点から その特徴をつかむ
解析的には解が得られない 方程式を数値的に求める。 例:3次方程式
プログラミング論 I 行列の演算
プログラミング演習I
プログラミング演習(2組) 第12回
IT入門B2 ー 連立一次方程式 ー.
応用統計学の内容 推測統計学(inferential statistics)   連続型の確率分布   標本分布   統計推定   統計的検定.
数値解析シラバス C言語環境と数値解析の概要(1回) 方程式の根(1回) 連立一次方程式(2回) 補間と近似(2回) 数値積分(1回)
非線形方程式の近似解 (2分法,はさみうち法,Newton-Raphson法)
2008年6月12日 非線形方程式の近似解 Newton-Raphson法
10. 積分 積分・・確率モデルと動学モデルで使われる この章は計算方法の紹介 積分の定義から
誤差の二乗和の一次導関数 偏微分.
演習問題の答え #include #include #define NUM 5 typedef struct { // 構造体の定義 float shincho; // 身長 float taiju; // 体重 } shintai; void hyouji(shintai.
プログラミング演習I
精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.)
プログラミング演習 バージョン1 担当教員:綴木 馴.
関数とポインタ 値呼び出しと参照呼び出し swapのいろいろ 関数引数 数値積分
プログラミング演習
関数と配列とポインタ 1次元配列 2次元配列 配列を使って結果を返す 演習問題
#include <stdio. h> int main() { /. 表示をする
数値積分.
関数の定義.
プログラミング論 II 2008年吉日 主成分分析 数値積分
第10回関数 Ⅱ (ローカル変数とスコープ).
応用統計学の内容 推測統計学(inferential statistics)   連続型の確率分布   標本分布   統計推定   統計的検定.
精密工学科プログラミング基礎 第10回資料 (12/18実施)
木の走査.
第10章 これはかなり大変な事項!! ~ポインタ~
高度プログラミング演習 (03).
最小自乗法.
indentについて forやifの「中身」を右に寄せる. forやifの「外枠」は右に寄せない. int x; x = 3;
第7回 プログラミングⅡ 第7回
高度プログラミング演習 (08).
プログラミング演習I ―数値解析― 平成16年度 前期 上 村 佳 嗣.
12.数値微分と数値積分.
8. 高階関数を用いた抽象化 プログラミング論I.
復習 2次元配列 4列 j = 0 j = 1 j = 2 j = 3 i = 0 i = 1 i = 2 3行
関数への道.
2分法のプログラム作成方法 2分法のプログラム(全体構成) プログラム作成要領 2分法のメイン関数(変数宣言)
情報理論2 第3回 小林 学 湘南工科大学 2011年10月25日 〒 神奈川県藤沢市辻堂西海岸1-1-25
岩村雅一 知能情報工学演習I 第12回(C言語第6回) 岩村雅一
疑似乱数, モンテカルロ法によるシミュレーション
精密工学科プログラミング基礎Ⅱ 第5回資料 今回の授業で習得してほしいこと: 構造体 (教科書 91 ページ)
Cプログラミング演習資料.
プログラミング序論演習.
プログラミング序論演習.
復習 2次元配列 4列 j = 0 j = 1 j = 2 j = 3 i = 0 i = 1 i = 2 3行
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
情報科学 第6回 数値解析(1).
11.1 標準ライブラリ関数 11.2 関数呼び出しのオーバーヘッド 11.3 大域変数 11.4 プロトタイプ宣言 11.5 関数引数
第5回 プログラミングⅡ 第5回
数値解析 第6章.
2008年6月5日 非線形方程式の近似解 2分法,はさみうち法,Newton-Raphson法)
ニュートン法による 非線型方程式の解.
cp-15. 疑似乱数とシミュレーション (C プログラミング演習,Visual Studio 2019 対応)
cp-3. 計算 (C プログラミング演習,Visual Studio 2019 対応)
Cプログラミング演習 ニュートン法による方程式の求解.
岩村雅一 知能情報工学演習I 第12回(後半第6回) 岩村雅一
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
Cプログラミング演習資料.
四則演算,変数 入力文,出力文,代入文, ライブラリ関数
ねらい 数値積分を例題に、擬似コードのアルゴリズムをプログラムにする。
プログラミング演習I 補講用課題
8.2 数値積分 (1)どんなときに数値積分を行うのか?
Presentation transcript:

プログラミング論 数値積分 http://www.ns.kogakuin.ac.jp/~ct13140/Prog/

区分求積法と台形公式のみ解説 多くの変数が登場する.しっかり整理すること 積分 区分求積法と台形公式のみ解説 多くの変数が登場する.しっかり整理すること

積分 不定積分は,「微分」の逆操作.すなわち,f(x)を不定積分する/の不定積分を求めるとは,「微分したらf(x)になる関数を探す」こと. 定積分は,関数f(x)とx軸に挟まれる部分の面積を求めること. 本講義では,定積分のみを扱う.

定積分 とは? y=f(x)と,x軸と x=aと,x=bで 囲まれた領域の面積を 求めること x=a x=b

この短冊の面積は,f(xi)(xi+1-xi) 区分求積法 細かい区間毎の長方形の面積の合計で近似. 全短冊の面積の合計と, はほぼ等しい f(xi+1) f(xi) y=f(x) この短冊の面積は,f(xi)(xi+1-xi) a xi xi+1 b

区分求積法 a=x0<x1<…<xn-1<xn=bとして, f (x0),f (x1),…,f (xn)が既知なら

区分求積法 当然, 長方形の高さは 左の値を使用しても, 右の値を使用しても良い. f(xi) f(xi+1) 左の値を使用 xi xi+1 右側の値を使用 xi xi+1

区分求積法の誤差 f(xi+1) f(xi) この部分が近似の誤差 xi xi+1

区分求積法 より細かい区間に分割するほど誤差は少なくなる. 長方形でなく台形で近似した方が,より正確な近似になると期待される. 台形公式 (これは1次近似である) 近傍3点を用い,2次式で近似した方がより正確な近似になると期待される. シンプソンの公式 3次式,4次式で近似した方が更に正確. ニュートン・コーツの積分公式

区分求積法台形公式 長方形ではなく,台形で近似する. より少ない誤差で計算が可能 f(xi) f(xi+1) xi xi+1

区分求積法台形公式 a=x0<x1<…<xn-1<xn=bとして, f (x0),f (x1),…,f (xn)が既知なら 区間[a,b]をn等分した場合, として

C言語プログラミング を求めるには? h = (b-a)/N; N等分すると仮定 f(x1) f(x2) h a x1 x2 x3 x4 b xn

C言語プログラミング を求めるには? x0~xnを表示してみる. for(i=0; i<=N; i++){ h = (b-a)/N; x0 = a; x1 = a + h*1; x2 = a + h*2; : xi = a + h*i; なので, for(i=0; i<=N; i++){ printf("%lf\n", a+h*i); } N等分すると仮定 x1 x2 f(x1) f(x2) a b h x0 x3 x4 xn

C言語プログラミング を求めるには? 各短冊の面積を表示してみる. for(i=0; i<N; i++){ xi = a+h*i; xi~xi+1の短冊の横の長さは h, 縦の長さは f (xi) なので, h = (b-a)/N; for(i=0; i<N; i++){  xi = a+h*i; area = f(xi)*h; printf("%lf\n",area); } x1 x2 f(x1) f(x2) a b h x0 x3 x4 xn 関数 double f(double d)が 存在していると仮定.

C言語プログラミング を求めるには? 全短冊の面積の合計を出す. すなわち,定積分. for(i=0; i<N; i++){ h = (b-a)/N; sum = 0.0; for(i=0; i<N; i++){  xi = a+h*i; area = f(xi)*h; sum += area; } printf("%lf\n", sum); x1 x2 f(x1) f(x2) a b h x0 x3 x4 xn

例(伊) y=x2 と x軸と x=1 と x=3 で囲まれた領域の面積は? y=x2 2 4 6 8 10 12 0.5 1 1.5 2 4 6 8 10 12 0.5 1 1.5 2.5 3 3.5 x y y=x2

例(伊) 100分割,非台形 #define NUM 100 #include <stdio.h> void main(){ int i; double x, y, sum, h; h = 2.0/NUM; sum = 0.0; for(i=0; i<NUM; i++){ x = 1.0 + h*i; y = x*x; sum += y*h; } printf("%lf\n", sum); 例(伊) 100分割,非台形

例(伊) 1000分割,台形 #define NUM 1000 #include <stdio.h> void main(){ int i; double xa, xb, ya, yb, sum, h; h = 2.0/NUM; sum = 0.0; for(i=0; i<NUM; i++){ xa = 1.0 + h*i; xb = 1.0 + h*(i+1); ya = xa*xa; yb = xb*xb; sum += (ya+yb)*h/2.0; } printf("%lf\n", sum); 例(伊) 1000分割,台形

例(伊) 100分割 1000分割 面積 誤差 左値を 使用 8.5868 0.079867 8.658668 0.007999 右値を 8.7468 0.080133 8.674668 0.008001 台形 8.6668 0.000133 8.666668 0.000001

例(呂) 下の扇形(1/4円)の面積は? 1.0 0.8 0.6 0.4 0.2 0.2 0.4 0.6 0.8 1.0

例(呂) 1000分割,非台形 面積=0.785889 PI=3.143555 #define NUM 1000 #include <stdio.h> #include <math.h> double f(double x){ return sqrt(1-x*x); } void main(){ int i; double x, y, sum, h; h = 1.0/NUM; sum = 0.0; for(i=0; i<NUM; i++){ x = h*i; y = f(x); sum += y*h; printf("面積=%lf\nPI=%lf\n", sum, sum*4); 例(呂) 1000分割,非台形 面積=0.785889 PI=3.143555