数個、数十個のデータ点から その特徴をつかむ

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

中学数学2年 3 章 一次関数 3 一次関数の利用 § 1 一次関数の利用 (4時間) §1 §1 一次関数の利用 サイクリングで京都から神戸まで行くことにした。 朝出発して、 9 時にはあと 90km の地点を通過した。 さらに進んでいくと、 13 時にはあと 30km の地点を 通過した。 このペースで進み続けると、神戸には何.
数値解析シラバス C言語環境と数値解析の概要(1 回) C言語環境と数値解析の概要(1 回) 方程式の根(1回) 方程式の根(1回) 連立一次方程式(2回) 連立一次方程式(2回) 補間と近似(2回) 補間と近似(2回) 数値積分(1回) 数値積分(1回) 中間試験(1回) 中間試験(1回) 常微分方程式(1回)
1. 補間多項式 n 次の多項式 とは、単項式 の 線形結合の事である。 Definitions: ( 区間, 連続関数, abscissas (データ点、格子点、差分点), 多項 式 ) Theorem. (補間多項式の存在と一意性) 各 i = 0, …, n について、 をみたす、次数が高々 n.
データ解析
配列の宣言 配列要素の初期値 配列の上限 メモリ領域 多次元配列 配列の応用
電子情報工学科5年(前期) 7回目(21/5/2015) 担当:古山彰一
プログラミング論 数値積分
プログラミング論 I 補間
第13回構造体.
4.3 連立1次方程式   Ax = b   (23) と書くことができる。
第12回構造体.
解析的には解が得られない 方程式を数値的に求める。 例:3次方程式
基礎プログラミングおよび演習 第9回
一次関数のグラフ(式を求めること) 本時の流れ ねらい「グラフや座標など与えられた条件をもとに一次 関数の式を求める。」 ↓
一次関数のグラフ(式を求めること) 本時の流れ ねらい「グラフや座標など与えられた条件をもとに一次 関数の式を求める。」 ↓
連立一次方程式 a11x1+a12x2+a13x3+...+a1nxn= b1
3 一次関数 1章 一次関数とグラフ §3 一次関数の式を求めること          (3時間).
Scilab で学ぶ  わかりやすい数値計算法 舞鶴高専 電子制御工学科 川田 昌克.
原子動力工学特論 課題 3、4 交通電子機械工学専攻   齋藤 泰治.
P129 モンテカルロ シミュレーション 乱数を使ったシミュレーション.
常微分方程式と偏微分方程式 1.常微分方程式 独立変数が一個のもの 振動の運動方程式 2.偏微分方程式 独立変数が二個以上のもの
IT入門B2 ー 連立一次方程式 ー.
数値解析シラバス C言語環境と数値解析の概要(1回) 方程式の根(1回) 連立一次方程式(2回) 補間と近似(2回) 数値積分(1回)
非線形方程式の近似解 (2分法,はさみうち法,Newton-Raphson法)
2008年6月12日 非線形方程式の近似解 Newton-Raphson法
データ解析 静岡大学工学部 安藤和敏
数学 ---> 抽象化、一般化 より複雑な関係ー>解析学 一次関数 y=ax+b より多くの要素ー>線形代数 x y f(x) y1 x1
確率・統計Ⅰ 第3回 確率変数の独立性 / 確率変数の平均 ここです! 確率論とは 確率変数、確率分布 確率変数の独立性 / 確率変数の平均
関数と配列とポインタ 1次元配列 2次元配列 配列を使って結果を返す 演習問題
数値積分.
プログラミング論 II 2008年吉日 主成分分析 数値積分
第10回関数 Ⅱ (ローカル変数とスコープ).
フーリエ級数展開 ~矩形波について~ 長江 栞 中島 涼 中村 勇樹
傾きがわかった関数の軌跡を求める. 変数は二つ以上
プログラミング演習I 行列計算と線形方程式の求解
LU分解を用いた連立一次方程式.
Curriki原典
最小自乗法.
第10回 FIR回路とIIR回路.
2分法のプログラム作成方法 2分法のプログラム(全体構成) プログラム作成要領 2分法のメイン関数(変数宣言)
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
疑似乱数, モンテカルロ法によるシミュレーション
実数列を生成する際の注意 数学関数の利用 Excel によるリサージュ図形描画 Excel による対数グラフ描画
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
プログラミング序論演習.
「データ学習アルゴリズム」 第3章 複雑な学習モデル 報告者 佐々木 稔 2003年6月25日 3.1 関数近似モデル
計測工学 計測工学8 最小二乗法3 計測工学の8回目です。 最小二乗法を簡単な一時関数以外の関数に適用する方法を学びます。
プログラミング序論演習.
データ解析 静岡大学工学部 安藤和敏
補講:アルゴリズムと漸近的評価.
連立一次方程式 a11x1+a12x2+a13x3+...+a1nxn= b1
回帰分析(Regression Analysis)
データ解析 静岡大学工学部 安藤和敏
復習 Cにおけるループからの脱出と制御 break ループを強制終了する.if文と組み合わせて利用するのが一般的. continue
データ解析 静岡大学工学部 安藤和敏
数値解析 第6章.
プログラミング論 相関
2008年6月5日 非線形方程式の近似解 2分法,はさみうち法,Newton-Raphson法)
ニュートン法による 非線型方程式の解.
実数列を生成する際の注意 数学関数の利用 Excel によるリサージュ図形描画 Excel による対数グラフ描画
cp-15. 疑似乱数とシミュレーション (C プログラミング演習,Visual Studio 2019 対応)
Cプログラミング演習 ニュートン法による方程式の求解.
3 一次関数 1章 一次関数とグラフ §4 方程式とグラフ         (3時間).
7.2 回帰曲線 身長と体重…関係がありそう? ??? 身長と体重の関係をグラフで観察する.
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
PADのテンプレート 処理、連接 x0 ← x x ← x0+ u(x0) err ← |x - x0| 判断(選択) x2 ← x3
プログラミング言語によっては,複素数が使えない。
プログラミング演習I 補講用課題
5.3 ラグランジェ(Lagrange)の補間式
Presentation transcript:

数個、数十個のデータ点から その特徴をつかむ 関数補間と近似式 数個、数十個のデータ点から その特徴をつかむ

関数の近似法 補間  データ点上を必ず通過する近似 近似(最小2乗法)  データ点に近い点を通る近似 x y x y

エクセルで求める x y 0 2 1 3 4

エクセルによる補間法

エクセルによる補間法 ドラグ

エクセルによる補間法 挿入 グラフ 散布図

エクセルによる補間法

エクセルによる補間法 右クリック 近似式の追加

エクセルによる補間法 1次式 2次式 3次式

エクセルによる補間法

補間法 y = a0 + a1x + a2x2 + a3x3 多項式 補間 データ点上を必ず通過する近似  例:多項式近似 データ数4点 → 3次式 y = a0 + a1x + a2x2 + a3x3 x y 多項式 補間

多項式の係数の求め方 (マトリックスを解く方法) 入れ替え y0 = a0 + a1x0 + a2x02 + a3x03 y1 = a0 + a1x1 + a2x12 + a3x13 y2 = a0 + a1x2 + a2x22 + a3x23 y3 = a0 + a1x3 + a2x32 + a3x33

多項式の係数の求め方 (マトリックスを解く方法) a0 + a1x0 + a2x02 + a3x03 = y0 a0 + a1x1 + a2x12 + a3x13 = y1 a0 + a1x2 + a2x22 + a3x23 = y2 a0 + a1x3 + a2x32 + a3x33 = y3

多項式の係数の求め方 1 x0 x02 x03 a0 y0 1 x1 x12 x13 a1 y1 = 1 x2 x22 x23 a2 y2 掃き出し法orガウスザイデル法?

連立方程式で求める x y 0 2 1 3 4

多項式の係数の求め方 1 x0 x02 x03 a0 y0 1 x1 x12 x13 a1 y1 = 1 x2 x22 x23 a2 y2 0 2 1 3 4 1 x0 x02 x03 a0 y0 1 x1 x12 x13 a1 y1 = 1 x2 x22 x23 a2 y2 1 x3 x32 x33 a3 y3 掃き出し法orガウスザイデル法?

多項式の係数の求め方 1 x0 x02 x03 a0 y0 1 x1 x12 x13 a1 y1 = 1 x2 x22 x23 a2 y2 0 2 1 3 4 1 x0 x02 x03 a0 y0 1 x1 x12 x13 a1 y1 = 1 x2 x22 x23 a2 y2 1 x3 x32 x33 a3 y3 掃き出し法orガウスザイデル法?

x0 #define N 4 #define EPS .001 int main() { double a[N][N+1]={ { 1, 0, 0, 0, 2}, { 1, 1, 1, 1, 1}, { 1, 2, 4, 8, 3}, { 1, 3, 9, 27, 4}}; 教科書 20P x0 いつも1

エクセルによる補間法 3次近似式右クリック 近似曲線式の書式決定 グラフに数式を表示する

x0 x1 x3 x2

掃き出し法のデータ入力を変更 double a[N][N+1]; double x[N]={0.0, 1.0, 2.0, 3.0}; double y[N]={2.0, 1.0, 3.0, 4.0}; double pivot, del; int i, j, k, l; for(i=0;i<N;i++){ a[i][0]=1.0; a[i][N]=y[i]; for(j=1;j<N;j++) a[i][j]=pow(x[i],(double)j); }

ラグランジュの補間法 y (x0, y0) (x2, y2) x (x1, y1) 求めたい式

ラグランジュの補間の基礎 y = a00 + a01x + a02x2 y = a10 + a11x + a12x2 二次関数 の足し算は y = a10 + a11x + a12x2 y = a20 + a21x + a22x2

ラグランジュの補間法 y (x0, y0) (x2, y2) ③ ① x ② (x1, y1)

ラグランジュの補間法 y = a0(x – x1)(x – x2) y (x0, y0) (x2, y2) x (x1, y1) 二つの点の y 座標がゼロ

ラグランジュの補間法 y = a0(x – x1)(x – x2) y0 = a0(x0 – x1)(x0 – x2) y0 a0 = を通過 (x2, y2) y0 = a0(x0 – x1)(x0 – x2) y (x0, y0)を通過 y0 a0 = (x0 – x1)(x0 – x2) (x0, y0) (x2, y2) x (x1, y1)

ラグランジュの補間法(3次式) y = a0(x – x1)(x – x2)(x – x3) (x0, y0) (x2, y2) x (x1, y1) (x3, y3)

ラグランジュの補間法 y0 (x – x1)(x – x2) y = (x0 – x1)(x0 – x2) a0 y (x0, y0)

ラグランジュの補間法 y0 (x – x1)(x – x2) y1 (x – x2)(x – x0) y = + (x0 – x1)(x0 – x2) (x1 – x2)(x1 – x0) y2 (x – x0)(x – x1) + (x2 – x0)(x2 – x1) y (x0, y0) (x2, y2) x (x1, y1)

ラグランジュの補間法(n次関数) y0 (x – x1)(x – x2)・・・ (x – xn) y = + ・・・・ yn (x – x0)(x – x1)・・・(x – xn) + (xn – x0)(xn – x1)・・・(xn – xn-1) y (x0, y0) (xn, yn) x (x1, y1)

ラグランジュの補間法(n次関数) y0 (x – x1)(x – x2)・・・ (x – xn) y = + ・・・・ yi (x – x0)・・・(x – xi)・・・(x – xj)・・・(x – xn) + (xi – x0)・・・(xi – xi)・・・(xi – xj)・・・(xi – xn-1) i = j のときなし! yn (x – x0)(x – x1)・・・(x – xn) + (xn – x0)(xn – x1)・・・(xn – xn-1)

プログラミング化 n yi (x – x0)・・・(x – xi)・・・(x – xj)・・・(x – xn) y = S i = 0 (xi – x0)・・・(xi – xi)・・・(xi – xj)・・・(xi – xn-1) N-1 (x-x[0]) (x-x[j]) (x-x(N)) = S y[i] ・・ ・・ i = 0 (x[i]-x[0]) (x[i]-x[j]) (x[i]-x[j])

#include <stdio.h> #include <math.h> #define N 6 double x[N]={0.0, 1.0, 2.0, 3.0, 3.1, 5.0}; double y[N]={0.0, 1.1, 2.5, 4.0, 4.1, 5.0}; double lagrange( double ); int main( ){ double xx, yy; printf("XX\t\tYY\n"); for(xx=0.0; xx<=5.0; xx+=.2) { yy = lagrange( xx ); printf("%8.2lf\t%8.2lf\n",xx, yy); } return 0;

N-1 (x-x[0]) (x-x[j]) (x-x(N)) y = S y[i] ・・ ・・ double lagrange( double xx ) { double z[N]; double yy = 0.0; int i, j; for(i=0;i<N;i++) z[i] = 1.0; for(j=0;j<N;j++) if(i!=j) z[i] *= (xx - x[j])/(x[i] - x[j]); yy += z[i]*y[i]; } return yy; N-1 (x-x[0]) (x-x[j]) (x-x(N)) y = S y[i] ・・ ・・ i = 0 (x[i]-x[0]) (x[i]-x[j]) (x[i]-x[j])

スプライン補間 各区間を3次関数で近似する。 各区間の端点で、 1.値が関数と同じ 2.傾きが隣の区間と同じ 3.曲率が隣の区間と同じ  各区間の端点で、 1.値が関数と同じ 2.傾きが隣の区間と同じ 3.曲率が隣の区間と同じ y 異なった近似式 x

スプライン補間 y = a10 + a11x + a12x2 + a13x3 y = a20 + a21x + a22x2 + a23x3 ① y = a20 + a21x + a22x2 + a23x3 ② y = a30 + a31x + a32x2 + a33x3 ③ y 未知数 12個 ③ ② ① x

スプライン補間 計12個 値が関数と同じ 条件 6個 傾きが隣と同じ 条件 2個 曲率が隣と同じ 条件 2個 両端は曲率ゼロ 条件 2個 y 条件 6個 傾きが隣と同じ 条件 2個 曲率が隣と同じ 条件 2個 両端は曲率ゼロ 条件 2個 y ③ ② ① x

エクセルで多項式近似 とスプラインを比較 x y 0 2 1 3 4

多項式近似とスプライン 多項式近似 スプライン