6. 数学的モデリングの補間とフィッティング

1. コンセプト
2. 例と Matlab コード ソリューション

1.コンセプト

1.補間

(1) 定義: 補間は、既知のデータ ポイント間の未知のデータ ポイントの値を推定するために使用される数学および統計の手法です内挿の目的は、既知のデータ ポイント間の何らかの関数または方法を通じて中間位置の値を推定することです。補間は、データ分析、グラフィック描画、数値シミュレーションなどの分野で一般的に使用されます。

(2) 一般的な補間方法

1)線形補間: 既知のデータ点間の直線を通じて中間位置の値を推定します。これは、2 つの隣接するデータ ポイント間で、推定値が線形関係に従って補間されることを意味します。

2)多項式補間: 多項式関数を使用して既知のデータ点を近似します。最も一般的な多項式補間方法は、ラグランジュ補間とニュートン補間です。

3)スプライン補間: データを区分的に多項式 (通常は低次の多項式) に当てはめて、隣接する区間内での滑らかな接続を確保します。これは、補間関数の過度の振動を回避するのに役立ちます。

4)三角関数補間: 三角関数 (三角多項式や三角スプラインなど) を使用して、既知のデータ点を近似します。これは、周期的なデータの内挿に特に役立ちます。

5) 3 次スプライン補間: 3 次多項式を使用して隣接するデータ ポイント間を補間し、データ ポイントで連続的な 1 次および 2 次導関数が存在することを保証する非常に一般的な方法です。これにより、補間関数は補間間隔にわたって非常に滑らかになります。

修理:

1. ラグランジュ多項式補間は、既知のデータ ポイントのセット間の未知のデータ ポイントの値を推定するために使用される一般的に使用される補間方法です。この方法では、ラグランジュ多項式を使用してデータ ポイントを近似します。この多項式は既知のすべてのデータ点を通過し、他の点ではゼロになります。このような多項式は次のように表すことができます。
ここに画像の説明を挿入します
利点は、データ ポイントを非常に正確に適合させ、すべてのデータ ポイントを通過することです。
欠点は、データ ポイントの数が増加するにつれて、多項式の計算と補間が複雑になることです。さらに、ラグランジュ補間は、極端な場合には補間多項式の振動を引き起こす可能性があります。
ここに画像の説明を挿入します
lagrange.m という名前の M ファイルを書き込みます。

function y=lagrange(x0,y0,x); 
n=length(x0);m=length(x); 
for i=1:m 
 z=x(i); 
 s=0.0; 
 for k=1:n 
 p=1.0; 
 for j=1:n 
 if j~=k 
 p=p*(z-x0(j))/(x0(k)-x0(j)); 
 end 
 end 
 s=p*y0(k)+s; 
 end 
 y(i)=s; 
end

2.ニュートン補間は、既知のデータ ポイントのセット間の未知のデータ ポイントの値を推定するために使用されます。この方法では、ニュートン多項式を使用してデータ ポイントを近似します。多項式は既知の各データ ポイントに渡され、新しいデータ ポイントが再帰的に追加されて多項式が構築されます。

ここに画像の説明を挿入します
ニュートン補間の利点の 1つは、新しいデータ ポイントが追加されたときに、多項式全体を再計算する必要がなく、補間多項式を簡単に更新できることです。

基本ステップ
ここに画像の説明を挿入します
ニュートン補間法は、多数の基底関数を計算する必要がなく、段階的に計算を実行できるため、一般にラグランジュ補間よりも効率的です。ただし、他の内挿方法と同様、ニュートン補間の精度はデータ ポイントの選択と密度の影響を受けます。

3.区分的線形補間データ ポイントをいくつかのセグメントに分割し、各セグメント内で線形補間を使用してデータ ポイントを近似します。この方法は通常、データに異なる傾向や異なる間隔での変化がある状況に対処するために使用されます。区分的線形補間の目的は、データをより適切に記述するために各セグメント内でほぼ線形補間関数を取得することです。

Matlab には既製の一次元補間関数 interp1 があります。

 
y=interp1(x0,y0,x,'method') 

method 指定插值的方法,默认为线性插值。其值可为:
'nearest' 最近项插值
'linear' 线性插值
'spline' 逐段 3 次样条插值
'cubic' 保凹凸性 3 次插值。
所有的插值方法要求 x0 是单调的。
当 x0 为等距时可以用快速插值法,使用快速插值法的格为'*nearest''*linear''*spline''*cubic'

4.エルミート補間 補間
関数がノードの関数と同じ値を持つ必要があるだけでなく、ノードと同じ一次、二次、またはさらに高次の微分値を持つことも必要な場合。関数、これはエルミート補間問題です。

Matlab を使用してエルミート補間を実装する

function y=hermite(x0,y0,y1,x); 
n=length(x0);m=length(x); 
for k=1:m 
 yy=0.0; 
 for i=1:n 
 h=1.0; 
 a=0.0; 
 for j=1:n 
 if j~=i 
 h=h*((x(k)-x0(j))/(x0(i)-x0(j)))^2; 
 a=1/(x0(i)-x0(j))+a; 
 end 
 end 
 yy=yy+h*((x0(i)-x(k))*(2*a*y0(i)-y1(i))+y0(i)); 
 end 
 y(k)=yy; 
end 

5. スプライン補間
航空機の翼の形状や内燃機関の吸気・排気バルブのカムカーブなど、工学技術における多くの計算問題では補間関数の滑らかさが要求されます。次数は連続的であるだけでなく、連続的な曲率も持たなければならないため、スプライン補間の生成につながります。

Matlab には 3 次スプライン補間用の既製の関数もあります


y=interp1(x0,y0,x,'spline');

y=spline(x0,y0,x);

pp=csape(x0,y0,conds),y=ppval(pp,x)
其中 x0,y0 是已知数据点,x 是插值点,y 是插值点的函数值

对于三次样条插值,我们提倡使用函数 csape,csape 的返回值是 pp 形式,要求插值点的函数值,必须调用函数 ppval。

pp=csape(x0,y0):使用默认的边界条件,即 Lagrange 边界条件。
pp=csape(x0,y0,conds)中的 conds 指定插值的边界条件,其值可为:
'complete' 边界为一阶导数,即默认的边界条件
'not-a-knot' 非扭结条件 
'periodic' 周期条件
'second' 边界为二阶导数,二阶导数的值[0, 0]'variational' 设置边界的二阶导数值为[0,0]。

对于一些特殊的边界条件,可以通过 conds 的一个1×2 矩阵来表示,conds 元素的取值为 12。此时,使用命令

pp=csape(x0,y0_ext,conds) 
其中 y0_ext=[left, y0, right],这里 left 表示左边界的取值,right 表示右边界的取值。conds(i)=j 的含义是给定端点ij 阶导数,即 conds 的第一个元素表示左边界的条件,第二个元素表示右边界的条件,conds=[2,1]表示左边界是二阶导数,右边界是一阶导数,对应的值由 left 和 right 给出。

详细情况请使用帮助 help csape。

2.フィッティング

(1) 定義: フィッティングは、一連の観察されたデータ点を最もよく説明または近似する数学的モデルまたは関数を見つけるために使用される数学的および統計的手法です。フィッティングの目的は、実際の観測値との差を最小限に抑える関数またはモデルを見つけて、データの予測、分析、または説明に使用できるようにすることです。

(2) 一般的な取り付け方法

1)線形フィッティング: データが線形関係に従っているように見える場合、線形回帰を使用してフィッティングできます。線形回帰では、直線とデータ ポイントの間の残差の二乗和を最小にする直線が見つかります。

2)多項式フィッティング: 多項式フィッティングでは、多項式関数を使用してデータを近似します。高次または低次の適合を得るために、さまざまな次数の多項式を選択できます。

3)非線形フィッティング: データが非線形モデルとよりよく一致する場合、非線形回帰などの非線形フィッティング手法を使用できます。これらのメソッドは、データに最も適合する非線形関数を見つけようとします。

4)指数フィッティング: データが指数関数に従う状況をシミュレートするために使用され、通常は成長または減衰のプロセスを説明するために使用されます。

5)対数フィッティング: データと対数関数の関係に適しており、通常、指数関数的増加または対数周期データの分析に使用されます。

6)カーブフィッティング: サインカーブ、ガウスカーブなど、さまざまな形状のカーブをフィッティングできる一般的な方法です。

7)統計的フィッティング: 統計におけるフィッティングでは、最尤推定またはベイジアン法を使用してパラメトリック モデルをフィッティングし、観察されたデータの分布を最もよく記述することができます。

8)コア フィッティング: 機械学習とパターン認識では、コア メソッド (サポート ベクター マシンなど) を使用してデータをフィッティングし、分類モデルまたは回帰モデルを生成できます。

修理:

1. 線形最小二乗法は、線形モデルを近似して観測データ ポイントとモデル予測値の間の残差の二乗和を最小化するために使用される、一般的に使用される統計的および数学的手法です。この方法は回帰分析でよく使用され、その目的は従属変数と独立変数の間の関係を最もよく表す線形モデルを見つけることです。

2. 質問例


1. 工作機械で加工する部品の形状は、加工条件に応じたデータ(x、y)の集合(平面の場合)で与えられますが、プログラム制御のフライス盤で加工する場合、各ツールは、x 方向と y 方向に沿って非常に小さなステップしか実行できないため表 1 に示す x,y データは翼断面の下側の等高線上にあり、x 座標が 0.1 変化するごとに y 座標を求める必要があるものとします。処理に必要なデータを完成させて曲線を描き、x = 0 における曲線の傾きと 13 ≤ x ≤ 15 の範囲での y の最小値を見つけてください。ラグランジュ、区分的線形、三次スプラインの 3 つの内挿方法を
ここに画像の説明を挿入します
使用する必要があります

Matlab コードは、前に作成した関数呼び出しを使用する必要があります。

clc,clear 
x0=[0 3 5 7 9 11 12 13 14 15]; 
y0=[0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6]; 
x=0:0.1:15; 
y1=lagrange(x0,y0,x); %调用前面编写的Lagrange插值函数
y2=interp1(x0,y0,x); 
y3=interp1(x0,y0,x,'spline'); 
pp1=csape(x0,y0); y4=ppval(pp1,x); 
pp2=csape(x0,y0,'second'); y5=ppval(pp2,x); 
fprintf('比较一下不同插值方法和边界条件的结果:\n') 
fprintf('x y1 y2 y3 y4 y5\n') 
xianshi=[x',y1',y2',y3',y4',y5']; 
fprintf('%f\t%f\t%f\t%f\t%f\t%f\n',xianshi') 
subplot(2,2,1), plot(x0,y0,'+',x,y1), title('Lagrange') 
subplot(2,2,2), plot(x0,y0,'+',x,y2), title('Piecewise linear') 
subplot(2,2,3), plot(x0,y0,'+',x,y3), title('Spline1') 
subplot(2,2,4), plot(x0,y0,'+',x,y4), title('Spline2') 
dyx0=ppval(fnder(pp1),x0(1)) %求x=0处的导数
ytemp=y3(131:151); 
index=find(ytemp==min(ytemp)); 
xymin=[x(130+index),ytemp(index)]

例 2 丘陵地帯の標高を測定します。x 方向と y 方向に 100 メートルごとに点を測定します。得られた標高は表 2 に示すとおりです。曲面
を補間してポイントの標高
ここに画像の説明を挿入します

clear,clc 
x=100:100:500; 
y=100:100:400; 
z=[636 697 624 478 450 
 698 712 630 478 420 
680 674 598 412 400 
 662 626 552 334 310]; 
pp=csape({
    
    x,y},z') 
xi=100:10:500;yi=100:10:400 
cz1=fnval(pp,{
    
    xi,yi}) 
cz2=interp2(x,y,z,xi,yi','spline') 
[i,j]=find(cz1==max(max(cz1))) 
x=xi(i),y=yi(j),zmax=cz1(i,j)


例3 ある海域で測定したいくつかの点(x,y)の水深zは下表のようになり、(75,200)× (-50,150)の長方形領域内に海底面の図形を描きます。
ここに画像の説明を挿入します

x=[129 140 103.5 88 185.5 195 105 157.5 107.5 77 81 162 162 117.5]; 
y=[7.5 141.5 23 147 22.5 137.5 85.5 -6.5 -81 3 56.5 -66.5 84 -33.5]; 
z=-[4 8 6 8 6 8 8 9 9 8 8 9 4 9];
xi=75:1:200; 
yi=-50:1:150; 
zi=griddata(x,y,z,xi,yi','cubic') 
subplot(1,2,1), plot(x,y,'*') 
subplot(1,2,2), mesh(xi,yi,zi) 

例 4 最小二乗法を使用して、表 4 に示すデータ
に適合する形式 y = a + bx^2 の経験式を見つけます。
ここに画像の説明を挿入します

x=[19 25 31 38 44]'; 
y=[19.0 32.3 49.0 73.3 97.8]'; 
r=[ones(5,1),x.^2]; 
ab=r\y 
x0=19:0.1:44; 
y0=ab(1)+ab(2)*x0.^2; 
plot(x,y,'o',x0,y0,'r') 

例 5 1990 年から 1996 年までの郷鎮企業の生産利益を表 5 に示します。1997年と 1998 年の利益を予測してみます
ここに画像の説明を挿入します
次のようにプログラムを書きます。


x0=[1990 1991 1992 1993 1994 1995 1996]; 
y0=[70 122 144 152 174 196 202]; 
a=polyfit(x0,y0,1) 
y97=polyval(a,1997) 
y98=polyval(a,1998) 

a1 = 20、a0 = −4.0705×10を求め、
1997年の生産利益はy97=233.4286、1998年の生産利益はy98=253.9286となります。

おすすめ

転載: blog.csdn.net/qq_55433305/article/details/132942891