📄 新建 文本文档.txt
字号:
clear
%输入松弛变量w
%%%%%%%%%%%%输入B的阶数
tic
poufen=5 ;
m=2^poufen-1 ;
n=2*m+1 ;
d=5 ;
duijiao=0.5 ;
cedui=2 ;
x1=zeros(n*m,1); %生成解空间
x0=ones(n*m,1); %赋初值
% b=(cos((0:n*m-1)*pi))' ; %AX=b中的b值(1,-1,1,-1```````-1,1)
b=ones(m*n,1) ;
first_x=x0;
second_x=x1;
k=0;
while norm(first_x-second_x)>10^(-6) && k<10000 %%%%控制误差精度
% //////////////前面m行的情况////////
i=1 ; %第一行时
x1(1)=(1/d)*(b(1)+duijiao*x0(2)+cedui*x0(1+m));
for i=2:m-1 %%第2行至第m行时
x1(i)=(1/d)*(b(i)+duijiao*x1(i-1)+duijiao*x0(i+1)+cedui*x0(i+m));
end
i=m ; %第m行时
x1(i)=(1/d)*(b(i)+duijiao*x1(i-1)+cedui*x0(i+m));
% //////////////从第m+1行至第m*(n-1)行时的情况////
for i=(m+1):m*(n-1)
if mod(i,m)==1 %行数除m的余1时的情况
x1(i)=(1/d)*(b(i)+cedui*x1(i-m)+duijiao*x0(i+1)+cedui*x0(i+m));
else if mod(i,m)==0 %行数是m的整数倍时的情况
x1(i)=(1/d)*(b(i)+cedui*x1(i-m)+duijiao*x1(i-1)+cedui*x0(i+m));
else %行数除m的不余1也不余0时的情况
x1(i)=(1/d)*(b(i)+cedui*x1(i-m)+duijiao*x1(i-1)+duijiao*x0(i+1)+cedui*x0(i+m));
end
end
end
% //////////////从第m*(n-1)+1行至第m*n行时的情况////
i=m*(n-1)+1 ; %第m*(n-1)+1行时
x1(i)=(1/d)*(b(i)+cedui*x1(i-m)+duijiao*x0(i+1));
for i=(m*(n-1)+2):(m*n-1) %%%第m*(n-1)+2行至第m*n-1行时
x1(i)=(1/d)*(b(i)+cedui*x1(i-m)+duijiao*x1(i-1)+duijiao*x0(i+1));
end
i=m*n ; %第m*n行即最后一行时的情况
x1(i)=(1/d)*(b(i)+cedui*x1(i-m)+duijiao*x1(i-1));
first_x=x0;
second_x=x1;
x0=x1;
k=k+1;
end
YouxianyuanZJ=x1 ;
disp('运算次数k= ')
k
toc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -