前提・実現したいこと
数値計算を行うのに必要な値を求めるために、絶対値記号を含む方程式を解く事が目的です。絶対値は|e*φs|で、その中の文字φsの値を,sympyのsolveメソッドを用いて方程式として求めたいのですが、エラーを吐いて計算できない状態になっています。
該当のソースコード欄には、問題が発生している部分までを記載しています。
発生している問題・エラーメッセージ
NotImplementedError: solving Abs(φs) when the argument is not real or imaginary.
該当のソースコード
Python3.7
1import math 2import numpy #ここに記載されているコード中では使用しませんが 3from sympy import * 4import openpyxl 5pi=math.pi #ここから文字の定義 6e=1.602*(10**-19) 7npe0=0 8n0=10.0*(10**-6) 9kB=1.3806 10Tpe=8.6 11Tpe0=Tpe 12Te=3000 13me=9.1094*(10**-31) 14r=0.6*(10**-7) 15φs = symbols('φs', RealNumber = True) #ここまで文字の定義 16kai=solve((e*n0*((kB*Te)/(2*pi*me))**0.5)*exp(-abs(e*φs)/(kB*Te))), φs) #方程式の記述 17print('φs='+str(kai)) #φsの値の書き出し 18#ここから先は該当コードではないため省く
試したこと
絶対値の中身を一つの文字にして(下記コードではz,fにあたる)、先に計算してから方程式に組み込んだりしてみましたが駄目でした。
φs = symbols('φs', RealNumber = True) z=e*φs f=abs(z) print('f='+str(z)) y=e*n0*((kB*Te)/(2*pi*me)**0.5)*exp(-f/(kB*Te)) print('y='+str(y)) kai=solve(e*n0*((kB*Te)/(2*pi*me)**0.5)*exp(-z/(kB*Te)), φs) print('φs='+str(φs))
補足情報(FW/ツールのバージョンなど)
使用している開発環境はSpyderで、Python3.7を使用しています。
PCのOSはwin10です。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/28 01:07
2019/05/28 07:43