level 1
阳光的qiaoli
楼主
用mathematics想要知道反馈的拟合值,运行的结果总是依赖于初始值,而且和本身数据点的y值相差较大。程序如下,跪求大神指点。
model = NIntegrate[
r*BesselK[1, Sqrt[x^2 + 0.4937^2]/(0.16*Sqrt[1 - 9*a^2*r^2/4])]*
BesselI[0, x*3*a*r/(0.32*Sqrt[1 - 9*a^2*r^2/4])], {r, 0, 1}]/(1/2*(1 + (b - 1)*Sqrt[x^2 + 0.4937^2]/c)^(-b/(b - 1)))*
f + (1 - f*NIntegrate[r*BesselK[1, Sqrt[x^2 + 0.4937^2]/(0.16*Sqrt[1 - 9*a^2*r^2/4])]*
BesselI[0, x*3*a*r/(0.32*Sqrt[1 - 9*a^2*r^2/4])], {r, 0, 1}]/(1/2*(1 + (b - 1)*Sqrt[x^2 + 0.4937^2]/c)^(-b/(b - 1))))*Exp[-d];
data = Import["C:\\Users\\Administrator\\Desktop\\k_k_.txt", "Table"][[All, 1 ;; 2]]
z = Import["C:\\Users\\Administrator\\Desktop\\k_k_.txt", "Table"][[ All, 3]]
fit = NonlinearModelFit[data, {model, {0 < a < 1, 1 < b < 2, 0 < c < 1, 2 < d < 3, 0.0003 < f < 0.0004}}, {{a, 0.5}, {b, 1.1}, {c, 0.02}, {d, 2.0}, {f, 0.00036}}, x,]
2018年09月19日 02点09分
1
model = NIntegrate[
r*BesselK[1, Sqrt[x^2 + 0.4937^2]/(0.16*Sqrt[1 - 9*a^2*r^2/4])]*
BesselI[0, x*3*a*r/(0.32*Sqrt[1 - 9*a^2*r^2/4])], {r, 0, 1}]/(1/2*(1 + (b - 1)*Sqrt[x^2 + 0.4937^2]/c)^(-b/(b - 1)))*
f + (1 - f*NIntegrate[r*BesselK[1, Sqrt[x^2 + 0.4937^2]/(0.16*Sqrt[1 - 9*a^2*r^2/4])]*
BesselI[0, x*3*a*r/(0.32*Sqrt[1 - 9*a^2*r^2/4])], {r, 0, 1}]/(1/2*(1 + (b - 1)*Sqrt[x^2 + 0.4937^2]/c)^(-b/(b - 1))))*Exp[-d];
data = Import["C:\\Users\\Administrator\\Desktop\\k_k_.txt", "Table"][[All, 1 ;; 2]]
z = Import["C:\\Users\\Administrator\\Desktop\\k_k_.txt", "Table"][[ All, 3]]
fit = NonlinearModelFit[data, {model, {0 < a < 1, 1 < b < 2, 0 < c < 1, 2 < d < 3, 0.0003 < f < 0.0004}}, {{a, 0.5}, {b, 1.1}, {c, 0.02}, {d, 2.0}, {f, 0.00036}}, x,]