数値積分.

Slides:



Advertisements
Similar presentations
計測工学 10 データの補間 スプライン補間 1. . 復習 階差 近似多項式の次数 の決定法 等間隔階差 – 関数 y=f(x) で、 x の値 が等間隔の場合 等間隔: x 0, x 0 +h, x 0 +2h ・・・ y の値: y 0, y 1, y 2 ・・・ これらの階差は – 第1階差:
Advertisements

数値解析シラバス C言語環境と数値解析の概要(1 回) C言語環境と数値解析の概要(1 回) 方程式の根(1回) 方程式の根(1回) 連立一次方程式(2回) 連立一次方程式(2回) 補間と近似(2回) 補間と近似(2回) 数値積分(1回) 数値積分(1回) 中間試験(1回) 中間試験(1回) 常微分方程式(1回)
1. 補間多項式 n 次の多項式 とは、単項式 の 線形結合の事である。 Definitions: ( 区間, 連続関数, abscissas (データ点、格子点、差分点), 多項 式 ) Theorem. (補間多項式の存在と一意性) 各 i = 0, …, n について、 をみたす、次数が高々 n.
第1回 確率変数、確率分布 確率・統計Ⅰ ここです! 確率変数と確率分布 確率変数の同時分布、独立性 確率変数の平均 確率変数の分散
コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
情報処理演習 (9)グラフィックス システム科学領域 日浦 慎作.
連続系アルゴリズム演習第3回 DE変換を用いた数値積分法.
コンピュータープログラミング(C言語)(3) 1.関数と分割コンパイル (復習) 2.キーボード入力
電子情報工学科5年(前期) 7回目(21/5/2015) 担当:古山彰一
プログラミング論 数値積分
プログラミング論 I 補間
数個、数十個のデータ点から その特徴をつかむ
解答 1 複素数を構造体として定義し、二つの複素数の積(結果は複素数)を返す 関数 を定義せよ。
解析的には解が得られない 方程式を数値的に求める。 例:3次方程式
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
3 一次関数 1章 一次関数とグラフ §3 一次関数の式を求めること          (3時間).
基礎プログラミング (第五回) 担当者: 伊藤誠 (量子多体物理研究室) 内容: 1. 先週のおさらいと続き (実習)
IT入門B2 ー 連立一次方程式 ー.
応用統計学の内容 推測統計学(inferential statistics)   連続型の確率分布   標本分布   統計推定   統計的検定.
数値解析シラバス C言語環境と数値解析の概要(1回) 方程式の根(1回) 連立一次方程式(2回) 補間と近似(2回) 数値積分(1回)
非線形方程式の近似解 (2分法,はさみうち法,Newton-Raphson法)
2008年6月12日 非線形方程式の近似解 Newton-Raphson法
誤差の二乗和の一次導関数 偏微分.
関数 関数とスタック.
関数とポインタ 値呼び出しと参照呼び出し swapのいろいろ 関数引数 数値積分
プログラミング論 II 2008年吉日 主成分分析 数値積分
第10回関数 Ⅱ (ローカル変数とスコープ).
第11回 宿題 出題日:12月21日 締切日:1月7日(木).
応用統計学の内容 推測統計学(inferential statistics)   連続型の確率分布   標本分布   統計推定   統計的検定.
フーリエ級数展開 ~矩形波について~ 長江 栞 中島 涼 中村 勇樹
傾きがわかった関数の軌跡を求める. 変数は二つ以上
プログラミング演習I 行列計算と線形方程式の求解
LU分解を用いた連立一次方程式.
高度プログラミング演習 (03).
最小自乗法.
今までの練習問題の復習.
前回の練習問題.
第7回 プログラミングⅡ 第7回
高度プログラミング演習 (02).
プログラミング演習I ―数値解析― 平成16年度 前期 上 村 佳 嗣.
12.数値微分と数値積分.
ルンゲクッタ法 となる微分方程式の解を数値的に解く方法.
8. 高階関数を用いた抽象化 プログラミング論I.
四則演算,変数 入力文,出力文,代入文, ライブラリ関数
原子動力工学特論 レポート1 交通電子機械工学専攻 齋藤 泰治.
関数への道.
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
整数データと浮動小数データ.
疑似乱数, モンテカルロ法によるシミュレーション
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
C言語 はじめに 2016年 吉田研究室.
計算機プログラミングI 第6回 2002年11月14日(木) アルゴリズムと計算量 第1回課題の説明 平方根を計算するアルゴリズム 計算量
フーリエ級数.
プログラミング入門2 第13回、14回 総合演習 情報工学科 篠埜 功.
数値解析 第6章.
13.ニュートン法.
2008年6月5日 非線形方程式の近似解 2分法,はさみうち法,Newton-Raphson法)
ニュートン法による 非線型方程式の解.
cp-15. 疑似乱数とシミュレーション (C プログラミング演習,Visual Studio 2019 対応)
cp-3. 計算 (C プログラミング演習,Visual Studio 2019 対応)
Cプログラミング演習 ニュートン法による方程式の求解.
プログラミング演習I 数値計算における計算精度と誤差
Cp-1. Microsoft Visual Studio 2019 C++ の使い方 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
3 一次関数 1章 一次関数とグラフ §4 方程式とグラフ         (3時間).
四則演算,変数 入力文,出力文,代入文, ライブラリ関数
ねらい 数値積分を例題に、擬似コードのアルゴリズムをプログラムにする。
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
プログラミング演習I 補講用課題
8.2 数値積分 (1)どんなときに数値積分を行うのか?
Presentation transcript:

数値積分

数値積分 数値積分のプログラムを作る 但し, 積分したい関数 f(x) = e 積分区間: [a, b] 区間数: n -x2

定積分 f(x) x a b 定積分:  区間 [a, b] で,連続関数 f, x軸, x=a, x=b で囲まれた面積

区間 [a, b] の小区間への分割 f(x) x x1 x2 xn-1 x0 = a xn = b n 個の等間隔な小区間に分割 幅: h = (b-a) / n 小区間: [x0, x1], [x1, x2], ..., [xn-1, xn] 但し,x0 = a, xi = x0 + i × h

小長方形 f(x) f(xi) xi xi+1 x x0 = a xn = b 小長方形 小長方形の面積は

小台形 f(x) f(xi) f(xi+1) xi xi+1 x x0 = a xn = b 小台形 小台形の面積は

台形則 trapezoidal rule x1 x2 x3 xn-1 xn-2 f(x) x x0 = a xn = b 小台形の面積の和は 定積分 I を,この和 Sn で近似 = 台形則

台形則による数値積分 区間[a,b]を n 等分 (1区間の幅h=(b-a)/n) n 個の台形を考え, その面積の和 Sn で,定積分 I を近似 f(x) が連続関数のときは,n を無限大に近づければ,Sn は I に近づく 但し,単純に「n を大きくすればよい」とは言えない n を大きくすると ⇒ 計算時間の問題,丸め誤差の問題

数値積分の意味 式で書いてある関数の積分 ⇒ ごく限られた関数しか積分できない 定積分の「数値積分」が重要になる

数値積分の精度 分割幅を小さくするほど高精度 近似式の次数が高いほど高精度 台形則より次数が1高い近似の手法 台形則:区間を直線(1次式)により近似 Simpson則 区間を2次曲線により近似

Simpson則 積分値∫ f(x)dx を計算(関数f(x)をある区間[a,b] で積分) 積分区間を単位(幅2h)に分割 各単位を二次曲線で近似 座標 (-h,f(-h)), (0,f(0)), (h,f(h)) の3点を通る二次曲線 区間 -h~h までの積分を計算 それらの合計により全体の積分値を求める -h h f(0) f(h) f(-h) x f(x)

Simpsonの公式 3点を通る二次曲線 f(x)=Ax2 +Bx+C の区間 [-h,h] での積分 ∫ f(x) dx =∫ (Ax2 +Bx+C)dx = h(2Ah2 +6C)/3 = h[(Ah2 -Bh+C)+4C+(Ah2 +Bh+C)] / 3 = h(f(-h)+4f(0)+f(h)) / 3 h -h h -h

Simpsonの公式 積分値∫ f(x)dx の計算手順 x=a から x=b までを n 等分し,その幅を2h(=(b-a)/n)とする ∫f(x)dx = h[f(a)+4f(a+h)+f(a+2h) +f(a+2h)+4f(a+3h)+f(a+4h) + ・・・ +f(a+(n-2)h)+4f(a+(n-1)h)+f(a+nh)]/3 =h[f(a)+f(a+nh) +4(f(a+h)+f(a+3h)+・・・+f(a+(n-1)h)) +2(f(a+2h)+f(a+4h)+・・・+f(a+(n-2)h))]/3 これで積分値が求まる a b

Simpson公式のプログラム 積分区間と分割数を読み込んで,Simpson公式による数値積分を行う 関数f(x) はプログラム中に記述

#include <stdio.h> #include <math.h> double f(double x) { return exp(-x*x); } main() int i, num; double S, a, b, x, d; char buf[100]; printf("積分区間(a~b) : "); fgets(buf, 100, stdin); sscanf(buf, "%lf %lf", &a, &b); printf("分割数(偶数) : "); fgets(buf,100,stdin); sscanf(buf, "%d", &num); d = (b - a) / num; /* 分割幅 */ S = f(a) + f(b); for(i = 1 ; i < num ; i = i + 2){ x = a + d * i; S = S + 4 * f(x); for(i = 2 ; i < num ; i = i + 2){ S = S + 2 * f(x); S = S * d / 3; /* 面積 */ printf("面積 = %lf\n", S);

実行結果 積分区間(a~b) : 0 1 分割数 : 1000 面積 = 0.746824 積分区間(a~b) : 0 10 f(x) = exp(-x2) 積分区間(a~b) : 0 1 分割数 : 1000 面積 = 0.746824 積分区間(a~b) : 0 10 分割数 : 1000000 面積 = 0.886277

練習問題1 台形則を使って,次を計算せよ 計算結果を,以下と比較せよ log 2 は,およそ 0.6931471805599453

練習問題2  練習問題1について,区間数 n を,n = 4, 8, 16, 32, 64, 128 と変えて計算を行い,刻み幅と誤差の関係を調べよ (A) 区間数 n と誤差の関係を書いたグラフを作成せよ この場合,おおよそ次の関係が成り立っていることを確認せよ (c は定数)