⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gau_seid.m

📁 数值计算方法
💻 M
字号:
%Gauss_seidel迭代法:Gau_Seid.m
%x为迭代解,sp为迭代次数,a为系数矩阵,b为常数矩阵,ep为误差精度,V1为初始变量
function [V,sp]=Gau_Seid(a,b,ep,V1)
%系数矩阵维数
n=length(a);
%误差
e=ones(n,1);
%迭代的解向量
V2=zeros(n,1);
%迭代的次数
k=0;
%电路常量与初值
KB=1.38e-23;
q=1.602e-19;
T=300;
G=1;
IS=1;
%热电势
Vt=q/(KB*T);
%当误差没有满足要求时继续迭代
while norm(e,2)>ep
      str=sprintf('V%d= %g %g %g %g\n',k,V1);
      disp(str)
   k=k+1;
   %计算x2(i)
   for i=1:n
       s1=0;
       s2=0;
      if i-1>0
         for j=1:i-1
            s1=s1+a(i,j)*V2(j);
         end
      end
         for j=i+1:n
           s2=s2+a(i,j)*V1(j);
         end
           V2(i)=(b(i)-s1-s2)/a(i,i);
           
   end
   %计算误差向量
   e=V2-V1;
   %把x2作为新的迭代初值
   V1=V2;
   G=1;
   IS=1;
   GD1=40*exp(Vt*V1(1));
   GD2=40*exp(Vt*V1(2));
   ID1=exp(Vt*V1(1))-1;
   IOD1=ID1-GD1*V1(1);
   ID2=exp(Vt*V1(2))-1;
   IOD2=ID2-GD2*V1(2);
   a=[GD1+G -G;-G GD2+G];
   b=[-IOD1+IS -IOD2];
    
end
%返回迭代步数
sp=k;
%返回迭代值
V=V2;



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -