前提・実現したいこと
物理現象の数値解析のためにPythonでプログラムを書いています。
各値を設定して、必要な方程式群を解き、
解析対象の加速度と速度を、10^-4秒ずつの時間刻みで、10秒間分のデータを繰り返し計算で求め、その結果をエクセルファイルに書き込み保存しようとしているのですが、計算結果をエクセルに書き込むところでエラーが発生しており、解決できずにいます。
発生している問題・エラーメッセージ
Traceback(most recent call last): File "<ipython-input-5-5b8489e17fa4>", line 1, in <module> runfile('C:/Users/...', wdir='C:/Users/...') File "C:\Users...\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 827, in runfile execfile(filename, namespace) File "C:\Users...\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile exec(compile(f.read(), filename, 'exec'), namespace) File "C:/Users/...", line 112, in <module> ws.cell(column=2, row=i).value=Q File "C:\Users...\Anaconda3\lib\site-packages\openpyxl\cell\cell.py", line 252, in value self._bind_value(value) File "C:\Users...\Anaconda3\lib\site-packages\openpyxl\cell\cell.py", line 218, in _bind_value raise ValueError("Cannot convert {0!r} to Excel".format(value)) ValueError: Cannot convert 0 to Excel
該当のソースコード
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))#0と無限大間の無限積分 print ('F5='+str(F5)) δm=1.2 Jsec=3.7*δm*Je*exp(-(abs(e*φs))/(kB*Te))*(Em/(kB*Te))*F5 c=4*pi*(r**2) print('c='+str(Jsec)) Isec=Jsec*(4*pi*(r**2)) print('Jsec='+str(Jsec)) print('Isec='+str(Isec)) Iall=Ie+Isec print('Iall='+str(Iall)) dt=10**-4 a=r ep0=8.85402*(10**-12) vthe=2*(10**6) vth=vthe Uth=(me*(vth**2))/2 λD=15 E0=φs/λD print('E0='+str(E0)) C=1.30*(10**-2) Tee=2.5 s=1.20*(10**6) S=0.88#0.75~0.88 b=sqrt((2*C*(S**2)/(pi*ep0*a))-2*(E0**2)) print('b='+str(b)) Qini=(((0.5*C*Tee)/e)*((s/Tee)*b)+1)*e+(2*pi*(a**2)*ep0*E0) print('Qini='+str(Qini)) dQ=Qini print('dQ='+str(dQ)) mdust=2.71*(10**(-15)) Qold=0 Vtold=0 t=0 i=1 wb=openpyxl.Workbook()#エクセルファイルの作成、 ws=wb.active while t<11: #ここから繰り返し計算開始。 Q=Iall*t print('Q='+str(Q)) Qt=Iall*(dt)#Q(t-1) print('Qt='+str(Qt)) adust=((Qold+dQ)*E0)/mdust print('adust='+str(adust)) Vt=Vtold+adust*dt print('Vt='+str(Vt)) i=i+1 #ここから下でエラー発生 ws.cell(column=1, row=i).value=t ws.cell(column=2, row=i).value=Q ws.cell(column=3, row=i).value=Qt ws.cell(column=4, row=i).value=adust ws.cell(column=5, row=i).value=Vt i +=1 Qold=Q Vtold=Vt t +=dt else: wb.save('mass_flow.xlsx') print('稼働終了')
試したこと
下記URLを参考に、importの文を変えたり、wb.saveの文を変えたりしてみましたが解決できませんでした。
[https://www.soudegesu.com/post/python/create-excel-with-openpyxl/#%E6%96%B0%E8%A6%8Fexcel%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E4%BD%9C%E6%88%90]
import openpyxl#変更前 from openpyxl import Workbook#変更後
wb.save('mass_flow.xlsx') #変更前 wb.save(filename='mass_flow.xlsx')#変更後
補足情報(FW/ツールのバージョンなど)
Python3.7のSpyderを使用してコードを書いています。Anacondaに同梱されているやつです。
使用PCはwin10、intel corei7 8th Gen
メモリは8GBのノートPCを使用しています。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/31 15:21
2019/06/09 12:02 編集
2019/06/14 01:06
2019/06/28 08:48