hrefspace

 找回密码
 立即注册
搜索
热搜: PHP PS 程序设计
查看: 1051|回复: 6

如何不修改牛顿迭代法初始值让mathematica得到方程的根?

[复制链接]

523

主题

523

帖子

1599

积分

大司空

Rank: 5Rank: 5

积分
1599
发表于 2023-10-4 13:12:40 | 显示全部楼层 |阅读模式
  1. Clear["Global`*"];f=2*Log[x]-x^2*Exp[x]+1fx=D[f,{x}]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
回复

使用道具 举报

0

主题

171

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2023-10-4 13:12:56 | 显示全部楼层
FindRoot 算法背后是随机算法, 另外, 不是所有函数都可以在任意处的初始值全局收敛的
回复

使用道具 举报

0

主题

185

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2023-10-4 13:13:21 | 显示全部楼层
唯一的随机数就是初始值,没办法,我只能改初始值了,估计是指数函数增长太快了!
回复

使用道具 举报

0

主题

195

帖子

38

积分

新手上路

Rank: 1

积分
38
发表于 2023-10-4 13:13:27 | 显示全部楼层
wayne 发表于 2021-5-11 18:43
FindRoot 算法背后是随机算法, 另外, 不是所有函数都可以在任意处的初始值全局收敛的
  1. Clear["Global`*"];f=2*Log[x]-x^2*Exp[x]+1fx=D[f,{x}]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}}]
复制代码

我自己解决了,我自己在帮助文件里面瞎搜索,解决了!留下代码让你们自己对比着看
回复

使用道具 举报

0

主题

198

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2023-10-4 13:13:52 | 显示全部楼层
我都没想到自己能解决这个问题!
回复

使用道具 举报

0

主题

166

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2023-10-4 13:13:57 | 显示全部楼层
升级一下Mathematica吧。现在FindRoot可以退休了。12.3版 直接符号求解,用Solve或者 Reduce,无需初值。

比如:
  1. N[SolveValues[2*Log[x]-x^2*Exp[x]+1==-1,x,Reals],100]
复制代码
回复

使用道具 举报

0

主题

167

帖子

17

积分

新手上路

Rank: 1

积分
17
发表于 2023-10-4 13:14:38 | 显示全部楼层
wolfram alpha没出结果!
你的运行结果呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|hrefspace

GMT+8, 2024-11-22 05:02 , Processed in 0.060780 second(s), 22 queries .

Powered by hrefspace X3.4 Licensed

Copyright © 2022, hrefspace.

快速回复 返回顶部 返回列表