Stats

Popular Posts

Followers

Mathematica 教學 擬合3D曲面

戴忠淵 於 2010年12月12日星期日 下午6:29 發表


Ex1.
(*平均取得100個樣本點*)
data=Table[Sin[x+y],{x,0,Pi,Pi/10},{y,0,Pi,Pi/10}];
(*擬合函數,並將函數定義為f[x,y]*)
f=ListInterpolation[data,{{0,Pi},{0,Pi}}]
(*繪圖真實函數*)
Plot3D[Sin[x+y],{x,0,Pi},{y,0,Pi}]

(*繪圖擬合函數*)
Plot3D[f[x,y],{x,0,Pi},{y,0,Pi}]



(*隨機取得100個樣本點並計算函數值*)
pt=Flatten@{#,f@@#}&/@RandomReal[{0,Pi},{100,2}]
(*繪圖真實函數與隨機取得之樣本點*)
Show[Plot3D[Sin[x+y],{x,0,Pi},{y,0,Pi}],
Graphics3D[{Red,PointSize[0.025],Point[pt]}]]


Ex2.

data=Import["~/Downloads/afm_06_mesh.txt","Data"][[2;;301]][[All,{2,3,4}]];
f=Interpolation[{{#[[1]],#[[2]]},#[[3]]}&/@data,InterpolationOrder->1];
ListPlot3D[data]


Show[Plot3D[f[x,y],{x,Min@data[[All,1]],Max@data[[All,1]]},{y,Min@data[[All,2]],Max@data[[All,2]]}],
Graphics3D[{Red,PointSize[0.02],Point[data]}]]

range=Table[#@data[[All,z]]&/@{Min,Max},{z,2}];
testpoint=Quiet@Flatten[{#,f@@#}]&/@(RandomReal[range[[#]]]&/@{1,2}&/@Range[100]);

Show[Plot3D[f[x,y],{x,Min@data[[All,1]],Max@data[[All,1]]},
{y,Min@data[[All,2]],Max@data[[All,2]]}],
Graphics3D[{Red,PointSize[0.02],Point[testpoint]}]]

Tags: ,

讀者回應 ( 0 意見 )

發佈留言

Please leave your name and tell me what you thought about this site. Comments, suggestions and views are welcomed.

如果這篇文章對你有幫助,那請留個訊息給我~