已知實(shí)驗(yàn)數(shù)據(jù)和函數(shù)原型如下:
data = {{8.5, 0.828}, {12.5, 0.78}, {16.5, 0.741}, {20.4, 0.714}, {23.1, 0.66}, {29.4, 0.558}, {39.4, 0.491}, {49.4, 0.454}};
model = Integrate[(1 - x/r)^2*Exp[-(Log[r/b*Sqrt[1 + (a*a)/(b*b)]])^2/(2 Log[1 + (a*a)/(b*b)])]/(r*Sqrt[2*Pi*Log[1 + (a*a)/(b*b)]]), {r,0, Infinity}];
這是在Mathematica中輸入的格式,函數(shù)原型可以參見上傳的附件。其中a, b是參數(shù),x是自變量。用Findfit求a和b時,Mathematica給出的結(jié)果不對:
{a -> 160.339, b -> 186.173}
合理值應(yīng)該在a=299, b=247左右,在用所給值驗(yàn)證時,所得到的函數(shù)值為虛數(shù):
f[a_, b_, x_, r_] :=Integrate[(1 - x/r)^2*Exp[-(Log[r/b*Sqrt[1 + (a*a)/(b*b)]])^2/(2 Log[1 + (a*a)/(b*b)])]/(r*Sqrt[2*Pi*Log[1 + (a*a)/(b*b)]]), {r,0, Infinity}];
f[160.339, 186.173, 8.5, r]
輸出為:0.851972 - 4.76418*10^-15 I
不知道哪里可以改進(jìn),求高人指點(diǎn)!
另外我嘗試用1st opt,但是也不成功:
Constant h=10000;
Parameters a,b;
Variables x,y;
Function y=int(sqr(1-x/r)*exp(-sqr(ln(r*sqrt(1+(a*a)/(b*b))/b))/(2*ln(1+(a*a)/(b*b))))/(r*sqrt(2*Pi*ln(1+(a*a)/(b*b)))),r=0,h);
Data;
8.5 0.828
12.5 0.78
16.5 0.741
20.4 0.714
23.1 0.66
29.4 0.558
39.4 0.491
49.4 0.454
提示函數(shù)表達(dá)式錯誤!求指點(diǎn)!!
![如何用給定的帶有參數(shù)的函數(shù)擬合已知數(shù)據(jù)?]()
函數(shù).png |