【发布时间】:2017-08-20 05:21:09
【问题描述】:
我必须解决以下超越方程
cos(x)/x=c
对于给定的常数 c。
例如我在 Mathematica 中做了一个简短的代码,其中我为常数 c 生成了一个随机值列表
const = Table[RandomReal[{0, 5}], {i, 1, 10}]
(*{1.67826, 0.616656, 0.290878, 1.10592, 0.0645222, 0.333932, 3.59584, \
2.70337, 3.91535, 2.78268}*)
比我定义的函数
f[x_, i_] := Cos[x]/x - const[[i]]
并开始寻找根源:
Table[FindRoot[f[x, i] == 0, {x, 0.1}][[1, 2]], {i, 1, Length[const]}]
(*{0.517757, 0.947103, 1.21086, 0.694679, 1.47545, 1.16956, 0.26816, \
0.347764, 0.247615, 0.338922}*)
现在我很想在 python 中编写类似的程序(可能使用 numpy?),但我真的找不到任何好的现有答案来解决这样的问题。有人可以帮忙吗?
【问题讨论】:
-
使用随机样本解决这个问题是否重要?如果没有,请查看Newton's method
-
@Michail,不,绝对不是!我只使用随机生成器来提供一些合成数据。在实际情况下,我会有一些实验数据。
-
你想如何处理多个根?找到所有这些重要还是要找到接近 0 的?
-
@ChrisMueller 我只对第一个正根感兴趣。没有了。
标签: python numpy numeric transcendental-equation