求大神 帮忙看看数据拟合的问题
mathematica吧
全部回复
仅看楼主
level 5
起风了748 楼主
fp = {{1.9, 27.9}, {3.42, 42.8}, {4.94, 53.2}, {6.46, 56.8}, {7.98,
60.3}, {9.5, 61.4}, {11.02, 63.1}, {12.54, 66}};
FindFit[fp, {1/
1000*\[Sqrt](R*3.08*10^19*(0.045*10^10*1.48*10^3*(3*10^8)^2*(
R*3.08*10^19)/(
2*(1.9*3.08*10^19)^3)*(BesselI[0, (R*3.08*10^19)/(
2*1.9*3.08*10^19)]*
BesselK[0, (R*3.08*10^19)/(2*1.9*3.08*10^19)] -
BesselI[1, (R*3.08*10^19)/(2*1.9*3.08*10^19)]*
BesselK[1, (R*3.08*10^19)/(2*1.9*3.08*10^19)]) +
0.045*10^10*b*(3*10^8)^2*(R*3.08*10^19)/(2*1.9*3.08*10^19)*
BesselI[1, (R*3.08*10^19)/(2*1.9*3.08*10^19)] BesselK[1, (
R*3.08*10^19)/(2*1.9*3.08*10^19)]) +
c/2*(3*10^8)^2*R*3.08*10^19 -
1.1*10^-52*(3*10^8)^2*(R*3.08*10^19)^2), {10^-42 <= b <= 10^-36,
10^-30 <= c <= 10^-26}}, {b, c}, R]
这里我想用带贝塞尔函数的表达式 拟合fp中的数据,但是总是给出错误的结果
2018年11月23日 14点11分 1
吧务
level 15
加了选项Method -> NMinimize之后效果还凑合。或者改用FindFit[fp, {(*你的表达式*)}, {{b, 1/10^42, 1/10^36}, {c, 1/10^30, 1/10^26}}, R] 也可以得到类似的结果。(这个速度更快,不过注意这样其实并没有把结果约束在那个不等式的范围内。)
2018年11月30日 17点11分 2
多谢[吐舌]不过总感觉软件对这个拟合弄得不太好,我自己用循环写了个最小二乘法的程序来搞
2018年12月01日 06点12分
@起风了748 自己编的最小二乘法在性能上胜过FindFit几乎是不可能的,你十有八九是没找到问题的症结所在。
2018年12月01日 07点12分
1