이 글에서는 선형 연립방정식을 행렬 형태로 나타내는 C++ 프로그램을 다룹니다. 사용자로부터 변수의 개수와 각 변수의 계수를 입력받은 뒤, 이를 계수 행렬과 상수 벡터의 곱 형태인 Ax = d 구조로 출력해 줍니다.
알고리즘
시작
1) 변수의 개수 n과 각 변수의 계수를 입력받는다.
2) matrix[n][n] 배열과 constant[n][1] 배열을 선언한다.
3) 이중 반복문(i = 0 ~ n-1, j = 0 ~ n-1)을 사용하여
각 변수의 계수를 행렬의 원소로 입력받는다.
4) 중첩된 for 루프를 통해 행렬을 화면에 출력한다.
끝예제 코드
#include<iostream>
using namespace std;
int main(void) {
char variable[] = { 'x', 'y', 'z', 'd' };
cout << "Enter the number of variables in the equations: ";
int n;
cin >> n;
cout << "\nEnter the coefficients of each variable for each equation, ax + by + cz + ... = d:";
int matrix[n][n];
int constant[n][1];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> matrix[i][j];
}
cin >> constant[i][0];
}
cout << "Matrix representation is: "<<endl;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << " " << matrix[i][j];
}
cout << " " << variable[i];
cout << " = " << constant[i][0];
cout << "\n";
}
return 0;
}코드 설명
프로그램은 먼저 변수 이름을 담은 문자 배열 variable[]을 선언하여 x, y, z 등의 변수 기호를 저장합니다. 그다음 변수의 개수 n을 입력받고, n×n 크기의 계수 행렬 matrix와 n×1 크기의 상수 열벡터 constant를 생성합니다.
이중 for 루프를 통해 각 방정식의 계수를 행 단위로 입력받으며, 한 행이 끝날 때마다 해당 방정식의 상수항도 함께 저장합니다. 마지막으로 중첩된 for 루프를 사용해 행렬의 각 행과 대응되는 변수, 그리고 등호 오른쪽의 상수를 함께 출력함으로써 방정식계를 행렬 형태로 보여줍니다.
실행 결과
Enter the number of variables in the equations: 3 Enter the coefficients of each variable for each equation, ax + by + cz + ... = d: 1 2 3 4 5 6 7 9 8 5 2 1 Matrix representation is: 1 2 3 x = 4 5 6 7 y = 9 8 5 2 z = 1
위 실행 결과에서 볼 수 있듯이, 세 개의 방정식이 하나의 계수 행렬과 상수 벡터로 깔끔하게 정리됩니다. 이러한 행렬 표현은 가우스 소거법, 크라메르 공식 등 다양한 선형대수학 기법을 적용할 때 유용하게 활용됩니다.