質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

3758閲覧

Pythonで複雑な方程式を解きたい!

YZYZ

総合スコア20

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

2クリップ

投稿2020/04/13 04:19

前提・実現したいこと

Pythonで方程式を解きたい。
具体的には、

P = C * ((1-(1+r)**(-n)))/r + fv*(1+r)**(-n)

という等式をrについて解きたい。

発生している問題・エラーメッセージ

python

1NotImplementedError Traceback (most recent call last) 2<ipython-input-47-a183add313da> in <module> 3 3 P, C, r, n, fv = sympy.symbols('P C r n fv') 4 4 eq = sympy.Eq(P, C * ((1-1/(1+r)**n))/r + fv/(1+r)**n) 5----> 5 sympy.solve(eq, r) 6 7~\Anaconda3\lib\site-packages\sympy\solvers\solvers.py in solve(f, *symbols, **flags) 8 1169 ########################################################################### 9 1170 if bare_f: 10-> 1171 solution = _solve(f[0], *symbols, **flags) 11 1172 else: 12 1173 solution = _solve_system(f, symbols, **flags) 13 14~\Anaconda3\lib\site-packages\sympy\solvers\solvers.py in _solve(f, *symbols, **flags) 15 1740 16 1741 if result is False: 17-> 1742 raise NotImplementedError('\n'.join([msg, not_impl_msg % f])) 18 1743 19 1744 if flags.get('simplify', True): 20 21NotImplementedError: multiple generators [r, (r + 1)**n] 22No algorithms are implemented to solve equation -C*(1 - (r + 1)**(-n))/r + P - fv*(r + 1)**(-n)

該当のソースコード

Python

1# Solve the equation for r 2import sympy 3from sympy import symbols 4 5P, C, r, n, fv = sympy.symbols('P C r n fv') 6eq = sympy.Eq(P, C * ((1-1/(1+r)**n))/r + fv/(1+r)**n) 7sympy.solve(eq, r)

試したこと

sympyで方程式が解けることは理解したのですが、エラー吐いたためなかなか前に進まないです。自力で30分くらい格闘したので降参します。。。
pythonで方程式を解ける方がいればアドバイスをいただきたく投稿しました。

補足情報(FW/ツールのバージョンなど)

python==3.7
sympy==1.4

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

sympy にその方程式を解くプログラムが実装されていないのだと思います。

[Return a checked solution for f in terms of one or more of the

symbols. A list should be returned except for the case when a linear undetermined-coefficients equation is encountered (in which case a dictionary is returned). If no method is implemented to solve the equation, a NotImplementedError will be raised. In the case that conversion of an expression to a Poly gives None a ValueError will be raised.](https://github.com/sympy/sympy/blob/bdac8f1c7b7d1e29338676442138aaf39a2ab27b/sympy/solvers/solvers.py#L1381-L1383)

Wolfram Alpha でも解けないですね。変数 n が難しすぎるように見えるので、自力で解くか、n に具体的な値を代入して解くか、解析的に評価するか、数値的に評価するかした方が良いと思います。

投稿2020/04/13 06:20

編集2020/04/13 06:21
Paalon

総合スコア266

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問