Mathematica中FindRoot未返回预期结果的技术咨询
问题诊断与修复
你的代码里有个极易忽略的细节错误:FindRoot中使用的变量名和自定义函数的变量名不匹配。
你定义的函数是F[L_],变量为L,但在FindRoot里却写了{x, 55}——Mathematica无法建立x和函数F的关联,自然没法返回正确的求解结果。
修正后的代码
只需把FindRoot里的x替换成L即可:
F[L_] := (ArcTan[(L + 80)/25]/Pi + 0.6)*(0.55 - 0.4*Cos[(Pi/100)*(L + 10)]) FindRoot[F[L] == 0.8, {L, 55}]
结果验证
运行修正后的代码,会得到类似{L -> 54.7267}的结果,你可以代入函数验证准确性:
F[54.7267]
输出会接近0.8,完全符合你的预期。
如果担心初始值选择是否合理,还可以先通过Plot[F[L], {L, 0, 100}]再次确认函数在55附近的走势,确保初始值落在根的邻近区域,让FindRoot更高效地收敛。
内容的提问来源于stack exchange,提问作者Apple Cola
相关产品推荐
相关产品推荐

