C言語による数値計算プログラミング演習

Similar documents
C言語による数値計算プログラミング演習

C言語による数値計算プログラミング演習

f : R R f(x, y) = x + y axy f = 0, x + y axy = 0 y 直線 x+y+a=0 に漸近し 原点で交叉する美しい形をしている x +y axy=0 X+Y+a=0 o x t x = at 1 + t, y = at (a > 0) 1 + t f(x, y

Taro-数値計算の基礎Ⅱ(公開版)

5.. z = f(x, y) y y = b f x x g(x) f(x, b) g x ( ) A = lim h 0 g(a + h) g(a) h g(x) a A = g (a) = f x (a, b)

最小二乗フィット、カイ二乗フィット、gnuplot

入試の軌跡

.1 z = e x +xy y z y 1 1 x 0 1 z x y α β γ z = αx + βy + γ (.1) ax + by + cz = d (.1') a, b, c, d x-y-z (a, b, c). x-y-z 3 (0,

7. y fx, z gy z gfx dz dx dz dy dy dx. g f a g bf a b fa 7., chain ule Ω, D R n, R m a Ω, f : Ω R m, g : D R l, fω D, b fa, f a g b g f a g f a g bf a


1/1 lim f(x, y) (x,y) (a,b) ( ) ( ) lim limf(x, y) lim lim f(x, y) x a y b y b x a ( ) ( ) xy x lim lim lim lim x y x y x + y y x x + y x x lim x x 1

6kg 1.1m 1.m.1m.1 l λ ϵ λ l + λ l l l dl dl + dλ ϵ dλ dl dl + dλ dl dl 3 1. JIS 1 6kg 1% 66kg 1 13 σ a1 σ m σ a1 σ m σ m σ a1 f f σ a1 σ a1 σ m f 4

= π2 6, ( ) = π 4, ( ). 1 ( ( 5) ) ( 9 1 ( ( ) ) (

変 位 変位とは 物体中のある点が変形後に 別の点に異動したときの位置の変化で あり ベクトル量である 変位には 物体の変形の他に剛体運動 剛体変位 が含まれている 剛体変位 P(x, y, z) 平行移動と回転 P! (x + u, y + v, z + w) Q(x + d x, y + dy,

NewBead_no27_0623.indd

PowerPoint Presentation

モデリングとは

8. 自由曲線と曲面の概要 陽関数 陰関数 f x f x x y y y f f x y z g x y z パラメータ表現された 次元曲線 パラメータ表現は xyx 毎のパラメータによる陽関数表現 形状普遍性 座標独立性 曲線上の点を直接に計算可能 多価の曲線も表現可能 gx 低次の多項式は 計

Microsoft Word - 資料 (テイラー級数と数値積分).docx

II Time-stamp: <05/09/30 17:14:06 waki> ii

x () g(x) = f(t) dt f(x), F (x) 3x () g(x) g (x) f(x), F (x) (3) h(x) = x 3x tf(t) dt.9 = {(x, y) ; x, y, x + y } f(x, y) = xy( x y). h (x) f(x), F (x



A µ : A A A µ(x, y) x y (x y) z = x (y z) A x, y, z x y = y x A x, y A e x e = e x = x A x e A e x A xy = yx = e y x x x y y = x A (1)

5.. z = f(x, y) y y = b f x x g(x) f(x, b) g x ( ) A = lim h g(a + h) g(a) h g(x) a A = g (a) = f x (a, b)

..3. Ω, Ω F, P Ω, F, P ). ) F a) A, A,..., A i,... F A i F. b) A F A c F c) Ω F. ) A F A P A),. a) 0 P A) b) P Ω) c) [ ] A, A,..., A i,... F i j A i A

( ) ) ) ) 5) 1 J = σe 2 6) ) 9) 1955 Statistical-Mechanical Theory of Irreversible Processes )

統計学のポイント整理

Gmech08.dvi

³ÎΨÏÀ

Microsoft Word - NumericalComputation.docx

l µ l µ l 0 (1, x r, y r, z r ) 1 r (1, x r, y r, z r ) l µ g µν η µν 2ml µ l ν 1 2m r 2mx r 2 2my r 2 2mz r 2 2mx r 2 1 2mx2 2mxy 2mxz 2my r 2mz 2 r


1 No.1 5 C 1 I III F 1 F 2 F 1 F 2 2 Φ 2 (t) = Φ 1 (t) Φ 1 (t t). = Φ 1(t) t = ( 1.5e 0.5t 2.4e 4t 2e 10t ) τ < 0 t > τ Φ 2 (t) < 0 lim t Φ 2 (t) = 0

,. Black-Scholes u t t, x c u 0 t, x x u t t, x c u t, x x u t t, x + σ x u t, x + rx ut, x rux, t 0 x x,,.,. Step 3, 7,,, Step 6., Step 4,. Step 5,,.

4 4 4 a b c d a b A c d A a da ad bce O E O n A n O ad bc a d n A n O 5 {a n } S n a k n a n + k S n a a n+ S n n S n n log x x {xy } x, y x + y 7 fx


BD = a, EA = b, BH = a, BF = b 3 EF B, EOA, BOD EF B EOA BF : AO = BE : AE, b : = BE : b, AF = BF = b BE = bb. () EF = b AF = b b. (2) EF B BOD EF : B

, x R, f (x),, df dx : R R,, f : R R, f(x) ( ).,, f (a) d f dx (a), f (a) d3 f dx 3 (a),, f (n) (a) dn f dx n (a), f d f dx, f d3 f dx 3,, f (n) dn f

Microsoft Word - 03-数値計算の基礎.docx

微分方程式 モデリングとシミュレーション


行列代数2010A

NumericalProg09

.3. (x, x = (, u = = 4 (, x x = 4 x, x 0 x = 0 x = 4 x.4. ( z + z = 8 z, z 0 (z, z = (0, 8, (,, (8, 0 3 (0, 8, (,, (8, 0 z = z 4 z (g f(x = g(

40 6 y mx x, y 0, 0 x 0. x,y 0,0 y x + y x 0 mx x + mx m + m m 7 sin y x, x x sin y x x. x sin y x,y 0,0 x 0. 8 x r cos θ y r sin θ x, y 0, 0, r 0. x,

二次関数 1 二次関数とは ともなって変化する 2 つの数 ( 変数 ) x, y があります x y つの変数 x, y が, 表のように変化するとき y は x の二次関数 といいます また,2 つの変数を式に表すと, 2 y x となりま

No δs δs = r + δr r = δr (3) δs δs = r r = δr + u(r + δr, t) u(r, t) (4) δr = (δx, δy, δz) u i (r + δr, t) u i (r, t) = u i x j δx j (5) δs 2

F S S S S S S S 32 S S S 32: S S rot F ds = F d l (63) S S S 0 F rot F ds = 0 S (63) S rot F S S S S S rot F F (63)

数値計算:有限要素法

DVIOUT

i

9 2 1 f(x, y) = xy sin x cos y x y cos y y x sin x d (x, y) = y cos y (x sin x) = y cos y(sin x + x cos x) x dx d (x, y) = x sin x (y cos y) = x sin x

熊本県数学問題正解

. p.1/14

C言語による数値計算プログラミング演習

応力とひずみ.ppt

Microsoft PowerPoint - H22制御工学I-2回.ppt

1 X X T T X (topology) T X (open set) (X, T ) (topological space) ( ) T1 T, X T T2 T T T3 T T ( ) ( ) T1 X T2 T3 1 X T = {, X} X (X, T ) indiscrete sp

r 1 m A r/m i) t ii) m i) t B(t; m) ( B(t; m) = A 1 + r ) mt m ii) B(t; m) ( B(t; m) = A 1 + r ) mt m { ( = A 1 + r ) m } rt r m n = m r m n B

14 化学実験法 II( 吉村 ( 洋 mmol/l の半分だったから さんの測定値は くんの測定値の 4 倍の重みがあり 推定値 としては 0.68 mmol/l その標準偏差は mmol/l 程度ということになる 測定値を 特徴づけるパラメータ t を推定するこの手

v er.1/ c /(21)

(, Goo Ishikawa, Go-o Ishikawa) ( ) 1

HITACHI 液晶プロジェクター CP-AX3505J/CP-AW3005J 取扱説明書 -詳細版- 【技術情報編】

FX ) 2

FX自己アフリエイトマニュアル

Transcription:

6. 関数近似 : 補間と補外 6. ラグランジュ補間法 互いに異なる点 x,x,,x とそれらの点における関数値 f(x ),f(x ),,f(x ) が与えられているとする これらの 点を補間するたかだか - 次の補間多項式 F (x) は, ラグランジュ基底関数 L k (-) (x) を用いて ( ) () F( x) = f( xk) Lk ( x) k= L ( x ) = と書ける これは, 次の多項式 を導入すると ( x x )( x x ) L( x x )( x x ) L( x x ) ( ) k k+ k l ( xk x)( xk x) L( xk xk )( xk xk+ ) L( xk x π ( x) = ( x x )( x x ) L ( x x ) ( ) = ( )( ) L( )( ) L ( ) π x k xk x xk x xk xk xk xk+ xk x であるので,() 式は π (x) がくくり出された形でつぎのようにも表すことができる () F ( x) = π ( x) k= f( xk ) ( x x ) π ( x ) k k ) アルゴリズム 6.. () 式に基づくもの : (x,f ),(x,f ),,(x,f ) := 与えられた 点のデータ fx=0 for k= to p=q= for = to f k the p:=p*(x-x ) q:=q*(x k -x ) ed fx:=fx+f k *p/q ed ed プログラム 6.. 3 4 5 6 7 8 9 /* Lagraga terpolato */ /* gve data: values of (x, f) */ /* terpolato pot xx */ /* terpolated value f(xx) s computed */ #clude <stdo.h> #defe NMAX 0

0 3 4 5 6 7 8 9 0 3 4 5 6 7 8 9 30 3 3 33 34 35 36 37 38 39 40 t ; float x[nmax], f[nmax]; vod ma(vod) t,k; float xx,fx,p,q; prtf("lagraga terpolato "); prtf("umber of data? "); scaf("%d",&); for(=0;<;++) prtf("x[%d], f[%d]? ",+,+); scaf("%g%g", &x[], &f[]); prtf("terpolato pot xx? "); scaf("%g", &xx); fx=0; for(k=0;k<;k++) p=; q=; for(=0;<;++) f(!=k) p *= xx-x[]; q *= x[k]-x[]; fx += f[k]*p/q; prtf(" terpolated value at x=%g: ",xx); prtf("f(%g)=%g ",xx,fx); /* read put data */ /* terpolato */ アルゴリズム 6.. () 式に基づくもの : (x,f ),(x,f ),,(x,f ) := 与えられた 点のデータ for k= to q= for = to f k the q:=q(x k -x ) d k :=q ed ed p=, sum=0 for k= to p :=p(x-x k ) σ:=σ+f k /((x-x k )d k ) ed fx:=pσ

プログラム 6.. 3 4 5 6 7 8 9 0 3 4 5 6 7 8 9 0 3 4 5 6 7 8 9 30 3 3 33 34 35 36 37 38 39 40 4 4 43 /* Lagraga terpolato */ /* gve data: values of (x, f) */ /* terpolato pot xx */ /* terpolated value f(xx) s computed */ #clude <stdo.h> #defe NMAX 0 t ; float x[nmax], f[nmax]; vod ma(vod) t,k; float xx,fx,p,q,sum,pd[nmax]; prtf("lagraga terpolato "); prtf("umber of data? "); scaf("%d",&); for(=0;<;++) prtf("x[%d], f[%d]? ",+,+); scaf("%g%g", &x[], &f[]); prtf("terpolato pot xx? "); scaf("%g", &xx); for(k=0;k<;k++) q=; for(=0;<;++) f(!=k) q *=x[k]-x[]; pd[k]=q; p=; sum=0; for(k=0;k<;k++) p *= xx-x[k]; sum += f[k]/((xx-x[k])*pd[k]); fx=p*sum; prtf(" terpolated value at x=%g: ",xx); prtf("f(%g)=%g ",xx,fx); /* d[k] */ /* terpolato */ 問題 水の動粘性係数 ν は, 常温の範囲では以下のとおりである 3

T [ ] ν[m /s] 0.0.30700E-06 5.0.3900E-06 0.0.00400E-06 5.0 8.9800E-07 30.0 8.00800E-07 ラグランジュ補間により, 水温 8. のときの動粘性係数を求めよ 実行例 プログラム 6.., プログラム 6.. とも実行結果は以下のようになる ------------------------- 実行開始 ----------------------- Lagraga terpolato umber of data? 5 x[], f[]? 0.0.307e-6 x[], f[]? 5.0.39e-6 x[3], f[3]? 0.0.004e-6 x[4], f[4]? 5.0 8.98e-7 x[5], f[5]? 30.0 8.008e-7 terpolato pot xx? 8. terpolated value at x=8.: f(8.)=.04948e-06 ------------------------- おしまい ----------------------- 6. スプライン補間法 互いに異なる点 x 0 < x < < x とそれらの点における関数値 y 0 =f(x 0 ),y =f(x ),,y =f(x ) が与えられているとする 小区間 [x -,x ] ごとに 3 次エルミート補間関数 ( 階導関数の連続性を保証 )s (x) を用いると, x x x x x x x x = + + + + + h h h h s ( x) ( 3y hy ) ( y hy ) ( 3y hy ) ( y hy ) h = x x となる 更に隣接する小区間上の補間関数と 階導関数まで連続に接続する条件 s (x )=s + (x ) を課すると,y に関する方程式 3 3 3 3 y + + y + y + = y + y + y +, =,, L, h h h+ h+ h h h+ h+ を得る 端点 x=x 0,x においては, 階微係数が零となる条件を課すると, 3 3 y + y = y + y h h h h 0 0 3 3 y + y = y + y h h h h となる これらは,y に関する三項方程式となっているので, アルゴリズム 4.3. により y は求まる 点 x がどの区間にあるかを判定すれば,x におけるスプライン補間関数 s (x) の値は定まる プログラム 6.. /* Sple Iterpolato */ /* gve data: umber of tervals: */ 4

3 4 5 6 7 8 9 0 3 4 5 6 7 8 9 0 3 4 5 6 7 8 9 30 3 3 33 34 35 36 37 38 39 40 4 4 43 44 45 46 47 48 49 50 5 5 53 /* x_, y_, =0,,..., */ /* terpolated value f(xx) s computed */ /* for x_0 <= xx <= x_ */ #clude <stdo.h> #clude <math.h> #defe NMAX 50 float yy(float xx,float x0,float x,float y0,float y,float dy0,float dy) float z0,z; z0=(xx-x0)/(x-x0); z=(xx-x)/(x0-x); retur(z*z*((3*y0-(x0-x)*dy0)-z*(*y0-(x0-x)*dy0)) +z0*z0*((3*y-(x-x0)*dy)-z0*(*y-(x-x0)*dy))); vod ma(vod) t,,j,m; float x[nmax],y[nmax],h[nmax],a[nmax],b[nmax],c[nmax],d[nmax]; float x0,dx,xx,yyj; /* read put data */ prtf("sple terpolato "); prtf("umber of tervals? "); scaf("%d",&); for(=0;<=;++) prtf("x[%d], y[%d]? ",,); scaf("%g%g", &x[], &y[]); /* set coeffcets of three-term equatos */ for(=;<=;++) h[]=x[]-x[-]; for(=;<;++) a[]=/h[]+/h[+]; b[]=/h[+]; c[]=/h[]; d[]=3/(h[]*h[])*(y[]-y[-]) +3/(h[+]*h[+])*(y[+]-y[]); /* ed-pot codto at x[0] */ a[0]=/h[]; b[0]=/h[]; c[0]=0; d[0]=3/(h[]*h[])*(y[]-y[0]); /* y"=0 */ /* ed-pot codto at x[] */ a[]=/h[]; b[]=0; c[]=/h[]; d[]=3/(h[]*h[])*(y[]-y[-]); /* y"=0 */ /* a[]=; b[]=0; c[]=0; d[]=(y[]-y[-])/h[]; */ /* solve three-term equatos */ /* forward */ b[0] /= a[0]; d[0] /= a[0]; for(=;<=;++) 5

54 55 56 57 58 59 60 6 6 63 64 65 66 67 68 69 70 7 7 73 74 75 76 77 78 79 a[] -= c[]*b[-]; d[] -= c[]*d[-]; d[] /= a[]; b[] /= a[]; for(=-;>=0;--) d[] -=b[]*d[+]; /* backward */ /* terpolated values */ prtf("tal value ad terval of x for terpolated results, x0, dx? "); scaf("%g%g", &x0,&dx); prtf(" tx t terpolato "); m=(t)floor((x[]-x0)/dx + 0.5); =; /* tal set for terval couter */ for(j=0;j<=m;j++) xx=x0+j*dx; label0:f(xx<x[] ==) yyj= yy(xx,x[-],x[],y[-],y[],d[-],d[]); prtf("%5.6e %5.6e ", xx, yyj); f(xx>=(x[]+0.*dx) && ==) break; else ++; goto label0; 問題 水の動粘性係数 ν の常温での温度依存性は 6. 節 ラグランジュ補間法 の問題で記したとおりである スプライン補間により, 水温が 0~30[ ] のときの動粘性係数を求め, グラフ表示せよ 実行例 ------------------------- 実行開始 ----------------------- Sple terpolato umber of tervals? 4 は小区間数であることに注意 x[0], y[0]? 0.0.307e-6 ( データ点数は+) x[], y[]? 5.0.39e-6 x[], y[]? 0.0.004e-6 x[3], y[3]? 5.0 8.98e-7 x[4], y[4]? 30.0 8.008e-7 tal value ad terval of x for terpolated results, x0, dx? 0.0 0. 初期値 0, 増分 0.のxの値に対する補間値を求める x terpolato.000000e+0.307000e-06.00000e+0.9998e-06.040000e+0.9965e-06.060000e+0.85955e-06.080000e+0.78954e-06.00000e+0.7963e-06.0000e+0.64988e-06 6

.40000e+0.5809e-06.60000e+0.509e-06.80000e+0.4476e-06.00000e+0.3786e-06 : : : :.900000e+0 8.8459e-07.90000e+0 8.4894e-07.940000e+0 8.363e-07.960000e+0 8.078395e-07.980000e+0 8.04390e-07 3.000000e+0 8.008000e-07 -------------------------おしまい----------------------- 動粘性係数の温度依存性はつぎのグラフに示される 動粘性係数.40E-06.30E-06 動粘性係数 [m^/sec].0e-06.0e-06.00e-06 9.00E-07 8.00E-07 7.00E-07 0 5 0 5 30 温度 [ ] 参考文献 葉子 : 数値計算の基礎 解法と誤差, コロナ社 (007) 森口繁一, 伊理正夫, 武市正人編 :C による算法痛論, 東京大学出版会 (000) Heath, Mchael T.: Scetfc Computg, A Itroductory Survey, McGraw-Hll(00) 7