三次補間を使った近似値の求め方

このQ&Aのポイント
  • 三次補間を使ってf(x) = sinh(x)の近似値を求める方法は正しいでしょうか?
  • 三次補間の式を使用してf(0.5)を求めると、0.5となりますが、これは正しい結果でしょうか?
  • 補間の手法は複数ありますが、sinh(0.5)の値と比較すると、結果は正しそうですが、間違っていた場合は教えてください。お願いします。
回答を見る
  • ベストアンサー

三次補間を使った近似値の求め方

三次補間でf(x) = sinh(x)の近似を求めたいです。 f(0) = 0.0000、f(1) = 1.1752 f′(0) = 1.0000 、f′(1) = 1.15431 の値が与えられている状態です。 この場合、f(0.5)は三次補間(cubic interpolation)の求め方はこれで正しいのでしょうか? p(x_i) = y_iとp(x_i + h) = y_i + h*y_i'より f(0.5) = f(0+0.5) = y_0 + (0.5)*y_0' = 0.000 + 0.5*1.000 = 0.5 よってf(0.5) = 0.5 補間の手法が沢山あって少しこんがらがっています。 ただ、sinh(0.5) =0.522・・・なので有っていそうなのですが 間違っていたら教えてください><お願いします><

質問者が選んだベストアンサー

  • ベストアンサー
  • info22_
  • ベストアンサー率67% (2650/3922)
回答No.1

>f(0) = 0.0000、f(1) = 1.1752 >f′(0) = 1.0000 、f′(1) = 1.15431 >の値が与えられている状態です。 f'(1)が間違っているようです。 正しくは  f'(1)= 1.5431 であると思いますが如何ですか? 3次補間式は f(0) = 0.0000、f(1) = 1.1752 f′(0) = 1.0000 、f′(1) = 1.5431 から f(x)=0.19270x^3 -0.01750x^2+1.0000x となり f(0.5)=0.5197 sinh(0.5)=0.5211と比較すると  誤差=sinh(0.5)-0.5197=0.0014 となります。

koni-ami
質問者

お礼

凄くわかりやすい説明ありがとうございました!

その他の回答 (1)

回答No.2

エルミート補間ですね。 f(x)=ax^3+bx^2+cx+d f'(x)=3ax^2+2bx+c に与えられた、f(0),f'(0),f(1),f'(1)を使うと、a,b,c,dが求まります。

koni-ami
質問者

お礼

有り難うございました!

関連するQ&A

  • 数値解析の補間公式の問題

    Xの方程式X-9*(-X)=0は区間[0,1]に解を持つことがわかっている。f(X)=X-9*(-X)として、標本点X0=0,X1=0.5,X2=1における高々2次のfの補間多項式pを求めて、p(X)=0を満たすXを方程式の近似解として求める問題です。疑問点1;補間多項式を求める時にどの補間公式を使うのか?(Lagrangeなど)疑問点2;近似解とは?アドバイスお願いします(泣)

  • 補間多項式

    「相異なる点、x_0,x_1,・・・・,x_nに対して、任意の実数y_0,y_1,・・・,y_nがある。そのときp_n+1(x_i)=y_i(i=0,1,・・・,n)を満たす高々n+1次の補間多項式p_n+1がただ一つ存在する。」は真か偽を判定する問題です。考えたのですが偽でしょうか?定義は「与えられた関数y=f(x)に対して、相異なる点x_0,・・・,x_n-1(この点を標本点という)について、y_k=f(x_k),k=0,1,・・・,n-1とおく。このとき高々n-1次多項式p(x)としてp(x_k)=y_k,k=0,1,・・・,n-1となるものがある」理由はやはり高々n+1次というところが定義からづれているからです。しかし根拠が示せないので、アドバイスありましたら嬉しいです・・・

  • MATLABによるラグランジェ補間

    下記1~2行目の8点が与えられていて、ラグランジェ補間を行う問題です。 下記のプログラムを自分で組んだものの、おかしな値が返ってきます。 どこが間違っているのか全く検討がつかないのでわかる方がいらっしゃったらどうかご教授お願いします。 x=[0,1.2,2.1,3.5,4.8,6.7,8.5,9.7]; y=[0.4,1.3,2.0,3.1,4.0,5.2,6.0,6.1]; x0=(0:0.001:15); h=0.0001; a=0; j=1; while a<=15 f(j)=0; for i=1:8 b=(lag(x(i)+h)-lag(x(i)))/h; f(j)=f(j)+lag(a)*y(i)/(b*(a-x(i))); end a=a+0.001; j=j+1; end plot(x0,f) [lag.m] function f=lag(x) g=1; z=[0,1.2,2.1,3.5,4.8,6.7,8.5,9.7]; for i=1:1:8 if x ~= z(i) g = g*(x-z(i)); end end f=g;

  • 逆数補間についての内容です。

    こんにちは。 私は、大学生で、補間についての勉強をしているものです。今回、始めて、洋書を読むことになり苦戦しております。以下の内容はどういったものなのでしょうか?アドバイスをいただきたいと思い、書かせてもらいました。 _______________________________________________________________ [Inverse Interpolation] A process called inverse interpolation is often used to approximate an inverse function. Suppose that values {Yi}=f({Xi}) have been computed at X0,X1,...,Xn. Using table Y ; Y0 Y1 Y2 ......Yn X ; X0 X1 X2 ......Xn we form the interpolation polynomial p(y)=Σ(i=1→n)CiΠ(j=0→i-1){Y-Yj} The orijinal relationship, y=f(x), has an inverse, under certain conditions. This inverse is being approximated by x=p(y). Procedures Coef and Eval can be used to carry out the inverse interpolation by reversing the arguments x and y in the calling sequence for Coef. Inverse interpolation can be used to find where a given functuin f has a root or zero. This means inverting the equation f(x)=0. We propose to do this by creating a table of values (f(Xi),Xi) and interpolating with a polynomial,p. Thus, p(Yi)=Xi. The points Xi should be chosen near the unknown root,r. The approximate root is then given by r ~p(0). For a concrete case, let the table of known values be Y;-0.5789200,-0.3626370,-0.1849160,-0.0340642,0.0969858 X; 1.0 , 2.0 , 3.0 , 4.0 , 5.0 The nodes in this problem are the points in the row of the table headed y, and the function values being interpolated are in the x row. The resulting polynomial is p(Y)=0.25Y^4+1.2Y^3+3.69Y^2+7.39Y+4.247470086 and p(0)=4.247470086. Only the last coefficient is shown with all the digits carried in the calculation, for it is the only one needed for the problem at hand. ________________________________________________________________ 自分で計算しても、p(Y)=0.25Y^4+1.2Y^3+3.69Y^2+7.39Y+4.247470086 となりません(泣) 

  • ラグランジュの補間について

    ラグランジュの補間の導出にて 多項式近似にて近似式をPn(x)とすると xとf(x)が既知の場合 Pn(x)=Σf(xk)Qk(x)   (k=0,1,・・・・n) のように仮定して未知関数Qk(x)を求めますが、 イメージがわきません。 どうして、このように仮定するのでしょうか?

  • ラグランジュ補間多項式

    何回でも微分できる関数f(x)とし、 x0,x1,x2,x3,x4を刻幅hの等間隔分点としたとき(xk=x0+kh) f(x)のラグランジュ補間p4(x)を求めて ∫[x0,x4]p4(x)dx = 2h/45(7f(x0)+32f(x1)+12f(x2)+32f(x3)+7f(x4)) となることを示したいのですが p4(x)を求めて積分しようと思っているのですが p4(x)の式がラグランジュ補間のとおりにやるとすごく長い式になってしまし 積分するにあたって多項式の形にしようとしてるのですがよくできません 教えてください。

  • パラメーターが中間のときの近似

    5/23に次のような問題が投稿されていました。  (1/√y) = 2log(x*√y) - 0.8 ...(1) をyについて解く(対数の底は10) 私ならば次の様にします。  y = f(x) + g(y) ...(2) という方程式でg(y)が小さいとみなせるとき、第1近似は  y1 = f(x) これを(2)の右辺に代入して、第2近似は  y2 = f(x) + g(y1) 以下同様に  y[i+1] = f(x) + g(y[i]) これを逐次代入法と呼びます。(厳密にはこれが正しい解に収束することを示さなければなりませんが)。この方法を使うためにはxが大きいときと小さい時に分ける必要があります。Excelで第10近似まで計算したときの結果を下に示します。 xが小さい時1/√yが小さいとみなせる  x   0.05    0.1     1     5  y 2639.5157 688.81421 12.199135 3.5624 残差 -2.2e-16 -2.4e-14  -1.9e-5  -0.61 xが大きい時log(y)が小さいとみなせる  x   5     10    100    1000  y 0.4908 0.8265 0.1694847 0.06260594 残差 1.13 -0.017 -9.0e-5 -1.4e-6 残差というのは近似解を元の方程式(1)に代入したときの左辺ー右辺です。さて、ここでやっと問題です。残差を見れば分かるように、また実際に計算してみれば収束の仕方から分かるようにxが1から10ぐらいの中間の値ではどちらの展開も良い結果を与えません。パラメーターが中間の値のときの良い展開の仕方はないものでしょうか。

  • 近似値

    h≒0のとき関数の値について1次の近似式を作れ という問題で 関数が1/(1+h)^2という関数で、 解説で、f(x)=1/x^2 とおいてるわけですが、 問題の関数を展開すると1/1+2h+h^2になりますよね なのになんでf(x)=1/x^2と置けるのでしょうか?

  • 線形補間

    線形補間での求め方 問題文: 1.数値を読み込む 2.xを読み込む 3.x<x1 または x>xnならエラー 3.x1<x<i+1 となるiを見つける 4.補間公式でyを求める 5.結果をプリントする #include<stdio.h> float hokan(void); int xn[] = {0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75}; double yn[] = {0.000,0.087,0.173,0.258,0.342,0.422,0.500,0.573, 0.624,0.707,0.766,0.819,0.866,0.906,0.939,0.965}; int x=5; void main() { printf("y = %lf\n", hokan()); } float hokan(void) { int i; double y; if(x <0|| 75<= x){ printf("エラーです\n"); } else{ for(i=0; xn[i] < x; i++) y = (yn[i+1] - yn[i]) * (x - xn[i]) / (xn[i+1] - xn[i]) + yn[i]; return y; } } 数表を最初にxnとynで表記しています。 このプログラムで線形補間が行われてないそうなのですが・・ 何か誤りがある様でしたらどなたか教えてください。

  • 数値解析の補間多項式

    (1)nを1以上の整数とし,X0,X1,,,Xnを相異なるn+1個の標本点とする。R上の関数f,g,hにおいて、gはfをX0,X1,,,Xn-1で補間し(つまり,g(Xi)=f(Xi),i=0,1,2,,,,n-1となる)、hはfをX1,,,Xnで補間するとき、関数    g(X)+(X0ーX)/(Xn-X0)×{g(X)ーh(X)} は、fをX0,X1,,,Xnで補間することを示したのですが質問があります。 まず補間するということはどんな意味を持っているのでしょうか?そしてこの問題の但し書きとしてf,g,hは多項式とは限らないとあったのですがではどう考えたらよいのでしょうか?? 最終的にどのように証明していけばよいかアドバイスお願いします★