亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pdegui.m

?? 《MATLAB數值計算》最新版本的全部代碼Numerical.Computing.With.MATLAB
?? M
字號:
function pdegui(action)
%PDEGUI  Demonstrate solution of model partial differential equations.
% PDEGUI demonstrates the finite difference solution of model problems
% involving Laplace's operator:
%      del^2_U = partial^2_U/partial_x^2 + partial^2_U/partial_y^2.
%
% The PDEs are:
%      Poisson equation, del^2_U = f, f = -1.
%      Heat equation, partial_U/dt = del^2_U - f.
%      Wave equation, partial^2_U/partial_t^2 = del^2_U.
%      Eigenvalue equation, del^2_U + lambda U = 0.
%
% The regions are: 
%      Square.
%      L-shaped.
%      H-shaped.
%      Disc.
%      Annulus.
%      Heart.
%      An pair of "isospectral" drums with the same eigenvalues.
%
% The boundary values are u = 0 outside the region.  The initial values for
% the heat and wave equations are impulses at random points in the region.
% You can vary the grid spacing, h.  Decreasing h increases accuracy,
% but also increases memory requirements and computation time.
% For the heat equation, you can set sigma = delta_t/h^2.
% For the wave equation, you can set sigma = delta_t^2/h^2.
% If sigma is too large, the time-stepping methods are unstable.
% For the eigenvalue problem, you can set the eigenvalue index.

if nargin == 0
   Initialize_GUI
   action = 'restart';
end
drawnow

if isequal(action,'restart') | ...
   isequal(action,'h+') | isequal(action,'h-')

   % Find the buttons

   regionobj = findobj('tag','region');
   regionstr = get(regionobj,'string');
   region = regionstr{get(regionobj,'value')};
   eqnobj = findobj('tag','eqn');
   eqn = get(eqnobj,'value');
   hobj = findobj('tag','h');
   sigind = findobj('tag','sigind');
   indxobj = findobj('tag','indx');
   sigmaobj = findobj('tag','sigma');
   plusobj = findobj('tag','plus');
   minusobj = findobj('tag','minus');
   stopobj = findobj('string','stop');

   % Set button visibility 

   switch eqn
      case {1,5}  % Poisson, Grid
         set([sigind,indxobj,sigmaobj,plusobj,minusobj,stopobj],'vis','off');
      case 2      % Heat
         set(sigind,'vis','on','string','sigma =');
         set(indxobj,'vis','off');
         set(sigmaobj,'vis','on','string','0.250','userdata',0.250);
         set([plusobj,minusobj,stopobj],'vis','on');
      case 3      % Wave
         set(sigind,'vis','on','string','sigma =');
         set(indxobj,'vis','off');
         set(sigmaobj,'vis','on','string','0.500','userdata',0.500);
         set([plusobj,minusobj,stopobj],'vis','on');
      case 4      % Eigenvalue
         set(sigind,'vis','on','string','index =');
         set([sigmaobj,stopobj],'vis','off');
         set([indxobj,plusobj,minusobj],'vis','on');
   end

   % Adjust h

   h = str2num(get(hobj,'string'));
   if isequal(action,'h+')
      h = 1/round(1/h+3);
      set(hobj,'string',sprintf('1/%.0f',1/h))
   elseif isequal(action,'h-') & (h < 1/3)
      h = 1/round(1/h-3);
      set(hobj,'string',sprintf('1/%.0f',1/h))
   end

   % Generate the mesh

   [x,y] = meshgrid(-1:h:1);
   [xv,yv,scale] = vertices(region);
   [in,on] = inregion(x,y,xv,yv);
   if isequal(region,'Annulus')
      in = in - inregion(x,y,xv/2,yv/2);
      xv = [xv NaN xv/2];
      yv = [yv NaN yv/2];
   end
   p = find(in-on);
   G = zeros(size(x));
   G(p) = 1:length(p);
   
   % Generate the discrete Laplacian.

   A = -delsq(G);
   n = size(A,1);
   
   % Initialize the solution

   t = 0;
   lambda = [];
   switch eqn
      case {2,3}      % Heat, Wave
         p = find(G>0);
         n = length(p);
         q = ceil(n*rand);
         x0 = x(p(q));
         y0 = y(p(q));
         r = (x(p)-x0).^2 + (y(p)-y0).^2;
         if eqn == 2, c = 1; else c = 1/6; end
         u = c*exp(-5*r);
         v = zeros(n,1);
      otherwise
         u = [];
         v = [];
   end

   % Save everything in figure's userdata.

   data.eqn = eqn; data.G = G; data.A = A; data.x = x; data.y = y;
   data.h = h; data.n = n; data.u = u; data.v = v; data.t = t;
   data.lambda = lambda; data.xv = xv; data.yv = yv; data.scale = scale;
   set(gcf,'userdata',data);

else

   % Adjust sigma or index.

   eqn = get(findobj('tag','eqn'),'value');
   if eqn == 4
      indxobj = findobj('tag','indx');
      indx = str2num(get(indxobj,'string'));
      if isequal(action,'+')
         indx = indx + 1;
      elseif isequal(action,'-')
         indx = max(1,indx - 1);
      end
      set(indxobj,'string',int2str(indx));
   else
      sigmaobj = findobj('tag','sigma');
      sigma = str2num(get(sigmaobj,'string'));
      if isequal(action,'+')
         sigma = sigma + .001;
      elseif isequal(action,'-')
         sigma = sigma - .001;
      end
      set(sigmaobj,'string',sprintf('%6.3f',sigma));
   end

end

% Retrieve parameters
      
data = get(gcf,'userdata');
A = data.A; u = data.u; v = data.v; t = data.t; scale = data.scale;
n = data.n; h = data.h; x = data.x; y = data.y; G = data.G;
xv = data.xv; yv = data.yv;

% Begin main loop

stopobj = findobj('string','stop');
closeobj = findobj('string','close');
set(stopobj,'userdata',0)
set(closeobj,'vis','off')

while get(stopobj,'userdata') == 0
   switch eqn
      case 1
         % Solve sparse linear system Au = f with f = -1,
         % scaled so that max(abs(u)) = 1.
         f = -h^2*scale*ones(n,1);
         u = A\f;
         set(stopobj,'userdata',1)
      case 2
         % One step for heat equation
         sigmaobj = findobj('tag','sigma');
         sigma = str2num(get(sigmaobj,'string'));
         f = -h^2*scale*ones(n,1);
         t = t + sigma*h^2;
         u = u + sigma*(A*u - f);
         data.t = t;
         data.u = u;
      case 3
         % One step for wave equation
         sigmaobj = findobj('tag','sigma');
         sigma = str2num(get(sigmaobj,'string'));
         t = t + sqrt(sigma)*h;
         w = u;
         u = 2*u - v + sigma*A*u;
         v = w;
         data.t = t;
         data.u = u;
         data.v = v;
      case 4
         % Some eigenvalues already computed; maybe need more.
         indxobj = findobj('tag','indx');
         indx = str2num(get(indxobj,'string'));
         if indx >= n
            indx = n-1;
            set(indxobj,'string',num2str(n-1))
         end
         while indx > length(data.lambda)
            k = min(length(data.lambda)+10,n-1);
            [u,lambda] = eigswatch(-(1/h^2)*A,k);
            data.lambda = lambda;
            data.u = u; 
         end
         lambda = data.lambda(indx);
         u = data.u(:,indx);
         u = u/u(min(find(abs(u(:))==max(abs(u(:))))));
         set(stopobj,'userdata',1)
      case 5
         % Show grid, no computation
         u = ones(n,1);
         set(stopobj,'userdata',1)
   end

   % Map the solution onto the grid and display it.

   U = zeros(size(x));
   p = find(G>0);
   U(p) = u;
   U(U>1) = 1;
   U(U<-1) = -1;
   set(gcf,'renderer','painters')
   if eqn < 5
      contourf(x,y,U,-1:1/8:1)
   else
      ms = max(4,min(14,ceil(100*h)));
      plot(x(p),y(p),'.','markersize',ms,'color',[0 2/3 0])
   end
   line(xv,yv,'color','black')
   set(gca,'color',get(gcf,'color'),'xtick',[],'ytick',[])
   axis square
   caxis([-1 1])
   switch eqn
      case {2,3}
         xlabel(sprintf('t = %9.4f',t));
      case 4
         xlabel(sprintf('lambda(%2d) = %9.4f',indx,lambda))
      case 5
         xlabel(sprintf('n = %.0f',n));
      otherwise
   end
   drawnow
   set(gcf,'userdata',data)
end
set(stopobj,'vis','off')
set(closeobj,'vis','on')


% ------------------------------------------------------------------------

function Initialize_GUI
clf reset
set(gcf,'doublebuffer','on','menubar','none', ...
   'numbertitle','off','name','PDE gui','userdata',1);
set(gca,'pos',[.11 .11 .6 .815])
uicontrol( ...
     'tag','region', ...
     'style','list', ...
     'units','normal', ...
     'position',[.75 .55 .23 .35], ...
     'string',{'Square','L','H','Disc','Annulus', ...
        'Heart','Drum1','Drum2'}, ...
     'fontsize',12, ...
     'value',1, ...
     'callback','pdegui(''restart'')')
uicontrol( ...
     'tag','eqn', ...
     'style','list', ...
     'units','normal', ...
     'position',[.75 .30 .23 .22], ...
     'string',{'Poisson','Heat','Wave','Eigenvalue','Grid'}, ...
     'fontsize',12, ...
     'value',1, ...
     'callback','pdegui(''restart'')')
uicontrol( ...
     'style','text', ...
     'units','normal', ...
     'position',[.75 .22 .10 .06], ...
     'background',get(gcf,'color'), ...
     'string','   h = ', ...
     'fontsize',12)
uicontrol( ...
     'tag','h', ...
     'style','edit', ...
     'units','normal', ...
     'position',[.85 .22 .08 .06], ...
     'string','1/24', ...
     'backgroundcolor',[1 1 1], ...
     'fontsize',12, ...
     'callback','pdegui(''restart'')')
uicontrol( ...
     'tag','hminus', ...
     'style','pushbutton', ...
     'units','normal', ...
     'position',[.93 .22 .03 .03], ...
     'string','-', ...
     'fontsize',12, ...
     'callback','pdegui(''h-'')')
uicontrol( ...
     'tag','hplus', ...
     'style','pushbutton', ...
     'units','normal', ...
     'position',[.93 .25 .03 .03], ...
     'string','+', ...
     'fontsize',12, ...
     'callback','pdegui(''h+'')')
uicontrol( ...
     'tag','sigind', ...
     'style','text', ...
     'units','normal', ...
     'position',[.75 .14 .10 .06], ...
     'background',get(gcf,'color'), ...
     'string','', ...
     'fontsize',12)
uicontrol( ...
     'tag','indx', ...
     'style','edit', ...
     'units','normal', ...
     'position',[.85 .14 .08 .06], ...
     'string','1', ...
     'userdata',1, ...
     'backgroundcolor',[1 1 1], ...
     'fontsize',12, ...
     'callback','pdegui(''indx'')')
uicontrol( ...
     'tag','sigma', ...
     'style','edit', ...
     'units','normal', ...
     'position',[.85 .14 .08 .06], ...
     'string','0.250', ...
     'userdata',0.250, ...
     'backgroundcolor',[1 1 1], ...
     'fontsize',12);
uicontrol( ...
     'tag','minus', ...
     'style','pushbutton', ...
     'units','normal', ...
     'position',[.93 .14 .03 .03], ...
     'string','-', ...
     'fontsize',12, ...
     'callback','pdegui(''-'')')
uicontrol( ...
     'tag','plus', ...
     'style','pushbutton', ...
     'units','normal', ...
     'position',[.93 .17 .03 .03], ...
     'string','+', ...
     'fontsize',12, ...
     'callback','pdegui(''+'')')
uicontrol( ...
     'style','pushbutton', ...
     'units','normal', ...
     'position',[.80 .05 .12 .06], ...
     'string','stop', ...
     'fontsize',12, ...
     'userdata',0, ...
     'callback','set(findobj(''string'',''stop''),''userdata'',1)');
uicontrol( ...
     'style','toggle', ...
     'units','normal', ...
     'position',[.80 .05 .12 .06], ...
     'string','close', ...
     'fontsize',12, ...
     'userdata',0, ...
     'callback','close(gcf)');


% ------------------------------------------------------------------------

function [u,lambda] = eigswatch(A,k)
% [u,lambda] = eigswatch(A,k)
% Modify pointer and text while computing k smallest
% eigenvalues and eigenvectors of sparse matrix A.

ps = get(gcf,'pointer');
set(gcf,'pointer','watch')
sigind = findobj('tag','sigind');
str = get(sigind,'string');
set(sigind,'string','computing')
drawnow
opts.disp = 0;
[u,lambda] = eigs(A,k,0,opts);
[lambda,p] = sort(diag(lambda));
u = u(:,p);
set(sigind,'string',str)
set(gcf,'pointer',ps)


% ------------------------------------------------------------------------

function [xv,yv,scale] = vertices(region)

% (xv,yv) = vertices of where region
% scale = max(U) where del^2 U = -1 in region.

switch region
   case 'Square'
      xv = [-1 1 1 -1 -1];
      yv = [-1 -1 1 1 -1];
      scale = 3.394; 
   case 'L'
      xv = [0 1 1 -1 -1 0 0];
      yv = [0 0 1 1 -1 -1 0];
      scale = 6.702;
   case 'H'
      xv = [0 1 1 2 2 1 1 -1 -1 -2 -2 -1 -1 0]/2; 
      yv = [1 1 2 2 -2 -2 -1 -1 -2 -2 2 2 1 1]/2;
      scale = 8.387;
   case 'Disc'
      z = exp(2*pi*i*(0:128)/128);
      xv = real(z);
      yv = imag(z);
      scale = 3.960;
   case 'Annulus'
      z = exp(2*pi*i*(0:128)/128);
      xv = real(z);
      yv = imag(z);
      scale = 30.12;
   case 'Heart'
      t = 0:pi/64:pi;
      xv = sin(t);
      yv = sin(t)-2*cos(t)/3;
      xv = [-fliplr(xv) xv];
      yv = [fliplr(yv) yv]-1/3; 
      scale = 8.926;
   case 'Drum1'
      xv = [-3 -3 1 1 3 1 -1 -1 -3]/3;
      yv = [-3 -1 3 1 1 -1 -1 -3 -3]/3;
      scale = 14.96;
   case 'Drum2'
      xv = [-1 -3 -3 1 1 3 1 -1 -1]/3;
      yv = [-3 -1 1 1 3 1 -1 -1 -3]/3;
      scale = 15.35;
end

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看不卡视频| 99热精品国产| 成人精品高清在线| av在线免费不卡| 91视频免费看| 欧美伦理电影网| 精品免费一区二区三区| 久久精品亚洲麻豆av一区二区| 精品国产乱码久久| 亚洲美女偷拍久久| 麻豆一区二区三| 成人蜜臀av电影| 91精品欧美久久久久久动漫 | 欧美精品一区二区久久婷婷| 国产亚洲精品久| 午夜成人免费视频| 成人激情小说网站| 欧美成人a视频| 一区二区三区免费在线观看| 日韩vs国产vs欧美| 成人h精品动漫一区二区三区| 欧美在线free| 亚洲国产精品99久久久久久久久| 一二三区精品视频| 国产毛片精品一区| 91精品国产91热久久久做人人| 国产无人区一区二区三区| 亚洲午夜羞羞片| 91浏览器打开| 中文字幕乱码日本亚洲一区二区| 天天色天天操综合| 欧美视频一二三区| 亚洲精品一卡二卡| 91精品福利视频| 亚洲精品v日韩精品| 99久久精品国产精品久久| 欧美激情一二三区| 国产91精品久久久久久久网曝门| 欧美mv日韩mv国产网站app| 日韩精品免费视频人成| 在线观看91精品国产入口| 亚洲精品综合在线| 欧美日韩亚洲国产综合| 一区二区三区高清在线| 欧美午夜片在线看| 亚洲第一会所有码转帖| 日韩一级大片在线观看| 久久国产尿小便嘘嘘| 久久蜜桃香蕉精品一区二区三区| 日本一区二区综合亚洲| 国产mv日韩mv欧美| 日本一区二区三区在线观看| 国产一区二区三区精品欧美日韩一区二区三区 | 精东粉嫩av免费一区二区三区| 欧美日韩黄色影视| 蜜桃精品视频在线观看| 99视频精品免费视频| 亚洲国产欧美在线| 精品美女在线播放| 国产麻豆精品视频| 日韩美女久久久| 欧美精品一二三| 国产一区二区在线电影| 成人免费一区二区三区视频 | 欧美亚一区二区| 日产国产高清一区二区三区| 日韩欧美国产高清| 美腿丝袜亚洲综合| 中文字幕一区不卡| 欧美一级淫片007| 成人午夜av在线| 日本伊人色综合网| 一区二区三区四区蜜桃| 在线亚洲一区二区| 奇米影视一区二区三区小说| 国产精品久久久久影院色老大| 91丨porny丨国产| 免费观看一级欧美片| 亚洲精品写真福利| 中文字幕不卡的av| 欧美mv日韩mv亚洲| 国产一区二区精品在线观看| 日韩午夜在线观看视频| 日本欧美肥老太交大片| 国产精品 欧美精品| 一区二区三区日本| 中文字幕乱码日本亚洲一区二区 | 国产久卡久卡久卡久卡视频精品| 一区二区三区国产精品| 国产精品天干天干在观线| 欧美日韩亚洲丝袜制服| 91网站在线播放| 处破女av一区二区| 国产一区 二区| 精品一区二区三区日韩| 久久国产综合精品| 男男成人高潮片免费网站| 精品美女被调教视频大全网站| 欧美特级限制片免费在线观看| 99精品欧美一区二区三区综合在线| 亚洲男人天堂av网| 亚洲视频香蕉人妖| 久久综合精品国产一区二区三区 | 午夜精品久久久| 国产成人午夜电影网| 国产福利视频一区二区三区| 激情综合色播五月| 国产精品一区二区三区四区| 精品中文字幕一区二区小辣椒| 欧美mv和日韩mv国产网站| 中文字幕中文在线不卡住| 亚洲日本成人在线观看| 午夜视频在线观看一区| 久久精品国产精品亚洲综合| 成人v精品蜜桃久久一区| 在线国产亚洲欧美| 9191成人精品久久| 国产精品私人影院| 亚洲午夜在线视频| 国产在线视频一区二区三区| 91丨porny丨国产入口| 日韩一卡二卡三卡四卡| 亚洲视频在线一区观看| 午夜精品影院在线观看| 国产在线观看一区二区| 色婷婷久久综合| 久久天天做天天爱综合色| 亚洲蜜桃精久久久久久久| 国产二区国产一区在线观看 | 国产成人h网站| 中文字幕乱码亚洲精品一区| 奇米影视一区二区三区小说| 色综合激情五月| 欧美成人a在线| 成人免费在线播放视频| 高清久久久久久| 国产欧美一区二区精品性色超碰| 亚洲午夜免费视频| 美女免费视频一区二区| 99精品国产91久久久久久| 久久精品一区二区三区av| 久久99精品一区二区三区| 日韩精品在线一区二区| 亚洲一区在线观看免费| 欧洲亚洲国产日韩| 亚洲高清久久久| 欧美精品在欧美一区二区少妇| 亚洲综合无码一区二区| 91影视在线播放| 日韩精品午夜视频| 久久综合中文字幕| 欧洲激情一区二区| 国产精品久久久久久久久搜平片 | 精品国产伦理网| 久久精品国产99国产精品| 日韩丝袜美女视频| 成人美女视频在线观看18| 国产嫩草影院久久久久| 欧美精选在线播放| 亚洲成人精品在线观看| 精品视频在线免费| 精品一区二区三区影院在线午夜| 久久精品免费在线观看| 91在线视频观看| 激情文学综合丁香| 制服丝袜中文字幕亚洲| 日韩激情在线观看| 精品奇米国产一区二区三区| jlzzjlzz亚洲日本少妇| 美洲天堂一区二卡三卡四卡视频 | 美女视频一区二区三区| 91精品婷婷国产综合久久性色| 风间由美性色一区二区三区| 亚洲国产成人午夜在线一区| 欧美男女性生活在线直播观看| www.日韩av| 成人av电影观看| av午夜一区麻豆| 波多野结衣视频一区| 免费在线视频一区| 日本午夜一本久久久综合| 国产精品久久久久久久久久免费看| 日韩精品一区二区在线| 欧美中文字幕一二三区视频| 99视频在线精品| 91香蕉视频在线| 成人av在线看| 99re这里都是精品| 一本大道av伊人久久综合| 欧美午夜精品久久久久久超碰| 欧美日韩一区三区四区| 欧美美女直播网站| 日韩一区二区视频| 久久精品亚洲一区二区三区浴池 | 国产精品99久久久| 免费黄网站欧美| 不卡区在线中文字幕| 91官网在线观看| 91精品福利在线一区二区三区 | 久久综合九色综合97_久久久|