2017-10-10 12 views
1

Juliaには、Excelのソルバ関数に似ている関数があります。ここでは未知の変数を解くことができますか?そうでない場合は、Excelのソルバー関数の背後にある数学を知っている人はいますか? 誰かが方程式を解くことを期待していませんが、それが役に立ったら:Juliaは未知の変数を解く方法を持っています

価格=(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

もう一方の側にPriceを差し引いて、式f(r) = 0として代わりに書きます。今は根本的な問題です。あなたが解決しようとしている変数が1つしかない場合は、Roots.jlが良い選択です。

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

は、例えばab間のソリューションを検索すると、ドキュメントは、あなたが始めて、唯一例えば初期条件を与えるために範囲を知らないアルゴリズムのためのより多くの選択肢を持っています。

さらに、KINSOL in Sundials.jlは、多次元ルートに近いところから始めていることがわかっているときに適しています。多次元のため、初期状態への堅牢性が必要な場合は、NLsolve.jlを使用することをお勧めします。

1

箱の中には何もありません。根の発見はそれ自体科学です。

あなたのために幸運にも、あなたの関数はrに関して分析的な一次導関数を持ちます。つまり、あなたはニュートンラフソンを使用することができます。これはと非常にが安定しています。

あなたの関数がr = -1付近でうまく動作していないことに気づいたと思います。

+0

ジュリアは非常に偏心したパッケージエコシステムを持っていますが、かなり一貫しています。基本的にすべての機能は、データフレームなどの基本的なタイプであっても、パッケージの形式で利用できます。だから、「すぐに使える」とは、ジュリアで何かが利用できるかどうかを示す良い記述子ではありません。 –

+1

@ MichaelK.Borregaard:それは、(あなたは私ではなく、彼女の専門家です)、根本的な発見は、ソリューションテクニックを決める前に、あなたが常にあなたの機能を親密に知っておく必要がある、幅広い科学であることです。そこにいくつかの一般的なアルゴリズムがあります(例えば、Microsoft Excelでgoalseekingに使用されるLSGRGなど)が良い仕事をしていますが、堅牢な一般的な解決策はまだ現れていません。 – Bathsheba

関連する問題