使用纯函数的Root进行拟合

时间:2014-03-14 11:51:13

标签: wolfram-mathematica

我需要根据3个参数求解一个变量的等式

gg[x_, \[Omega]x_, \[Omega]z_] := Solve[force[x, z, \[Omega]x, \[Omega]z] == 0, z][[6, 1, 2]].

我得到的是以下

gg[x_, \[Omega]x_, \[Omega]z_] = Root[-4.4427710843373496874144566600000*10^26 x^2 \[Omega]x^2 + 
2.28560758239644800000000000000000*10^30 \[Omega]z^2 #1 + 
1.11069277108433733641205617536723*10^27 \[Omega]z^2 #1^2 + 
2.1589680420040268140562047245972*10^23 \[Omega]z^2 #1^3 + 
2.0983043771159875881741103609327*10^19 \[Omega]z^2 #1^4 + 
1.01967263372208373631680481830640*10^15 \[Omega]z^2 #1^5 + 
1.9820428176217022632960618784981*10^10 \[Omega]z^2 #1^6 &, 6]

到目前为止一切顺利。我能够对此进行绘制,但是不能简单地将其与一个变量相匹配,其他两个变量作为拟合参数与NonlinearModelfit相对应

NonlinearModelFit[data, gg[x, \[Omega]x, \[Omega]z], {{\[Omega]x, 300000}, {\[Omega]z,40000}}, x].

我收到以下错误:

NonlinearModelFit::nrlnum: The function value {-9134.52+872.949 I,-8039.76+1794.15 I,-7765.74+2048.02 I,-7572.89+2235.07 I,-7380.16+2427.79 I} is not a list of real numbers with dimensions {5} at {\[Omega]x,\[Omega]z} = {300000.,40000.}.

NonlinearModelFit[{{6.8, 0}, {36, 4.8}, {48.3, 9.5}, {58.5, 15}, {70, 
20.4}}, Root[-4.4427710843373496874144566600000*10^26 x^2 \
\[Omega]x^2 + 
2.28560758239644800000000000000000*10^30 \[Omega]z^2 #1 + 
1.11069277108433733641205617536723*10^27 \[Omega]z^2 #1^2 + 
2.1589680420040268140562047245972*10^23 \[Omega]z^2 #1^3 + 
2.0983043771159875881741103609327*10^19 \[Omega]z^2 #1^4 + 
1.01967263372208373631680481830640*10^15 \[Omega]z^2 #1^5 + 
1.9820428176217022632960618784981*10^10 \[Omega]z^2 #1^6 &, 
6], {{\[Omega]x, 300000}, {\[Omega]z, 40000}}, x]

我是否需要将gg [x,omegax,omegaz]函数转换为正常函数以应用NonlinearModelFit?

编辑: 我的力量功能是:

pot[x_, z_, fx_, fz_] := 
 m/2*((2*\[Pi]*fx)^2*x^2*r0^4)/(r0 + z*Tan[\[Theta]])^4 + 
  m/2*(2*\[Pi]*fz)^2*z^2
 force[x_, z_, fx_, fz_] := D[pot[x, z, fx, fz], z]

这里有一些示例数据:

data = {{6.8, 0}, {36, 4.8}, {48.3, 9.5}, {58.5, 15}, {70, 20.4}}; 

0 个答案:

没有答案
相关问题