8.数値微分・積分・微分方程式 工学的問題においては 解析的に微分値や積分値を求めたり, 微分方程式を解くことが難しいケースも多い。

Slides:



Advertisements
Similar presentations
2. 数値微分法. 数値微分が必要になる場合として、次の 2 つが考えられる。 関数が与えられていて、その微分を近似的に計算する。 (数値微分の精度が十分で、かつ、計算速度が数値微分の方が 早い場合など。) 離散的な点の上で離散的なデータしかわかっていない関数の微 分を近似的に計算する。(偏微分方程式の数値解を求めたい時.
Advertisements

情報基礎実習 I (第6回) 木曜4・5限 担当:北川 晃. Stream クラスを用いたファイルの接続 … Dim インスタンス名 As New IO.StreamReader( _ “ ファイルの絶対パス ”, _ System.Text.Encoding.Default) … s = インスタンス名.
8.4 偏微分方程式の数値解 法 [偏微分の復習 (1)] のとき このこの と を 座標系の座標値とすると, と は独立。お互いに直交する値であるから, は意味がない。
数値解析シラバス C言語環境と数値解析の概要(1 回) C言語環境と数値解析の概要(1 回) 方程式の根(1回) 方程式の根(1回) 連立一次方程式(2回) 連立一次方程式(2回) 補間と近似(2回) 補間と近似(2回) 数値積分(1回) 数値積分(1回) 中間試験(1回) 中間試験(1回) 常微分方程式(1回)
5.制御構造と配列 場合分け( If Then Else , Select Case ) 繰返し( Do While ) 繰返しその2( For Next )
データ解析
有限差分法による 時間発展問題の解法の基礎
Fortran と有限差分法の 入門の入門の…
徳山 豪・全 眞嬉 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野
情報基礎実習I (第7回) 木曜4・5限 担当:北川 晃.
4.3 連立1次方程式   Ax = b   (23) と書くことができる。
6.3 2次元DFT (1)2次元DFTとは 画像のような2次元信号をサンプリングしたデータを 2次元DFTを
解析的には解が得られない 方程式を数値的に求める。 例:3次方程式
VBA H106077 寺沢友宏.
3 一次関数 1章 一次関数とグラフ §3 一次関数の式を求めること          (3時間).
スペクトル法による数値計算の原理 -一次元線形・非線形移流問題の場合-
常微分方程式と偏微分方程式 1.常微分方程式 独立変数が一個のもの 振動の運動方程式 2.偏微分方程式 独立変数が二個以上のもの
重力3体問題の数値積分Integration of 3-body encounter.
IT入門B2 ー 連立一次方程式 ー.
情報基礎A 第14週プログラミング 実際のデータ処理での応用(2)
4.2 連立非線形方程式 (1)繰返し法による方法
数値解析シラバス C言語環境と数値解析の概要(1回) 方程式の根(1回) 連立一次方程式(2回) 補間と近似(2回) 数値積分(1回)
6.4 コード最適化 (1)コード最適化(code optimization)
6.4 離散的コサイン変換 (DCT : discrete cosine transform ) (1)DCTとは
数楽(微分方程式を使おう!) ~第4章 他分野への応用(上級編)~
電気回路Ⅱ 演習 特別編(数学) 三角関数 オイラーの公式 微分積分 微分方程式 付録 三角関数関連の公式
誤差の二乗和の一次導関数 偏微分.
テキストボックス、チェックボックス×2、コマンドボタンを配置する。 コマンドボタンに機能を与える
情報科学 第6回 数値解析(1).
データ解析 静岡大学工学部 安藤和敏
本時の目標 「簡単なプログラム言語の意味を理解し、マクロ機能を使って簡単なプログラムを作ることができる。」
スペクトル法の一部の基礎の初歩への はじめの一歩
電気・機械・情報概論 VBAプログラミング 第2回 2018年7月2日
情報実習I (第6回) 木曜4・5限 担当:北川 晃.
相関.
12.数値微分と数値積分.
ルンゲクッタ法 となる微分方程式の解を数値的に解く方法.
実践プログラミング入門2 配列を使ってゲームを作ろう 徳山 豪 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野.
情報基礎Ⅱ (第11回) 月曜4限 担当:北川 晃.
すべてのレポートの提出期限 1月22日 火曜日 これ以降は特殊な理由が無い限り レポートを受け取りません!
原子動力工学特論 レポート1 交通電子機械工学専攻 齋藤 泰治.
「入力」はInputBoxやテキストボックスに限らず、 セルからのデータの入力や、チェックボックス等からの入力全てを含める。
情報基礎Ⅱ (第5回) 月曜4限 担当:北川 晃.
「データ学習アルゴリズム」 第3章 複雑な学習モデル 報告者 佐々木 稔 2003年6月25日 3.1 関数近似モデル
先週の復習 2重ループを用いた、 表の記入と読み込み.
データ解析 静岡大学工学部 安藤和敏
情報工学Ⅱ (第9回) 月曜4限 担当:北川 晃.
データ解析 静岡大学工学部 安藤和敏
情報科学 第6回 数値解析(1).
数値解析 第6章.
パターン認識特論 カーネル主成分分析 和田俊和.
情報実習I (第6回) 木曜4・5限 担当:北川 晃.
Cプログラミング演習 ニュートン法による方程式の求解.
アルゴリズムの視覚化 この図は左が大きく、 右が小さくなるようにソートしている  この図は左が大きく、  右が小さくなるようにソートしている
3 一次関数 1章 一次関数とグラフ §4 方程式とグラフ         (3時間).
ねらい 数値積分を例題に、擬似コードのアルゴリズムをプログラムにする。
場合分け(If Then Else,Select Case) 繰返し(Do While) 繰返しその2(For Next)
6.2 高速フーリエ変換 (1)FFT(fast Fourier transform)とは
6.5 アダマール(Hadamard)変換 (1)アダマール変換とは
共振を防ぐように設計を行ったり, 振動を早く減衰させる設計を行う際, 固有値と固有ベクトルを求めることが重要
7.2 回帰曲線 身長と体重…関係がありそう? ??? 身長と体重の関係をグラフで観察する.
3.テキストボックスによる データ入力 データ入力と表示のプログラム.
コンピュータの高速化により, 即座に計算できるようになってきたが, 手法的にはコンピュータ出現以前に考え出された 方法が数多く使われている。
プログラミング言語によっては,複素数が使えない。
6.ユーザ定義型.
情報基礎A 第14週プログラミング 実際のデータ処理での応用(2)
5.2 グレゴリー・ニュートン(Gregory-Newton)の補間式 (1)導入
8.2 数値積分 (1)どんなときに数値積分を行うのか?
5.3 ラグランジェ(Lagrange)の補間式
固体→液体 液体→固体 ヒント P131  クラペイロンの式 左辺の微分式を有限値で近似すると?
Presentation transcript:

8.数値微分・積分・微分方程式 工学的問題においては 解析的に微分値や積分値を求めたり, 微分方程式を解くことが難しいケースも多い。 このような場合は数値的に解かざるを得ない。

8.1 数値微分 (1)差分法を用いる 関数 の における微分係数 の定義 : 刻み幅 差分近似 [前進差分近似] [中心差分近似] 8.1 数値微分 (1)差分法を用いる 関数 の における微分係数 の定義 : 刻み幅 差分近似 [前進差分近似] [中心差分近似] [後退差分近似]

(2)差分法の誤差 ①刻み幅が大きいと, 誤差が大きい(打切り誤差)。 ②刻み誤差が小さ過ぎると, 丸め誤差による誤差が大きくなる。

①前進差分法の打切り誤差 前進差分では,以下のテーラ展開から導く を代入して,整理すると。 に比例した打切り誤差

②後退差分法の打切り誤差 後退差分では,以下のテーラ展開から導く を代入して,整理すると。 に比例した打切り誤差

③中心差分法の打切り誤差 後退差分では,以下の2つのテーラ展開から導く を代入して,整理すると。 に比例した打切り誤差

誤差の比較(1) 前進差分,後退差分,中心差分をExcelで式定期

前進差分や後退差分に比べ,中心差分の誤差が少ない!! 誤差の比較(2)

微分値は,ほとんど中心差分と重なっているが… 誤差の比較(3) 細かくみると 誤差はある…

刻み幅が小さくなると誤差が減るが 刻み幅による誤差の比較 小さすぎると丸め誤差が大きくなる 誤差 刻み幅 h

[参考] 刻み幅による誤差データの生成プログラム(1) Function FX(X) As Single X2 = X * X: X3 = X2 * X: X4 = X3 * X FX = X4 + X3 + X2 + X + 1 End Function Function DFX(X) As Double X2 = X * X: X3 = X2 * X DFX = 4 * X3 + 3 * X2 + 2 * X + 1 誤差の影響を大きくするために,あえて関数値はSingle, 微分値はDoubleにしてある。 次のページの変数値も同様である。

[参考] 刻み幅による誤差データの生成プログラム(2) Sub ボタン1_Click() Dim DF1 As Single: Dim DF2 As Single With Worksheets("Sheet2") h = 0.1 For i = 1 To 100 DF = DFX(1) ‘ 真値 DF1 = (FX(1 + h) - FX(1)) / h ‘ 前進差分 DF2 = (FX(1 + h) - FX(1 - h)) / (2 * h) ‘ 中心差分 G1 = Abs(DF1 - DF) ‘ 誤差の計算 G2 = Abs(DF2 - DF) .Cells(i + 1, 1) = h .Cells(i + 1, 2) = G1 .Cells(i + 1, 3) = G2 h = h / 1.2 Next End With End Sub

VBAによる表現 ①Excelシートの定義 EFG列は,2行目以降は空白にして, 差分の結果を入れるセルとする。

VBAによる表現 ②データ宣言とデータ設定 VBAによる表現 ②データ宣言とデータ設定 Private DX As Double Private Y() As Double Private DY() As Double Private N As Double Sub データ設定() With Worksheets("Sheet4") i = 2 ‘  入っているデータをカウントする。 Do While .Cells(i, 2) <> "": i = i + 1: Loop N = i - 2 ReDim Y(N), DY(N) DX = .Cells(2, 1) For i = 1 To N Y(i) = .Cells(i + 1, 3) Next End With End Sub

VBAによる表現 ③結果設定とボタンのClickイベントハンドラ Sub 結果設定(DY, Ist, N, ID) With Worksheets("Sheet4") For i = Ist To N .Cells(i + 1, ID) = DY(i) Next End With End Sub Sub Sheet4_ボタン1_Click() データ設定 前進差分 DX, Y, DY, N 結果設定 DY, 1, N - 1, 5 後退差分 DX, Y, DY, N 結果設定 DY, 2, N, 6 中心差分 DX, Y, DY, N 結果設定 DY, 2, N - 1, 7 Sub 前進差分(DX, Y, DY, N) For i = 1 To N - 1 DY(i) = (Y(i + 1) - Y(i)) / DX Sub 後退差分(DX, Y, DY, N) For i = 2 To N DY(i) = (Y(i) - Y(i - 1)) / DX Sub 中心差分(DX, Y, DY, N) For i = 2 To N - 1 DY(i) = (Y(i + 1) - Y(i - 1)) / (2 * DX)

VBAによる表現 ④各差分の定義 Sub 前進差分(DX, Y, DY, N) For i = 1 To N - 1 VBAによる表現 ④各差分の定義 Sub 前進差分(DX, Y, DY, N) For i = 1 To N - 1 DY(i) = (Y(i + 1) - Y(i)) / DX Next End Sub Sub 後退差分(DX, Y, DY, N) For i = 2 To N DY(i) = (Y(i) - Y(i - 1)) / DX Sub 中心差分(DX, Y, DY, N) For i = 2 To N - 1 DY(i) = (Y(i + 1) - Y(i - 1)) / (2 * DX)

(3)高次の差分法 をテーラ展開し

(3)高次の差分法 を1次の式に代入し したがって, 2次の前進差分

(3)高次の差分法 同様に,2次の後退差分,中心差分も求めることができる。 2次の後退差分 2次の中心差分

前進差分における1次と2次の誤差 同様に,2次の後退差分,中心差分でも確認してみよう。