這份名單插值是一個簡單的函數,一個2D點映射到一個號碼,如果 把每個{{x,y},z}
爲f[x,y]=z
力數學對非結構化張格
{
{{1,3},9}, {{1,4},16},
{{2,4},8}, {{2,5},10}
}
我現在想要一個函數,插值/外推任何{x,y}
。
數學拒絕這樣做:
Interpolation[{{{1,3},9}, {{1,4},16},{{2,4},8}, {{2,5},10}},
InterpolationOrder->1]
插值:: indim:本 座標不處在一個結構性 張量積網格。
我明白爲什麼(數學想要一個「矩形」域),但 什麼是強迫數學創建插值最簡單的方法?
這不起作用:
f[1,3]=9; f[1,4]=16; f[2,4]=8; f[2,5]=10;
g=FunctionInterpolation[f[x,y],{x,1,2},{y,3,5}]
FunctionInterpolation :: nreal:
16附近{X,Y} = {1, - },這個函數不 計算爲一個真正的數。 5 FunctionInterpolation :: nreal:
17在{x,y} = {1, - }附近,函數沒有將 評估爲實數。 5 FunctionInterpolation :: nreal:
18在{x,y} = {1, - }附近,函數沒有將 評估爲實數。 5 General :: stop:進一步輸出 FunctionInterpolation :: nreal 將在此計算過程中被抑制。
即使你忽略上面的警告,評估摹給出錯誤
g[1.5,4] // FortranForm
f(1.5,4) + 0.*(-9.999999999999991*(f(1.4,4) - f(1.5,4)) +
- 0.10000000000000009*
- (9.999999999999991*
- (9.999999999999991*(f(1.4,4) - f(1.5,4)) +
- 4.999999999999996*(-f(1.4,4) + f(1.6,4))) +
- 0.5000000000000006*
- (-10.000000000000014*
- (-3.333333333333333*(f(1.3,4) - f(1.6,4)) -
- 4.999999999999996*(-f(1.4,4) + f(1.6,4))) -
- 9.999999999999991*
- (9.999999999999991*(f(1.4,4) - f(1.5,4)) +
- 4.999999999999996*(-f(1.4,4) + f(1.6,4))))))
其他「明顯」的想法(內插值功能 本身)也不起作用。
靖巖崎,歡迎StackOverflow的數學界,並感謝您的貢獻。 – 2011-05-07 06:35:16