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)