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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

1896閲覧

Sympyを用いた連立方程式解出力の形式について

monkey.0435

総合スコア22

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/07/13 12:23

前提・実現したいこと

Pythonを使って高次元連立方程式を解き,結果をcsvやtxt形式で出力しようと思っています.

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

下のプログラムを実行したところ,結果は以下のようになりました.

[{a: -1, b: 2}, {a: 1, b: 2}, {a: -2sqrt(5)/3, b: -5/3}, {a: 2sqrt(5)/3, b: -5/3}]

結果に平方根(sqrt)が含まれており扱いづらく感じています.
できればルート内も計算し,少数値として結果を取得したいのですが,上手なやり方がわからず困っております.

どなたかよい方法を教えていただけませんか.

該当のソースコード

Python

1import sympy as sp 2 3a = sp.Symbol('a') 4b = sp.Symbol('b') 5 6#数式は適当なものを当て込んでいます. 7expr1 = a**2 + b**2 -5 8expr2 = 3*a**2 + b-5 9 10result = sp.solve([expr1, expr2]) 11 12print(result)

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

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

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

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

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

guest

回答1

0

ベストアンサー

数値解がほしいということでしょうか?
その場合、sp.N() で解析解を数値解に変換できます。

python

1import sympy as sp 2 3a = sp.Symbol("a") 4b = sp.Symbol("b") 5 6# 数式は適当なものを当て込んでいます. 7expr1 = a ** 2 + b ** 2 - 5 8expr2 = 3 * a ** 2 + b - 5 9 10result = sp.solve([expr1, expr2]) 11 12result = [{k: sp.N(v) for k, v in sol.items()} for sol in result] 13print(result) 14# [{a: -1.00000000000000, b: 2.00000000000000}, 15# {a: 1.00000000000000, b: 2.00000000000000}, 16# {a: -1.49071198499986, b: -1.66666666666667}, 17# {a: 1.49071198499986, b: -1.66666666666667}]

投稿2020/07/13 12:35

tiitoi

総合スコア21956

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

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

monkey.0435

2020/07/13 14:35

早速のご回答ありがとうございます! 望みの形式で出力することができました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問