当前位置:编程学习 > Matlab >>

谁有matlab的电磁学代码?

答案:一个点电荷 [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让用户输入了一个函数,怎样才能判断用户是否输入了合理的表达正确式子,该怎样编写代码

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,