虫虫首页| 资源下载| 资源专辑| 精品软件
登录| 注册

您现在的位置是:虫虫下载站 > 资源下载 > 其他 > 有限差分法

有限差分法

  • 资源大小:6786 K
  • 上传时间: 2018-07-13
  • 上传用户:Kemin
  • 资源积分:2 下载积分
  • 标      签: 有限差分

资 源 简 介

  1. function [alpha,N,U]=youxianchafen2(r1,r2,up,under,num,deta)  
  2.   
  3. %[alpha,N,U]=youxianchafen2(a,r1,r2,up,under,num,deta)  
  4. %该函数用有限差分法求解有两种介质的正方形区域的二维拉普拉斯方程的数值解  
  5. %函数返回迭代因子、迭代次数以及迭代完成后所求区域内网格节点处的值  
  6. %a为正方形求解区域的边长  
  7. %r1,r2分别表示两种介质的电导率  
  8. %up,under分别为上下边界值  
  9. %num表示将区域每边的网格剖分个数  
  10. %deta为迭代过程中所允许的相对误差限  
  11.   
  12. n=num+1; %每边节点数  
  13. U(n,n)=0; %节点处数值矩阵  
  14. N=0; %迭代次数初值  
  15. alpha=2/(1+sin(pi/num));%超松弛迭代因子  
  16. k=r1/r2; %两介质电导率之比  
  17. U(1,1:n)=up; %求解区域上边界第一类边界条件  
  18. U(n,1:n)=under; %求解区域下边界第一类边界条件  
  19. U(2:num,1)=0;U(2:num,n)=0;  
  20.   
  21. for i=2:num  
  22. U(i,2:num)=up-(up-under)/num*(i-1);%采用线性赋值对上下边界之间的节点赋迭代初值  
  23. end  
  24. G=1;  
  25. while G>0 %迭代条件:不满足相对误差限要求的节点数目G不为零  
  26. Un=U; %完成第n次迭代后所有节点处的值  
  27. G=0; %每完成一次迭代将不满足相对误差限要求的节点数目归零  
  28. for j=1:n  
  29. for i=2:num  
  30. U1=U(i,j); %第n次迭代时网格节点处的值  
  31.   
  32. if j==1 %第n+1次迭代左边界第二类边界条件  
  33. U(i,j)=1/4*(2*U(i,j+1)+U(i-1,j)+U(i+1,j));  
  34. end  
  35.   
  36.   
  37. if (j>1)&&(j                 U2=1/4*(U(i,j+1)+ U(i-1,j)+ U(i,j-1)+ U(i+1,j));   
  38. U(i,j)=U1+alpha*(U2-U1); %引入超松弛迭代因子后的网格节点处的值  
  39.   
  40. end  
  41.   
  42. if i==n+1-j %第n+1次迭代两介质分界面(与网格对角线重合)第二类边界条件  
  43. U(i,j)=1/4*(2/(1+k)*(U(i,j+1)+U(i+1,j))+2*k/(1+k)*(U(i-1,j)+U(i,j-1)));  
  44.   
  45. end  
  46.   
  47. if j==n %第n+1次迭代右边界第二类边界条件  
  48. U(i,n)=1/4*(2*U(i,j-1)+U(i-1,j)+U(i+1,j));  
  49. end  
  50. end  
  51. end  
  52. N=N+1 %显示迭代次数  
  53. Un1=U; %完成第n+1次迭代后所有节点处的值  
  54. err=abs((Un1-Un)./Un1);%第n+1次迭代与第n次迭代所有节点值的相对误差  
  55. err(1,1:n)=0; %上边界节点相对误差置零  
  56. err(n,1:n)=0; %下边界节点相对误差置零   
  57. G=sum(sum(err>deta))%显示每次迭代后不满足相对误差限要求的节点数目G  
  58. end

相 关 资 源

您 可 能 感 兴 趣 的