※ 引述《knutten (biker)》之铭言:
: 大家好, 小弟是matlab新手, 正在努力学matlab中.
: 我在一本书看到以下的程式, 但是书上的例子是设定上面的电压是100V, 两侧和底部的电压是0V.
: 但是我想要模拟成上面电压1500V, 两侧和底部的电压是700V, 可是好像得不到答案,
: 所以只能将上部取800V, 两侧和底部的电压是0V, 用压差来模拟, 请问有没有什么方法可以
: 模拟成上面电压1500V, 两侧和底部的电压是700V?
这不就FDM? 重新定义一下边界条件应该就可以了吧?
v0=1500;hx=11;hy=9;
v00=700;
: v1=zeros(hy,hx);
: v1(hy,:)=ones(1,hx)*v0;
: v1(2:hy-1,2:hx-1)=ones(hy-2,hx-2);
%原文上面这行我其实不知道有啥意义 只是代个起始值而已用0和用1应该没差很多
v2=v00*ones(hy,hx);maxt=1;t=0; %这行这样才会定义到v2 700V那些边的边界条件
: v2(hy,:)=v1(hy,:);
: while (maxt>0.1)
: for i=2:hy-1
: for j=2:hx-1
: v2(i,j)=(v1(i,j-1)+v1(i,j+1)+v1(i-1,j)+...
: v1(i+1,j))/4;
: t=v2(i,j)-v1(i,j);
: maxt=0;
: if(t>maxt) maxt=t; end
: end
: end
: v1=v2;
: end
: subplot(1,2,1),surf(v2)
: axis ([0,11,0,9,1,800])
: subplot(1,2,2),
: contour(v2);
: hold on;
: x=1:1:11;y=1:1:9;
: [xx,yy]=meshgrid(x,y);
: [Gx,Gy]=gradient(v2,0.6,0.6);
: quiver (xx,yy,Gx,Gy,'r'),
: hold off