答案:一个点电荷
[x,y]=meshgrid(-2:0.1:2,-2:0.1:2);
z=1./sqrt((x).^2+y.^2+0.01);
[dx,dy]=gradient(z,.2,.2);
contour(x,y,z,[-12,-8,-5,-3,-1,-0.5,-0.1,0.1,0.5,1,3,5,8,12]);
hold on
quiver(x,y,dx,dy)
%colormap hsv
hold off
%xx=[linspace(-2,2,6),2*linspace(1,1,6),linspace(-2,2,6),-2*linspace(1,1,6)];
%yy=[2*linspace(1,1,6),linspace(-2,2,6),-2*linspace(1,1,6),linspace(-2,2,6)];
%streamline(x,y,dx,dy,xx,yy);
两个点电荷
v = -2:0.2:2;
[x,y] = meshgrid(v);
z = x .* exp(-x.^2 - y.^2);
[px,py] = gradient(z,.2,.2);
contour(v,v,z), hold on, quiver(v,v,px,py), hold off
天线
clear
delta=pi/100;
theta=0:delta:pi;
phi=0:2*delta:2*pi;
[phi,theta]=meshgrid(phi,theta);
rho=cos((pi/2)*cos(theta)./sin(theta));
r=rho.*sin(theta);
x=r.*cos(phi);
y=r.*sin(phi);
z=rho.*cos(theta);
li=find(y<0);
z(li)=nan;
surf(x,y,z)
axis('square')
三个点电荷
syms x y
for C=0:0.1:3.0
ezplot(2*(y+1)/sqrt((y+1)^2+x^2)-y/sqrt(y^2+x^2)-(y-1)/sqrt((y-1)^2+x^2)-C,[-5,5,0.1]);
hold on;
end
至于线圈产生的磁场,只要换一下解析式。
要是想进行有限元的计算,建议用sciFEA,还是免费的。用ANSYS也行,其它没用过。
其他:子程序:
function ydot=dcx1fun(t,y,flag,p1,p2)%p1,p2是参量,表示电量
ydot=[p1*(y(1)+2)/(sqrt((y(1)+2).^2+y(2).^2).^3)+p2*(y(1)-2)/(sqrt((y(1)-2).^2+y(2).^2).^3);%dx/dt=Ex
p1*y(2)/(sqrt((y(1)+2).^2+y(2).^2).^3)+...
p2*y(2)/(sqrt((y(1)-2).^2+y(2).^2)^3)];%dy/dt=Ey
源程序:
close all
clear all
clc
p1=10;p2=10;%点电荷所带电量
axis([-5,5,-5,5]);%设定坐标轴范围-5<=x<=5,-5<=y<=5
hold on%图形设置,不可擦除模式
plot(2,0,'*r');plot(-2,0,'*r')%绘制两源电荷
a=(pi/24):pi/12:(2*pi-pi/24);%圆周上电场线起点所对应的角度
b=0.1*cos(a);c=0.1*sin(a);%电场线起点所对应的相对坐标
b1=-2+b;b2=2+b;%把起点圆周的圆心放置在原电荷处
b0=[b1 b2];c0=[c c];%初始条件,所有电场线的起点的横、纵坐标构成了矢量b0和c0
for i=1:48%循环求解48次微分方程
[t,y]=ode45('dcx1fun',[0:0.05:40],[b0(i) c0(i)],[],p1,p2);%调用ode45求解,对应一个初始条件(起点),求解出一条电场线
plot(y(:,1),y(:,2),'b')%绘制出此条电场线
end%结束循环,共绘制出48条场线
上一个:急求自适应系数二次指数平滑法做负荷预测matlab程序代码
下一个:matlab用input让用户输入了一个函数,怎样才能判断用户是否输入了合理的表达正确式子,该怎样编写代码