Python How to fix the error probability plot in Python for MIM and PNS attacks?

  • Thread starter Thread starter Nur Ziadah
  • Start date Start date
  • Tags Tags
    Convert Python
AI Thread Summary
The discussion revolves around converting mathematical equations related to error probabilities in MIM and PNS attacks into Python code for graph plotting. The user initially faced issues with the plotted graph not matching the original equations. Specifically, they sought guidance on how to incorporate equation 8.1 into equation 8.5. The provided Python code, which utilizes libraries like Matplotlib and SciPy, was corrected for a misplaced parenthesis, improving the graph's accuracy. However, a runtime error occurred when x=0, leading to a division by zero issue. Despite this, the corrected code produced a graph that resembled the intended output more closely. The user noted that the error probability at N=0 was not aligning with the original graph, indicating ongoing challenges in achieving the desired results.
Nur Ziadah
Messages
34
Reaction score
3
I have several equations and need to convert it into Python. The problem is that I tried to plot a graph according to the equation. However, the graph that I get is not the same as the original one.

In the paper, the equation of error probability for MIM attack is given by:

First Image
jlPMh.png

Second Image
h99h4.png

The equation to calculate the error probability of PNS attack is given by:
7CsYR.png

Where the region condition satisfied:
0Bxa3.png

The error probability of PNS attack should be plotted like this:
1IwAa.png

My question: How to insert equation 8.1 into equation 8.5?

This is my python code according to equation 8.5:

Python:
import matplotlib.pyplot as plt
import math
import numpy as np
from scipy.special import iv,modstruvex=[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()

Please help me regarding this matter.

Thank you.
 

Attachments

  • jlPMh.png
    jlPMh.png
    3.3 KB · Views: 1,149
  • h99h4.png
    h99h4.png
    9.7 KB · Views: 1,195
  • 7CsYR.png
    7CsYR.png
    3.9 KB · Views: 1,132
  • 0Bxa3.png
    0Bxa3.png
    1.5 KB · Views: 1,045
  • 1IwAa.png
    1IwAa.png
    18.6 KB · Views: 1,124
Technology news on Phys.org
When x=0 then N=0 hence the denominator is zero and so you are dividing zero according to the equation.

In your code, you misplaced the last paren. it should look like this:

Python:
y = (   np.exp(x*t/2) * (iv(0,x*t/2) - modstruve(0,x*t/2)) - 1   )  /  (np.exp(x*t/2) - 1)

This code now gives a runtime divide error at zero but the curve looks more like what you want.
 
Thank you so much. Finally I did plot the graph.
 
Thread 'Is this public key encryption?'
I've tried to intuit public key encryption but never quite managed. But this seems to wrap it up in a bow. This seems to be a very elegant way of transmitting a message publicly that only the sender and receiver can decipher. Is this how PKE works? No, it cant be. In the above case, the requester knows the target's "secret" key - because they have his ID, and therefore knows his birthdate.
I tried a web search "the loss of programming ", and found an article saying that all aspects of writing, developing, and testing software programs will one day all be handled through artificial intelligence. One must wonder then, who is responsible. WHO is responsible for any problems, bugs, deficiencies, or whatever malfunctions which the programs make their users endure? Things may work wrong however the "wrong" happens. AI needs to fix the problems for the users. Any way to...

Similar threads

Replies
21
Views
5K
Replies
6
Views
3K
Replies
1
Views
1K
Replies
4
Views
5K
Replies
2
Views
2K
Replies
2
Views
1K
Replies
2
Views
10K
Back
Top