4

次の分布を検討してください。

rs={{400, 0.00929}, {410, 0.0348}, {420, 0.0966}, {430, 0.2}, {440, 0.328}, {450, 0.455}, 
    {460, 0.567}, {470, 0.676}, {480, 0.793}, {490, 0.904}, {500, 0.982}, {510, 0.997}, 
    {520,0.935}, {530, 0.811}, {540, 0.65}, {550, 0.481}, {560, 0.329}, {570,0.208}, 
    {580, 0.121}, {590, 0.0655}, {600, 0.0332}, {610, 0.0159}, {620, 0.00737}, 
    {630, 0.00334}, {640, 0.0015}, {650,0.000677}, {660, 0.000313}, {670, 0.000148}, 
    {680, 0.0000715}, {690,0.0000353}, {700, 0.0000178}}

ここに画像の説明を入力

この分布を補間して、X 軸上の任意の位置にあるポイントの値を取得するにはどうすればよいですか?

4

3 に答える 3

7

標準Interpolation関数を使用するだけです:

rsInterpolation = Interpolation@rs;
Plot[rsInterpolation@x, {x, 400, 700}]

結果

特定のクラスの関数 (正規分布など) に適合させたい場合は、代わりに を使用しますFindFit

于 2011-10-10T19:36:59.737 に答える
5

優れた派生物が必要な場合は、次のようなことを行うことができます。

interp = Interpolation[rs, InterpolationOrder -> 3, Method -> "Spline"]
Show[Plot[{interp[x], 10 interp'[x]}, {x, Min[First /@ rs], Max[First /@ rs]},
          PlotRange -> Full],
     ListPlot@rs]

ここに画像の説明を入力してください

「スプライン」メソッドを使用する場合の導関数の動作の違いを見てください。

interp  = Interpolation[rs, InterpolationOrder -> 3, Method -> "Spline"]
interp1 = Interpolation[rs, InterpolationOrder -> 3]
Show[Plot[{interp1'[x], interp'[x] - .005}, 
          {x, Min[First /@ rs], Max[First /@ rs]}, PlotRange -> Full]]

ここに画像の説明を入力してください

于 2011-10-11T04:20:29.930 に答える
0

ディストリビューションの場合は、 SmoothKernelDistributionを代わりに使用する必要があると思います。

于 2012-04-10T07:09:41.003 に答える