File size: 1,308 Bytes
f0225be
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import streamlit as st
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# Define the time variable
t = np.linspace(0, 2*np.pi, 100)

# Create a meshgrid for the x and y axes
x, y = np.meshgrid(np.linspace(-1, 1, 100), np.linspace(-1, 1, 100))

# Define the amplitudes and frequencies of the waves
amp_e = st.sidebar.slider('Amplitude of Electric Field', min_value=0.0, max_value=1.0, value=0.5, step=0.1)
amp_b = st.sidebar.slider('Amplitude of Magnetic Field', min_value=0.0, max_value=1.0, value=0.5, step=0.1)
freq = st.sidebar.slider('Frequency of Waves', min_value=1, max_value=10, value=5, step=1)

# Calculate the electric and magnetic fields
e_x = amp_e * np.cos(freq*t)
e_y = np.zeros_like(e_x)
e_z = np.zeros_like(e_x)

b_x = np.zeros_like(e_x)
b_y = amp_b * np.cos(freq*t)
b_z = np.zeros_like(e_x)

# Plot the electric and magnetic fields
fig = plt.figure(figsize=(10, 6))
ax = fig.add_subplot(111, projection='3d')
ax.quiver(x, y, np.zeros_like(x), e_x, e_y, e_z, length=0.1, color='r')
ax.quiver(x, y, np.zeros_like(x), b_x, b_y, b_z, length=0.1, color='b')
ax.set_xlim(-1, 1)
ax.set_ylim(-1, 1)
ax.set_zlim(-1, 1)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.view_init(elev=30, azim=120)

# Display the plot in Streamlit
st.pyplot(fig)