?? gau_seid.m
字號(hào):
%Gauss_seidel迭代法:Gau_Seid.m
%x為迭代解,sp為迭代次數(shù),a為系數(shù)矩陣,b為常數(shù)矩陣,ep為誤差精度,V1為初始變量
function [V,sp]=Gau_Seid(a,b,ep,V1)
%系數(shù)矩陣維數(shù)
n=length(a);
%誤差
e=ones(n,1);
%迭代的解向量
V2=zeros(n,1);
%迭代的次數(shù)
k=0;
%電路常量與初值
KB=1.38e-23;
q=1.602e-19;
T=300;
G=1;
IS=1;
%熱電勢(shì)
Vt=q/(KB*T);
%當(dāng)誤差沒(méi)有滿足要求時(shí)繼續(xù)迭代
while norm(e,2)>ep
str=sprintf('V%d= %g %g %g %g\n',k,V1);
disp(str)
k=k+1;
%計(jì)算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
%計(jì)算誤差向量
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
%返回迭代步數(shù)
sp=k;
%返回迭代值
V=V2;
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -