Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "数個、数十個のデータ点から その特徴をつかむ"— Presentation transcript:

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

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

3 エクセルで求める x y

4 エクセルによる補間法

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

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

7 エクセルによる補間法

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

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

10 エクセルによる補間法

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

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

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

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

15 連立方程式で求める x y

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

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

18 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

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

20 x0 x1 x3 x2

21 掃き出し法のデータ入力を変更 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); }

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

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

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

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

26 ラグランジュの補間法 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)

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

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

29 ラグランジュの補間法 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)

30 ラグランジュの補間法(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)

31 ラグランジュの補間法(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)

32 プログラミング化 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 = (x[i]-x[0]) (x[i]-x[j]) (x[i]-x[j])

33 #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;

34 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 (x-x[0]) (x-x[j]) (x-x(N)) y = S y[i] ・・ ・・ i = (x[i]-x[0]) (x[i]-x[j]) (x[i]-x[j])

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

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

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

38 エクセルで多項式近似 とスプラインを比較 x y

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


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

Similar presentations


Ads by Google