1 / 39

関数補間と近似式

関数補間と近似式. 数個、数十個のデータ点から その特徴をつかむ. 補間  データ点上を必ず通過する近似. 近似(最小2乗法)  データ点に近い点を通る近似. y. y. x. x. 関数の近似法. エクセルで求める. エクセルによる補間法. エクセルによる補間法. ドラグ. エクセルによる補間法. 挿入. グラフ. 散布図. エクセルによる補間法. エクセルによる補間法. 右クリック. 近似式の追加. エクセルによる補間法. 1次式. 2次式. 3次式. エクセルによる補間法. y. x. 補間法.

taima
Download Presentation

関数補間と近似式

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. エクセルで求める

  4. エクセルによる補間法

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

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

  7. エクセルによる補間法

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

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

  10. エクセルによる補間法

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

  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 x03a0 y0 1 x1 x12 x13a1 y1 = 1 x2 x22 x23a2 y2 1 x3 x32 x33a3 y3 掃き出し法orガウスザイデル法?

  15. 連立方程式で求める

  16. 多項式の係数の求め方 1 x0 x02 x03a0 y0 1 x1 x12 x13a1 y1 = 1 x2 x22 x23a2 y2 1 x3 x32 x33a3 y3 掃き出し法orガウスザイデル法?

  17. 多項式の係数の求め方 1 x0 x02 x03a0 y0 1 x1 x12 x13a1 y1 = 1 x2 x22 x23a2 y2 1 x3 x32 x33a3 y3 掃き出し法orガウスザイデル法?

  18. #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= a20+ a21x + a22x2

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

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

  26. ラグランジュの補間法 y = a0(x – x1)(x – x2) (x1, y1) を通過 (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) y0= a0(x0 – x1)(x0 – x2)(x0 – x3) y y0 a0= (x0 – x1)(x0 – x2)(x0 – x3) (x0, y0) (x2, y2) x (x3, y3) (x1, y1)

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

  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 = + ・・・・ (x0 – x1)(x0 – x2)・・・ (x0 – xn) 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 = + ・・・・ (x0 – x1)(x0 – x2)・・・ (x0 – xn) 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 = 0(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. 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])

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

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

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

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

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

More Related