- ベストアンサー
3次スプライン補間?
3次スプライン補間ですが、3次関数で補間するので既知の3点より、 補間したい値を求めると思っていたのですが、 下記の資料を見ると、既知の2点から値を求めています。 接線を使って、計算しているみたいですが、イマイチ分かりません。 分かりやすく教えていただけないでしょうか? http://www.caero.mech.tohoku.ac.jp/publicData/Daiguji/Chapter4.pdf
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- スプライン補間
x=[-1,0,1,2],y=[0,1,0,0]のデータで 区間x=0~1 をスプライン補間で計算させています。 MuPAD でcubicSplineを用いた場合と C言語によるアルゴリズム辞典から作ったソフトでは計算結果が 微妙に異なります。 どちらが3次スプライン補間として正しいのかお教え願えないでしょうか? あるいはどちらも正しいとして、スプラインの種別が違うのでしょうか? 非常に漠然としていますが、よろしくお願いします。 「自分のツールだとこういう結果だった」というようなアドバイスでも大歓迎です。 X MuPAD C言語によるアルゴ 0 1 1 0.125 0.922851563 0.9488281 0.25 0.8203125 0.853125 0.375 0.698242188 0.7246094 0.5 0.5625 0.575 0.625 0.418945313 0.4160156 0.75 0.2734375 0.259375 0.875 0.131835938 0.1167969
- ベストアンサー
- 数学・算数
- MATLABでの3次spline補間に関して
MATLABでの3次spline補間、その端点仮定条件として使用されている「節点なしの拘束条件」について教えてください。 通常、3次スプライン補間は端点において二次導関数を0と仮定すると思います。 しかし、MATLABの3次スプライン補間の結果をみると、この部分のスプライン関数の係数が0になっていません。 サイトの説明を読むと、「節点なしの端点条件(not-a-knot end conditions)」を使用していると書かれています。これがどのような仮定かということを知りたいです。 ご存じの方がいらっしゃいましたら、ご教授宜しくお願い致します。
- ベストアンサー
- 数学・算数
- 3次スプライン補間法について
x=3,7,4,7,5,8,3,2,3 (秒) Y=4,7,2,3,12,6,13,5,1,24 (cm) として、 速さa(cm/秒)はa=Y/xで出てくるのですが(a=1.7,1,0.5・・・)、 それぞれの点を結ぶと折れ線グラフになりますよね? 3次スプラインという補間関数を使うと、 それぞれの点を通過する滑らかな曲線を引けるらしいのですが、 この場合、x秒における速さaを求める計算式はどのようになるのでしょうか? a=? ご存知の方いらっしゃいましたらご教授・アドバイスよろしくお願い致します。
- ベストアンサー
- 数学・算数
- スプライン補間関数が実装されている数学ライブラリについて
スプライン補間関数が実装されているC++のライブラリがあれば、教えていただけないでしょうか? Boostにありそうだったので見てみたのですが、探し方が悪かったせいか見つけることができなかったので、質問させていただきました。 ご存じの方がいらっしゃったら、ご教授いただければと存じます。 よろしくお願いいたします。
- ベストアンサー
- C・C++・C#
- 単位円の方程式を3次スプライン補間で内挿するには
三次スプライン補間でP(θ)と Q(θ)の内挿を求めたいです。 x(θ) = cosθ と y(θ) = sinθ 0≦θ≦2π N + 1 = 4、 8 、16 ここからどうやってPとQを求めればいいのでしょうか? 最終的にはPとQを求めて(P(θ)、Q(θ))の媒介変数を求めて 内挿で得られた値と実際の値との誤差をθの大きさでグラフ化したいのですが 単位円の方程式を内挿で求める事が出来ません。 単位円の方程式を3次スプライン補間で内挿するにはどうすればいいのでしょうか???
- ベストアンサー
- 数学・算数
- ダイアログベースの3次Spline補間のプログラム
現在、Visual C++ 2008 Express Editionを使用して下に示すようなダイアログベースの3次Spline補間のプログラムを作成しています。 各節点間を等分割するほうはできたのですが、各区間を同一刻み幅で算出するほうが、なかなかできません。 どこをどうしたらいいかがさっぱりです。 以下にプログラムの一部(各区間を同一刻み幅で計算する部分)を示しますので、教えてください。 わからない点は、dnの配列に入ってくる分割数が合っているときと少ないときがあることです。プログラムの後に使用した入力データと、dnの中身を参考までに掲載します。 ============▼プログラムの一部=========== /* n:全点数(int), num:全節点数(int),xn,yn:節点(double型のarray),dX:全区間(xn[0]~xn[num-1])の刻み幅(double) * dn[]:各区間の分割数(int),xx,yy:Spline補間による点(節点を含む,double),x計算された補間点のx座標(double) Cub(double):3乗する関数,Sqr(double):2乗する関数,a[],b[],c[],d[]:3次Spline補間に用いる3次関数の各係数*/ //nの初期化 n =0; //テキストボックスから刻み幅を取得 dX = double::Parse(DX->Text::get()); //各区間の分割数を計算し、全点数を求める for(i=0;i<num-1;i++){ dn[i]=(int)((xn[i+1]-xn[i])/dX); n +=dn[i]; } //xx,yyを全点数+1(最後の節点を含むために+1をしている)で領域確保 xx=gcnew array<double>(n+1); yy=gcnew array<double>(n+1); //ループインデックスを初期化 i=0,j=0; //補間点のx座標を求めながらy座標を算出 for(x=xn[0];x<=xn[num-1];x+=dX){ if(!((xn[j]<=x)&&(x<xn[j+1]))){ j++; } if(i>n+1){ break; } xx[i]=x; yy[i]=a[j]*Cub(xx[i]-xn[j])+b[j]*Sqr(xx[i]-xn[j])+c[j]*(xx[i]-xn[j])+d[j]; i++; } =======▼入力データ(csvファイル)=========== xn yn 0.904 7.54 1.002 13.86 1.104 23.42 1.207 36.61 1.305 52.91 1.403 73.4 1.505 97 1.603 123 1.706 151.3 1.808 182.6 1.906 215.3 2.009 249.2 2.107 284.6 2.209 321.6 2.312 359 2.41 398.1 2.571 438.7 2.669 504.9 2.772 548.3 2.869 593 2.972 639 3.075 687 3.172 736 3.275 787 3.378 840 3.476 895 3.578 951 3.676 1011 3.779 1073 3.876 1136 3.979 1204 4.077 1276 4.18 1353 4.277 1440 4.38 1543 4.483 1762 4.585 2082 4.683 3445 4.786 5598 4.888 7120 4.991 8080 =======▼dnの中身=========== Excelでの計算値 プログラムでの計算値 --------------------------------------- 98 97 102 102 103 102 98 97 98 98 102 101 98 98 103 102 102 102 98 97 103 102 98 98 102 101 103 102 98 98 161 161 98 97 103 102 97 97 103 102 103 103 97 96 103 102 103 103 98 97 102 101 98 98 103 102 97 96 103 103 98 97 103 102 97 97 103 102 103 102 102 102 98 97 103 102 102 102 103 102 上の表の右側はダイアログ上で、「区間間隔」をクリック(各ラジオボタンをクリックすると右横のテキストボックスが入力できるようになります。)してテキストボックスに0.001を入れた時の結果です。
- ベストアンサー
- C・C++・C#
- 補間曲線を関数で求める
いくつかの離散的なデータに対する補間曲線を求めたいです。 また、その補間曲線を関数を用いて求めることを行いたいのですが、 分かるかたが居ましたら、具体的な方法について教えて頂けないでしょうか? 使用するデータは二次元のデータになり、総数としましては約10点程です。 具体的なデータは以下のようになります。 x y 22.5 672 27.5 491 32.5 331 37.5 269 ・ ・ ・ この様に続いているデータに対して 次数が2以上の曲線を関数で求めたいのです。 (例:3x^2+4x+3)。 スプライン曲線や重回帰法などを見ておりますが、 よく理解できません。 どうぞよろしくお願いします。
- ベストアンサー
- 数学・算数
- 様々な補間法について。
様々な補間法について。 補間に関する情報を色々読みましたが、きちんと理解出来ているか不安なので、質問させて下さい。 まず、ラグランジュの補間法というのはいくつかある点の中から、ある2点を取り、その2点間を直線で近似するという考えで合ってますでしょうか。 次にスプライン補完はいくつかの点を3次式で近似しているという考えでよいでしょうか。 最後に質問ですが、xy平面で、どちらかひとつの座標だけが変化してるような2点間を補完するのに最も適した手法は何でしょうか。 数学の知識が乏しいので、頭のいい方から見たらバカみたいな質問かもしれませんが、回答お願いします。
- 締切済み
- 数学・算数