-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathtest01.m
More file actions
79 lines (68 loc) · 1.3 KB
/
Copy pathtest01.m
File metadata and controls
79 lines (68 loc) · 1.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
clc,clear;
%% 各种算法及其运行时间
% 构造线性方程组与辅助变量的赋值
% 网格密度n
n = 10;
% 对角矩阵Aii
A = diag(4*ones(1,n))+diag(-ones(1,n-1),-1)+diag(-ones(1,n-1),1);
I = -eye(n);
AA = zeros(n*n);
for i = 1:n
AA(n*i-n+1:n*i,n*i-n+1:n*i) = A;
end
for i =1:n-1
AA(n*i-n+1:n*i,n*(i+1)-n+1:n*(i+1)) = I;
AA(n*(i+1)-n+1:n*(i+1),n*i-n+1:n*i) = I;
end
% 构造方程右端
h = 1/(n-1);
f = (3-2)*h^2*ones(n*n,1);
x = linspace(0,1,n);
% v = u - x(1-x)
v = meshgrid(x.*(1-x))';
%% 时间测试开始
%% LU分解法的求解时间,及结果绘图
tic
U = LUsolve(AA,f);
toc
u = reshape(U,n,n)+v;
surf(u);
%% 高斯消元法的求解时间及结果绘图
tic
U = GaussElim(AA,f);
toc
u = reshape(U,n,n)+v;
surf(u);
%% Cholesky分解求解时间及结果绘图
tic
U = ChlskSolve(AA,f);
toc
u = reshape(U,n,n)+v;
surf(u);
%% Jacobi迭代格式的求解时间及结果绘图
u = Jacobi(10);
surf(u);
%% Gauss-Seidel 迭代格式的求解时间及结果绘图
u = GSiter(10);
surf(u);
%% 超松弛迭代的Gauss-Seidel法的求解时间及结果绘图
u = GSiterSOR(10,1.5);
surf(u);
%% 块Gauss-Seidel 迭代格式的迭代时间及结果绘图
u = GSBlockIter(10);
surf(u);
%% 块超松弛迭代解法 的迭代时间及其结果绘图
u = GSBSORiter(10,1.5);
surf(u)
%% 共轭斜量法 的运行时间及其结果绘图
tic
U = GCsolve(AA,f);
toc
u = reshape(U,n,n)+v;
surf(u);
%% 预条件的共轭斜量法
tic
U = PGCsolve(AA,f);
toc
u = reshape(U,n,n)+v;
surf(u);