前提・実現したいこと
物理現象の数値解析のためにプログラムを書いています。
最終的にエクセルに計算結果を出力したりするのですが、
その仮定で求める必要のある数値を得ようとするとエラーが発生します。
発生している問題・エラーメッセージ
発生している問題は2点あり、
①「Jsec」の値が求まらず、式がそのまま表示される。
②下記のようなエラーの発生。
raise TypeError("can't convert expression to float") TypeError: can't convert expression to float
該当のソースコード
import numpy as np from sympy import * import openpyxl#ここに記載してるコードの後で使用 import math pi=math.pi#ここから各値の設定 e=1.602*(10**-19) npe0=0 n0=10.0*(10**-6) kB=1.3806 Tpe=8.6 Tpe0=Tpe Te=3000 me=9.1094*(10**-31) r=0.6*(10**-7) φs = symbols('φs', real=True)#ここまで値の設定 f=e*n0*((kB*Te)/(2*pi*me)**0.5)*exp(-abs(φs*e)/(kB*Te)) print('f='+str(f)) a=2.7734*10**-6#ここから各値の設定 b=-3.8679*10**-23 c=abs(φs) print('c='+str(c)))#ここまで値の設定 f=a*exp(b*abs(φs)) kai=solve(f,φs) print('φs='+str(φs)) T=290#ここから各値の設定 Vφ=4.52 A=1.20*(10**6)#ここまで値の設定 Je=A*(T**2)*math.exp(-(e*Vφ)/(2*pi*T)) Ie=Je*(4*pi*(r**2)) print('Je='+str(Je)) print('Ie='+str(Ie)) u=symbols('u')#ここから各値の設定 Em=2000 kB=1.3806 Te=12.1#ここまで値の設定 F5= integrate(( (u**5)*exp(-(Em/(4*kB*Te)*(u**2)+u)), 0, oo)) print ('F5='+str(F5)) δm=1.2#値の設定 Jsec=3.7*δm*Je*math.exp(-(abs(e*φs))/(kB*Te))*(Em/(kB*Te))*F5 Isec=Jsec*(4*pi*(r**2))#ここでエラーが発生する print('Jsec='+str(Jsec))#ここの表示はされるが、求まっていないのでエラーが発生している? print('Isec='+str(Isec))#Isecのエラーにより表示できない #実際はここから先もコードが続きます。
試したこと
和訳すると、「表現をfloatに変換できない」というエラーだったので、なら最初から全部floatにすれば変換の必要ないんじゃね?と思って、int型になっているものをfloat型に表記しなおしてみましたが結果は変わりませんでした。何気にkaiの値が[]と表示されているのがどういう意味なのか分からないです。(kai=0の意味でしょうか)
変更前↓
変更後↓(結局floatにしても実行後にint型に変更されてしまう模様)
補足情報(FW/ツールのバージョンなど)
Python3.7のSpyderを使用してコードを書いています。Anacondaに同梱されているやつです。
使用PCはwin10、intel corei7 8th Gen
メモリは8GBのノートPCを使用しています。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/29 01:55
2019/05/29 01:58