2017-10-10 28 views
1

朱莉娅是否有一个函数与Excel中的求解器函数类似,我可以提供和方程,它会解决未知变量?如果没有,有人知道Excel解算器功能背后的数学吗? 我不期待任何人解决方程,但如果它有帮助:朱莉娅是否有办法解决未知变量

Price =(Earnings_1 /(1 + r)^ 1)+(Earnings_2 /(1 + r)^ 2)++(Earnings_3/(1 + r)^ 3)+(Earnings_4 /(1 + r)^ 4)+(Earnings_5 /(1 + r)^ 5)+((Earnings_5)(RiskFreeRate)^5)(1-RiskFreeRate))

已知变量有:Price,All Earnings和RiskFreeRate。我只是想弄清楚如何解决r。

+1

https://github.com/JuliaOpt/JuMP.jl ?? ?? –

回答

2

将此写为f(r) = 0的表达式,即将Price减去另一边。现在这是一个寻根问题。如果你只有一个变量你正在解决(看起来是这样),那么Roots.jl是一个不错的选择。

fzero(f, a::Real, b::Real) 

将搜索例如ab之间的解决方案,以及文档对算法,更多的选择,当你不知道的范围入手,并只给例如初始条件。

此外,KINSOL in Sundials.jl是很好的,当你知道你开始接近多维根。对于多维且需要一些稳健的初始条件,我建议使用NLsolve.jl

1

没有什么开箱即可。根本发现本身就是一门科学。

幸运的是,你的函数对r有一个解析一阶导数。这意味着你可以使用牛顿拉夫森,这将是非常稳定的你的功能。

我相信你知道你的函数在r = -1时表现不好。

+0

Julia拥有非常分散的软件包生态系统,但相当一致。本质上,所有功能都以包的形式提供,即使是真正基本的类型(如数据帧)也是如此。所以“开箱即用”并不是描述茱莉亚可用性的好方法。 –

+1

@ MichaelK.Borregaard:这就是说(你是专家,而不是我),根本发现是一门非常广泛的科学,在决定解决方案技术之前,你必须亲密地了解你的功能。有一些通用算法可以很好地完成工作(例如,在Microsoft Excel中用于搜索目标的LSGRG),但强大的通用解决方案尚未出现。 – Bathsheba