max/msp gen~ ラグランジュ補間多項式_チェビシェフ節点
max/msp gen~でラグランジュ補間多項式_チェビシェフ節点を書いてみました。
補間において振幅が大きくなりすぎたり近似から大きくかけ離れた波形となることをルンゲ現象というらしいです。ルンゲ現象を軽減するためには節点の座標をチェビシェフ節点で決めると良いらしいのでラグランジュ補間多項式をチェビシェフ節点で書いてみました。
以下のように波形を変形できます。
以下がgen~の中身です。
以下がgen~のコードです。
x=in1;
fx1=in2;fx2=in3;fx3=in4;fx4=in5;fx5=in6;fx6=in7;fx7=in8;fx8=in9;
//x1=in10;x2=in11;x3=in12;x4=in13;x5=in14;x6=in15;x7=in16;x8=in17;
x1=0.0;x2=0.842652;x3=2.222149;x4=4.0245452;x5=5.975452;x6=7.7777851;x7=9.157348;x8=10.0;
L0=(x-x2)*(x-x3)*(x-x4)*(x-x5)*(x-x6)*(x-x7)*(x-x8)*fx1/((x1-x2)*(x1-x3)*(x1-x4)*(x1-x5)*(x1-x6)*(x1-x7)*(x1-x8));
L1=(x-x1)*(x-x3)*(x-x4)*(x-x5)*(x-x6)*(x-x7)*(x-x8)*fx2/((x2-x1)*(x2-x3)*(x2-x4)*(x2-x5)*(x2-x6)*(x2-x7)*(x2-x8));
L2=(x-x2)*(x-x1)*(x-x4)*(x-x5)*(x-x6)*(x-x7)*(x-x8)*fx3/((x3-x2)*(x3-x1)*(x3-x4)*(x3-x5)*(x3-x6)*(x3-x7)*(x3-x8));
L3=(x-x2)*(x-x3)*(x-x1)*(x-x5)*(x-x6)*(x-x7)*(x-x8)*fx4/((x4-x2)*(x4-x3)*(x4-x1)*(x4-x5)*(x4-x6)*(x4-x7)*(x4-x8));
L4=(x-x2)*(x-x3)*(x-x4)*(x-x1)*(x-x6)*(x-x7)*(x-x8)*fx5/((x5-x2)*(x5-x3)*(x5-x2)*(x5-x1)*(x5-x6)*(x5-x7)*(x5-x8));
L5=(x-x2)*(x-x3)*(x-x4)*(x-x5)*(x-x1)*(x-x7)*(x-x8)*fx6/((x6-x2)*(x6-x3)*(x6-x4)*(x6-x5)*(x6-x1)*(x6-x7)*(x6-x8));
L6=(x-x2)*(x-x3)*(x-x4)*(x-x5)*(x-x6)*(x-x1)*(x-x8)*fx7/((x7-x2)*(x7-x3)*(x7-x4)*(x7-x5)*(x7-x6)*(x7-x1)*(x7-x8));
L7=(x-x2)*(x-x3)*(x-x4)*(x-x5)*(x-x6)*(x-x7)*(x-x1)*fx8/((x8-x2)*(x8-x3)*(x8-x4)*(x8-x5)*(x8-x6)*(x8-x7)*(x8-x1));
out1=L0+L1+L2+L3+L4+L5+L6+L7;
いいなと思ったら応援しよう!
よろしければサポートお願いします!