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
|
function [x] = assignment3(A,b)
[A_row,A_col] = size(A); x=zeros(A_row,1); x1_change=[]; x2_change=[];
for i1=1:A_col-1 max_val=0; for i2=i1:A_row for i3=i1:A_col if max_val < abs(A(i2,i3)) max_val = abs(A(i2,i3)); max_i = i2; max_j = i3; end end end if max_i ~= i1 for i2 = i1:A_col temp = A(max_i,i2); A(max_i,i2) = A(i1,i2); A(i1,i2) = temp; end temp = b(i1); b(i1) = b(max_i); b(max_i) = temp; end if max_j ~= i1 for i2 = 1:A_col temp = A(i2,max_j); A(i2,max_j) = A(i2,i1); A(i2,i1) = temp; end x1_change = [x1_change max_j]; x2_change = [x2_change i1]; end if A(i1,i1) ~= 0 for i2 = i1+1:A_row L_i1i2=A(i2,i1)/A(i1,i1); A(i2,:)=-A(i1,:).*L_i1i2+A(i2,:); b(i2)=-b(i1)*L_i1i2+b(i2); end end end
for i1 = A_row:-1:1 x(i1)=b(i1); for i2 = A_col:-1:i1+1 x(i1)=x(i1)-A(i1,i2)*x(i2); end x(i1)=x(i1)/A(i1,i1); end
for i1=length(x1_change):-1:1 temp=x(x1_change(i1)); x(x1_change(i1))=x(x2_change(i1)); x(x2_change(i1))=temp; end end
|