--- ---
선형방정식 in 수치해석 with MATLAB
4일남은 수치해석 중간고사를 대비하여 복습겸 수치해석 정리를 해보려합니다.
📔단순 가우스 소거법
미지수가 동일한 1차 연립방정식의 체계를 연구하는 것이 선형대수(Linear Algebra)입니다.
가우스 소거법은 연립 일차방정식을 풀이하는 알고리즘이다.
보통 행렬을 사용한다.
예를 통해서 가우스 소거법의 알고리즘을 알아봅시다.
가우스 소거법은 후방대입과정(Back Substitution) 을 통해서 구하는 방법입니다.
- 행렬을 생성
으로가정하고 행렬을 만듭니다.
우선적으로 가우스소거법을 사용하려면 행렬A와 b를 결합해야합니다.
결합된 행렬은 다음과 같습니다.
2. Pivot을 설정
우선적으로 Pivot을 설정해야합니다. Pivot은 대각행렬(Diaogna Matrix)로 이 행렬에서는 원소를 의미합니다.
그러므로 처음 Pivot값은 입니다.
- 행곱수(Row Multiplier)을 설정
Multiplier을 설정해야합니다. Multiplier란 Pivot아래 원소의 값을 Pivot으로 나눈 값입니다.
5. Pivot을 가진 행의 모든 원소에 Multiplier을 곱하고 해당 Multiplier가 있는 행에 빼준다.
그렇다면 이 두 원소는 무조건 0 즉 Pivot아래의 모든 원소들은 0으로 바뀌게 되고, 1행을 제외한 다른 행의 원소들 모두 바뀌게 됩니다.
- Pivot을 재설정 위의경우는 로 설정한다.
Pivot을 재설정하여 같은 식으로 연산해줍니다.
연산결과 다음과 같은 삼각행렬을 얻을 수 있습니다.
위 행렬을 통해서 x3의 값을 구할 수 있습니다.
이 값을 위 행에 넣으면 가 구해지고 를 그 위 행에 넣으면 남은 을 구할 수 있습니다.
이를 General하게 표현하면
으로 표현이 가능합니다.
한계
위 가우스 소거법은 가 0이 아니라는 전제하에서만 가능합니다. 그리고 연산횟수는 O()으로 매우 비효율적입니다.
Matlab Code
MATLAB을 통한 가우스 소거법을 알아봅시다.
function gauss(A,b)
C = [A b];
n = length(b); % 몇번 반복할지는 b행렬의 길이를 기준으로 합니다.
for i=1:n-1 % 반복
for k=i+1:n % 반복
C(k,:) = -C(k,i)/C(i,i) * C(i,:)+C(k,:); % k를 변화시키면서 연산을 해줍니다.
% 초기값은 2이므로 C(2,:) 즉 2행에서의 연산을 하게되면 위의 나와있는 설명처럼 k = 2,3에서의 연산을 수행합니다.
end
end
A =C(:,1:n)
b =C(:,n+1)
x(n) = b(n)/A(n,n)
for k = n-1:-1:1 % 출력용 코드
x(k) = (b(k)-sum(A(k,k+1:n).*(x(k+1:n))))/A(k,k)
end
C = [A b]를 통해서 행렬을 합쳐줍니다.
결과값은 아래와 같습니다.
>> A = [1 1 1 1;2 3 1 5;-1 1 -5 3;3 1 7 -2];
>> b = [10; 31; -2; 18];
>> gauss(A,b)
A =
1 1 1 1
0 1 -1 3
0 0 -2 -2
0 0 0 -1
b =
10
11
-14
-4
x =
0 0 0 4
x =
0 0 3 4
x =
0 2 3 4
x =
1 2 3 4
이상으로 수치해석의 가우스소거법을 알아보았습니다. 감사합니다.
Written with StackEdit.
'MATLAB' 카테고리의 다른 글
MATLAB MacOS Catalina에서 실행이 안될 때 해결법 (0) | 2020.05.11 |
---|---|
[MATLAB] 진동비에 따른 강제 조화 진동 (Harmonic Excitation Vibration) Graph (0) | 2020.05.02 |