如何不修改牛顿迭代法初始值让mathematica得到方程的根?
Clear["Global`*"];f=2*Log-x^2*Exp+1
fx=D
FindRoot[{f-a*x,fx-a},{{x,20},{a,20}}]
求解结果:
FindRoot::lstol: The line search decreased the step size to within tolerance specified by AccuracyGoal and PrecisionGoal
but was unable to find a sufficient decrease in the merit function. You may need more than MachinePrecision digits of working precision to meet these tolerances.
如何破解这条提示呢?
@chyanog @wayne FindRoot 算法背后是随机算法, 另外, 不是所有函数都可以在任意处的初始值全局收敛的 wayne 发表于 2021-5-11 18:43
FindRoot 算法背后是随机算法, 另外, 不是所有函数都可以在任意处的初始值全局收敛的
唯一的随机数就是初始值,没办法,我只能改初始值了,估计是指数函数增长太快了! wayne 发表于 2021-5-11 18:43
FindRoot 算法背后是随机算法, 另外, 不是所有函数都可以在任意处的初始值全局收敛的
Clear["Global`*"];
f=2*Log-x^2*Exp+1
fx=D
FindRoot[{f-a*x,fx-a},{{x,200},{a,200}},Method->{"Newton",StepControl->"TrustRegion"},Jacobian->"FiniteDifference",MaxIterations->1000]
FindRoot[{f-a*x,fx-a},{{x,20},{a,20}}]
我自己解决了,我自己在帮助文件里面瞎搜索,解决了!留下代码让你们自己对比着看 我都没想到自己能解决这个问题! 升级一下Mathematica吧。现在FindRoot可以退休了。12.3版 直接符号求解,用Solve或者 Reduce,无需初值。
比如:
N-x^2*Exp+1==-1,x,Reals],100]
wayne 发表于 2021-5-22 21:13
升级一下Mathematica吧。现在FindRoot可以退休了。12.3版 直接符号求解,用Solve或者 Reduce,无需初值。
...
wolfram alpha没出结果!
你的运行结果呢?
页:
[1]