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

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

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

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

Python

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

Q&A

0回答

692閲覧

数値の受け渡しができていない.グラフ化できない.

taketake1108

総合スコア2

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2021/12/08 07:46

編集2021/12/08 08:25

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
(例)pythonで数値計算をしています.連立微分方程式をオイラー法によって計算し,グラフ化したいのですができません.
どこかで数値の受け渡しができていないのでしょうか.

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

グラフ化できない.数値計算できていない.

エラーメッセージ エラーメッセージなし.おそらく数値が0であるからグラフにならないのか? ### 該当のソースコード ソースコード python```ここに言語を入力 コード import numpy as np import matplotlib.pyplot as plt from sympy import * import csv from scipy.integrate import odeint import pandas as pd pd.set_option('display.max_rows', None) import pandas as pd pd.read_csv('Cy3 spectrum.csv') df = pd.read_csv('Cy3 spectrum.csv') #df.iloc[0,:] 1行目すべてのデータを取り出す df.iloc[:,1] #2列目すべてのデータを取り出す λ = [] listB = [] λ = df['Wavelength'] listB = df['Emission'] leng = len(λ) max = 0 for n in range(leng): if listB[n]>max: max = listB[n] num = n print(max) import pandas as pd f = lambda x: (x/max) df['Emission'].apply(f) f_D = [] f_D = df['Emission'].apply(f) print(f_D) #規格化吸収スペクトルを入手 最大強度を1 plt.plot(λ,f_D) plt.show() import pandas as pd pd.read_csv('Cy5 spectrum.csv') df = pd.read_csv('Cy5 spectrum.csv') #df.iloc[0,:] 1行目すべてのデータを取り出す df.iloc[:,1] #2列目すべてのデータを取り出す λ = [] listB = [] λ = df['Wavelength'] listB = df['Excitation'] leng = len(λ) max = 0 for n in range(leng): if listB[n]>max: max = listB[n] num = n print(max) import pandas as pd f = lambda x: (250000*x/max)#ε=εA/max df['Emission'].apply(f) ε = [] ε = df['Emission'].apply(f) print(ε) #規格化蛍光スペクトルを入手 plt.plot(λ,ε) plt.show() print(df) #データフレームにε列を追加 df['Abs spe'] = ε #データフレームにf_D列を追加 df['Flu spe'] = f_D import numpy as np import scipy from scipy import integrate import matplotlib.pyplot as plt import pandas as pd J_elem = [] J_elem = (f_D)*(ε)*(λ**4) df['J_elem'] = J_elem J = sum(J_elem)/sum(f_D) print(df) print(J) # フェルスター距離 κ2 = 2/3 n = 1.33 Qd = 0.15 R0 = 0.02108*((κ2)*(n**-4)*(Qd)*J)**(1/6) print(R0, "nm") #FRET効率 r = 3 E = (R0)**6/((R0)**6+(r)**6) print(E) #吸収断面積 import pandas as pd df = pd.read_csv('Cy3 spectrum.csv') f = lambda x: ((3.823*10)**(-2)*250000*x)#ε=εA/max df['Emission'].apply(f) σD = [] σD = df['Emission'].apply(f) print(σD) #吸収断面積(ドナー)を入手 print(σD[250])#波長550 nm df = pd.read_csv('Cy5 spectrum.csv') f = lambda x: ((3.823*10)**(-2)*250000*x)#ε=εA/max df['Emission'].apply(f) σA = [] σA = df['Emission'].apply(f) print(σA) #吸収断面積(アクセプタ)を入手 import numpy as np import matplotlib.pyplot as plt #定数 τD = 3.5#(ns) τA = 3.0#(ns) kFRET = (1/τD)*(r/R0)**(-6)#FRET定数 kD = 1/τD#定数 I = (10**(-2))/(10**(-5))*(10**(-5))#光強度 #導関数dE1/dt def func_dE1dt(t, E1): return (σD[250])*I-(kFRET+kD)*E1#dE1/dt = σD*I-(kFRET+kD)E1 #導関数dE2/dt def func_dE2dt(t, E1,E2): return (σA[343])*I+kFRET*E1-kD*E2#dE2/dt = σA*I+kFRET*E1-kD*E2 #Euler法(導関数E1、導関数E2,tの初期値、E1の初期値、E2の初期値、刻み幅dt) def euler(func_dE1dt, func_dE2dt,t, E1, E2,dt): #初期値と刻み幅 t=0.0 E1=0.0 E2=0.0 dt = 1e-4 t = [] E1 = [] E2 = [] trange = np.arange(0,5.0,dt) for t in trange: dE1 = func_dE1dt(t, E1)*dt dE2 = func_dE2dt(t,E1,E2)*dt#変化量を計算 t += dt #変数を更新 E1 += dE1 E2 += dE2#変化量を加えて更新 t.append(t) E1.append(E1) E2.append(E2) return t, E1,E2 plt.figure(figsize=(7, 3), dpi=100) plt.plot(t, E1, label="E1") plt.plot(t, E2, label="E2") plt.grid() plt.legend() plt.show() コード

試したこと

リスト化できていないと思いt,E1,E2の部分を_t,_E1,_E2として実行したが不可能だった.(name _t is not difined)

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

時間に応じたのエネルギー変化のグラフを出したいのですが,数値が表示されません.
もっとシンプルにオイラー法で求める方法もあるのでしょうか.よろしくお願いします.

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

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

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

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

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

ozwk

2021/12/08 08:06

インデントが消えて何が何だか分からないのでコードはコードブロック内に書いてください
melian

2021/12/08 08:11

r と R0 と σD と σAが未定義です。。。
taketake1108

2021/12/08 08:14

定義したコードを載せ忘れてしまいました.修正します.
ozwk

2021/12/08 08:18

この質問文を見た人がコピペで動かせるようなコードを貼ってください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問