Wolfram mathematica 使用纯函数的根进行拟合

Wolfram mathematica 使用纯函数的根进行拟合,wolfram-mathematica,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.28560758239644800000000

我需要解一个方程,一个变量依赖于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[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]函数转换为普通函数以应用非线性模型拟合

编辑: 我的部队职能是:

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}}; 

正如错误消息所述,gg在参数的某些值处有一个复杂的值。非线性模型需要拟合实值函数。你能编辑你的文章,包括你的精确力函数,并包括你的数据的一个小样本,足以有一些适合,即使它不是你最终寻找的最佳适合,但仍然会给出完全相同的错误?然后其他人可以实际运行您的代码,查看错误的来源,然后尝试提供有关如何修复错误的建议?谢谢你能解释一下为什么你总是选择solve返回的第六个解决方案吗?其他一些选择可能是真实的。一些线索和错误告诉我,第六根是我正在寻找的。每一个根都是以太复数或一个大的负数(我对此不感兴趣)。一个问题可能是,当x=0时,只有一个根,这导致了一个错误,当取解的第六个元素时。我试着用分段定义来消除这个错误,但对拟合没有帮助。