Hello everybody, I'm doing a physics project with Matlab. There are some problems and I hope you and everyone here can help me.
The project is:
Draw the electric field and the vector of electric field intensity.The requirements are: • Initialize variables (e.g., potential V(x,y), graphics).• Evaluate electric field as Ex = – dV/ x and Ey = – dV/ y.• Loop over all grid points and evaluate V(x,y) and E(x,y) on grid.• Compute potential at the grid point.• Compute components of the electric field. • Normalize E-field vectors to unit length.• Plot contours of constant electric potential.• Add electric field direction to potential contour plot.
I have found a code for reference but I don't understand it and when I tested with Matlab, the code had a problem. Here's the code:
if true % code
% e_and_v - Compute electric field from potential
% and graph potential contours and E-field direction
clear all; help e_and_v; % Clear memory; print header
%@ Initialize variables (e.g., potential V(x,y), graphics)
fprintf('Enter potential V(x,y) as an equation \n'); fprintf('For example: log(x^2 + y^2) \n'); V = input(': ','s'); % Read in V(x,y) as text string
NGrid = 20; % Number of grid points for plots
xMax = 5; % Values plotted from x= -xMax to x= xMax
yMax = xMax; % Values plotted from y= -yMax to y= yMax
for i=1:NGrid xPlot(i) = -xMax + (i-1)/(NGrid-1)*(2*xMax); % x values to plot
yPlot(i) = -yMax + (i-1)/(NGrid-1)*(2*yMax); % y values to plot
end %@ Evaluate electric field as Ex = (-1)*dV/dx and Ey = (-1)*dV/dy
% Note use of symop command to perform symbolic multiplication by -1
Ex = symop( '-1', '*', diff(V,'x') ); Ey = symop( '-1', '*', diff(V,'y') ); fprintf('Electric field components are \n'); disp(['x component : ', Ex]); disp(['y component : ', Ey]); %@ Loop over all grid points and evaluate V(x,y) and E(x,y) on grid
for i=1:NGrid y = yPlot(i); for j=1:NGrid x = xPlot(j); %@ Compute potential at the grid point
VPlot(i,j) = eval( V ); % Potential V(x,y)
%@ Compute components of the electric field
ExPlot(i,j) = eval( Ex ); EyPlot(i,j) = eval( Ey ); %@ Normalize E-field vectors to unit length
MagnitudeE = sqrt( ExPlot(i,j)^2 + EyPlot(i,j)^2 ); ExPlot(i,j) = ExPlot(i,j)/MagnitudeE; EyPlot(i,j) = EyPlot(i,j)/MagnitudeE; end end end
Here's the error:
??? Undefined function or method 'symop' for input arguments oftype 'sym'.Error in ==> Untitled at 17Ex = symop( '-1', '*', diff(V,'x') );
Can anyone explain the code and the error for me? For the code, I don't understand the thing:
if true for i=1:NGrid xPlot(i) = -xMax + (i-1)/(NGrid-1)*(2*xMax); % x values to plot yPlot(i) = -yMax + (i-1)/(NGrid-1)*(2*yMax); % y values to plot end %@ Evaluate electric field as Ex = (-1)*dV/dx and Ey = (-1)*dV/dy % Note use of symop command to perform symbolic multiplication by -1 Ex = symop( '-1', '*', diff(V,'x') ); Ey = symop( '-1', '*', diff(V,'y') ); endand if true for i=1:NGrid y = yPlot(i); for j=1:NGrid x = xPlot(j); %@ Compute potential at the grid point VPlot(i,j) = eval( V ); % Potential V(x,y) %@ Compute components of the electric field ExPlot(i,j) = eval( Ex ); EyPlot(i,j) = eval( Ey ); end
Thank you so much. Your help will be really appreciated.
Best Answer