吉林大学 计算方法实验课 实验1.2
代码用octave语言编写。
实验题目:
实验代码:
(1)顺序消元法
function x=shunxu1(n)
%矩阵初始化
alpha = zeros(1,n);
for i = 1:n
alpha(i) = 3;
end
beta = zeros(1,n-1);
for i = 1:n-1
beta(i) = 1;
end
gama = zeros(1,n-1);
for i = 1:n-1
gama(i) = 9;
end
b = zeros(1,n);
b(1) = 4;
b(n) = 12;
for i = 2:n-1
b(i) = 13;
end
%disp(alpha);
%disp(beta);
%disp(gama);
%disp(b);
for k = 1:n-1
m = gama(k)/alpha(k);
alpha(k+1) = alpha(k+1)-m*beta(k);
b(k+1) = b(k+1) -m*b(k);
end
b(n) = b(n)/alpha(n);
for k = n-1:-1:1
b(k) = (b(k)-beta(k)*b(k+1))/alpha(k);
end
disp(b);
endfunction
现象:都是NAN
(2)列主元消去法
function x = zhuyuan(n)
%函数初始化
A = zeros(n,n);
b = zeros(n,1);
x = zeros(n,1);
for i=1:n
A(i,i) = 3;
if i < n
A(i+1,i) = 9;
A(i,i+1) = 1;
end
b(i) = 13;
end
b(1) = 4;
b(n) = 12;
%列主元函数
a=[A b];
for k = 1:n-1%i为列号
max = k;
for i = k+1:n%选主元
if a(i,k) > a(max,k)
max = i;
endif
endfor
temp = a(k,k:n+1);
a(k,k:n+1) = a(max,k:n+1);
a(max,k:n+1) = temp;
for i = k+1:n
a(i,k) = -a(i,k)/a(k,k);
a(i,k+1:n+1) = a(i,k+1:n+1)+a(i,k)*a(k,k+1:n+1);
endfor
endfor
x(n,1) = a(n,n+1)/a(n,n);
for i = n-1:-1:1
sum = 0;
for j =i+1:n
sum = sum+x(j,1)*a(i,j);
endfor
x(i,1) =(a(i,n+1)-sum)/a(i,i);
endfor
disp(x);
endfunction
现象:解都为1。