实验1.2

吉林大学 计算方法实验课 实验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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值