私はいくつかの方程式を持っており、それをPythonに変換する必要があります。問題は、方程式に従ってグラフをプロットしようとしたことです。しかし、私が得たグラフは元のグラフと同じではありません。
この論文では、MIM攻撃のエラー確率の式は次の式で与えられます:
最初の画像
2番目の画像
PNS攻撃のエラー確率を計算する式は次の式で与えられます:
地域の条件が満たされた場合:
PNS攻撃のエラー確率は次のようにプロットする必要があります:
私の質問:式8.1を式8.5に挿入する方法は?
これは私のpython式8.5によるコードです:
import matplotlib.pyplot as plt
import math
import numpy as np
from scipy.special import iv,modstruve
x=[0, 5, 10, 15, 20]
t= 0.9
x = np.array(x)
y = (np.exp(x*t/2)*(iv(0, x*t/2) - modstruve(0,x*t/2))-1)/(np.exp(x*t/2-1))
plt.plot(x, y, label='Normal')
plt.xlabel('Mean photon number N')
plt.ylabel('Error probabiity')
plt.scatter(x,y)
plt.title('N/2')
plt.ylim([0, 0.5])
plt.legend()
plt.show()
この件に関して私を助けてください。
ありがとうございました。
画像に示されている式を使用してN1とN2のyを計算することにより、コードを更新しました。これにより、描画された関数f(y1、y2)のコンポーネントであると私が信じるy1とy2が得られます。それでも、残りの紙がなければ、あなたが提供した画像に何が描かれているのか正確に理解することはできません。
次のコードは、f : y1,y2 -> y1+y2
と非常によく似た画像を生成します。
import matplotlib.pyplot as plt
import numpy as np
from scipy.special import iv, modstruve
x = range(0, 20, 1)
# t= 0.1
for t, color in Zip([0.9, 0.1, 0.5], ['b', 'g', 'r']):
x1 = (1 - t) * np.array(x)
y1 = (np.exp(x1 / 2) * (iv(0, x1 / 2) - modstruve(0, x1 / 2)) - 1) / (np.exp(x1) - 1)
x2 = (1 - t) * t * np.array(x)
y2 = (np.exp(x2 / 2) * (iv(0, x2 / 2) - modstruve(0, x2 / 2)) - 1) / (np.exp(x2) - 1)
y = y1 + y2
plt.plot(x, y, label=t, color=color)
plt.scatter(x, y, color=color)
# N1 = N2
x1 = np.array(x) / 2
y1 = (np.exp(x1 / 2) * (iv(0, x1 / 2) - modstruve(0, x1 / 2)) - 1) / (np.exp(x1) - 1)
x2 = np.array(x) / 2
y2 = (np.exp(x2 / 2) * (iv(0, x2 / 2) - modstruve(0, x2 / 2)) - 1) / (np.exp(x2) - 1)
y = y1 + y2
plt.plot(x, y, label="N1=N2=N/2", color='k')
plt.scatter(x, y, color='k')
plt.xlabel('Mean photon number N')
plt.ylabel('Error probabiity')
plt.title('N/2')
plt.ylim([0, 0.35])
plt.legend()
plt.show()