728x90
300x250

[프로그래밍 퀴즈(Quiz)] 범용적인 문제 - 재귀 호출(General Problem-Recursive Calls)


1부터 n까지의 합을 구하는 프로그램을 작성한다.

과 같이 표현되는 것은 순차적인 방법으로 표현되어서 for, while과 같은 반복문을 사용해서 구현할 수 있을 것이다.

두 번째, sum(n)을 다른 방법으로 즉, 재귀적인 방법으로 표현하면 다음과 같다.


            

            


컴퓨터 프로그래밍 코드를 통해서 알아보도록 하자.


#include <iostream>

using namespace std;

int sum(int n);
int main(){

    cout << sum(10) << endl;
}

int sum(int n){

    if ( n == 1 ){
        return 1;
    }
    else{
        return sum(n-1) + n;
    }
}



반응형
728x90
300x250

[수학(Math)] 14. 역행렬(Inverse)

 

이 절에서는 정사각행렬 에 어떤 행렬을 곱하여 항등행렬이 되는 행렬에 대한 기본적인 성질에 대하여 살펴보기로 한다.

 

(정의)

정사각행렬 에 대하여 다음 조건을 만족하는 행렬 가 존재하면 행렬 를 정칙행렬(가역행렬, invertible matrix)이라고 한다.

 

이 때 행렬 를 행렬 의 역행렬(inverse)이라고 하고 로 나타낸다.

 

(예제) 행렬 에 대하여

이므로 이다.

 

정칙행렬의 역행렬은 유일하게 존재한다는 사실을 다음 정리에서 보일 수 있다.

 

정리:

= 유일하다.

의 역행렬이라 하자.

 

정사각행렬 가 정칙행렬이면 의 역행렬은 유일하게 존재한다.

 

(증명) 만일 의 역행렬이라고 가정하면

이다.

따라서 가 되어 의 역행렬은 유일하게 존재한다.

 

임의의 정사각행렬 에 대하여 역행렬이 반드시 존재하는 것은 아니다. 다음의 예제를 살펴보자.

 

(예제) 행렬 의 역행렬이 존재한다고 가정하고 그 역행렬을 라고 하면 다음이 성립한다.

 

 

따라서

 

이다. 그런데 이 식을 만족시키는 실수 는 존재하지 않는다. 따라서 행렬 가 행렬 의 역행렬이 된다는 사실에 모순이 된다.

즉, 행렬 는 정칙행렬이 아니다.

 

행렬 가 정칙행렬일 때 가 정칙행렬이라고 할 수 없다는 사실을 다음 예를 통하여 알 수 있다.

 

(예제) 두 행렬 는 정칙행렬이지만 이므로 는 정칙행렬이 아니다. 따라서 임의의 두 정칙행렬의 합은 정칙행렬이라고 할 수 없다.

 

(정리)

정사각행렬 와 실수 에 대하여 다음이 성립한다.

(1)

(2)

(3)

 

 

(증명)

 

(1) 이므로 의 역행렬이다. 즉, 이다.

 

(2)

    

   

     

  

    이므로

   이다.

 

(3) 이므로 등식이 성립한다.

 

(예제) 두 행렬 는 정칙행렬이다. 또한

이므로

 

이다. 따라서 이고 이 성립한다.

 

(정리)

정사각행렬 가 정칙행렬이면 는 정칙행렬이다. 또한 다음이 성립한다.

 

 

(증명)

가 정칙행렬이므로 이다. 따라서,

이 되어 는 정칙행렬이고 이다.

 

(예제) 행렬 는 정칙행렬이고 역행렬은 이다. 또한

는 정칙행렬이고 역행렬은 이다. 따라서

 

 

(정리)

대칭행렬 가 정칙행렬이면 역행렬 도 대칭행렬이다.

 

(증명)

가 대칭행렬이므로 다음 관계가 성립한다.

 

 

따라서, 는 대칭행렬이 된다.

 

(예제)

 

행렬 에 대하여

 

 

이므로 는 대칭행렬이고 정칙행렬이다. 또한

 

이므로 의 역행렬 도 대칭행렬이다.

 

(정리)

교대행렬 가 정칙행렬이면 역행렬 도 교대행렬이다.

 

(증명) 가 교대행렬이므로 다음 관계가 성립한다.

 

따라서, 는 교대행렬이 된다.

 

(예제) 행렬 에 대하여

                

이므로 는 교대행렬이고 정칙행렬이다. 또한

 

이므로 의 역행렬 도 교대행렬이다.

 

 

반응형
728x90
300x250

[수학(Math)] 13. 행렬의 전치행렬과 대각 합

 

행렬 의 전치행렬의 정의 및 기본적인 성질, 대칭행렬과 교대행렬의 성질을 살펴본다.

또한 정사각행렬에서만 정의되는 개념인 대각합의 정의와 기본적인 성질들에 대하여 살펴본다.

 

정의)

행렬 의 행과 열을 바꾸어 얻은 행렬 의 전치행렬(transpose matrix)이라고 하고 로 표시한다. (이때, 이다.)

 

 

참고) 정의에 의하여 의 전치행렬은 행을 열로 이동시켜 얻을 수 있다. 따라서 의 크기가 이면 의 크기는 이 된다.

 

(예제) 행렬 의 전치행렬을 구하면 다음과 같다.

 

 

 

(정리)

두 행렬 와 실수 에 대하여 다음이 성립한다.

 

(1)

(2)

(3)

 

(증명) 각 행렬의 성분을 으로 놓고 좌변과 우변에 놓인 행렬의 -성분이 서로 같음을 보임으로써 상등관계를 증명할 수 있다.

 

(1) -성분은 -성분이고 이는 -성분이므로 이다.

(2) -성분은 -성분이므로 이다. 이는 -성분과 의 -성분의 합이 되므로 -성분과 같다.

(3) -성분은 -성분이므로 이다. 이는 -성분과 같으므로 이다.

 

(예제)

두 행렬

와 실수 에 대하여

이다. 따라서 다음이 성립한다.

 

 

 

 

(정리)
두 행렬 에 대하여 다음이 성립한다.


(증명) 각 행렬의 성분을 로 놓으면 -성분은 -성분이므로 이다.

그런데 -성분이 되므로 정리가 성립한다.

 

(예제)

두 행렬 에 대하여

이므로

이다.

 

(정의)

정사각행렬 가 다음 조건을 만족하면 를 대칭행렬(symmetric matrix)이라고 한다.

 

(참고) 대칭행렬 는 주대각 성분들을 연결하는 선분을 기준으로 하여 서로 대칭인 성분들로 이루어져 있다.

 

 

(예제1) 행렬 의 전치행렬은 이므로 는 대칭행렬이다.

 

(예제2) 행렬 의 전치행렬은 이므로 는 대칭행렬이다.

 

(예제3) 행렬  더블클릭을 하시면 수식을 수정할 수 있습니다.가 대각행렬이면 이므로 는 대칭행렬이다.

 

 

(정의)

정사각행렬 가 다음 조건을 만족하면 를 교대행렬(Alternating matrix)이라고 한다.

 

(참고) 정사각행렬 가 교대행렬이라면 교대행렬의 정의로부터 이 된다.

따라서 임을 알 수 있다. 즉, 주 대각성분은 모두 0이다.

 

(예제1) 행렬 의 전치행렬 이므로 는 교대행렬이다.

 

(예제2) 행렬 의 전치행렬은 이므로 는 교대행렬이다.

 

(예제3) 정사각행렬 가 주어지면 다음 과정을 통하여 대칭행렬과 교대행렬을 항상 만들 수 있다. 실제로 행렬 를 다음과 같이 정의 하자.

 

 

그러면 다음 관계식이 성립한다.

 

 

따라서 가 되어 행렬 는 대칭행렬이 되고 행렬 는 교대행렬이 된다.

이때, 실수 에 대하여 행렬 와 행렬  또한 각각 대칭행렬이 됨을 알 수 있다.

 

(정리)

정사각행렬 는 대칭행렬과 교대행렬의 합으로 항상 나타낼 수 있다.

 

(증명)

행렬 는 대칭행렬이고 행렬 는 교대행렬이다. 또한 행렬

으로 나타내어지므로 정사각행렬 는 대칭행렬과 교대행렬의 합으로 항상 나타낼 수 있다.

 

(예제)

행렬 에 대하여 이므로

이다. 따라서 행렬 는 다음과 같이 대칭행렬과 교대행렬의 합으로 나타낼 수 있다.

 

 

(정의)

정사각행렬 에 대하여 다음과 같이 정의된 실수 의 대각합(trace)이라고 한다.

 

 

(참고) 행렬 의 대각합은 정사각행렬들의 집합 에서 다음과 같이 정의된 함수임을 알 수 있다.

 

 

(예제1) 행렬 의 대각합은 다음과 같다.

 

 

(예제2) 행렬 의 대각합은 다음과 같다.

 

 

(예제3) 정사각행렬 가 교대행렬이라면 이므로 주대각성분이 모두 0이다. 따라서 의 대각합은 다음과 같다.

 

 

정사각행렬의 대각합은 다음 정리에서 알 수 있듯이 덧셈과 스칼라 곱셈을 유지시킨다.

 

(정리)

정사각행렬 와 실수 에 대하여 다음이 성립한다.

(1)

(2)

 

(증명) 각 행렬의 성분을 로 놓으면 다음과 같이 증명할 수 있다.

 

(1)

 

(2)

 

(참고) 대각합은 행렬 의 덧셈연산은 유지시키지만 곱셈연산은 유지 시키지는 않는다. 즉,

 

(예제) 두 행렬 에 대하여 는 다음과 같다.

 

따라서

 

 

(정리)

정사각행렬 에 대하여 다음이 성립한다.

 

(증명) 각 행렬의 성분을 로 놓으면 다음 등식이 성립한다.

 

따라서 이 증명된다.

 

(예제) 두 행렬 에 대하여 는 다음과 같다.

 

 

따라서

 

 

(정리)

정사각행렬 에 대하여 다음이 성립한다.

 

(증명) 행렬의 성분을 로 놓으면 의 주 대각성분은 의 주 대각성분과 같으므로 다음 등식이 성립한다.

 

 

 

(예제) 행렬 에 대하여 이므로

 

 


(연습문제)

 

1. 두 행렬 에 대하여 다음을 구하여라.

 

(1)                                                   (2)

 

(3)

 

2. 두 행렬 에 대하여 다음을 구하여라.

 

(1)

 

 

 

 

 

반응형
728x90
300x250

[수학(Math)] 12. 행렬의 연산에 대한 성질

 

행렬들의 연산에 대한 기본적인 성질들에 대하여 살펴본다.

행렬들의 덧셈과 스칼라 곱셈, 그리고 상등관계의 정의에 의하여 집합 내에서 다음과 같은 성질이 성립함을 알 수 있다.

 

(정리1)
세 행렬  와 실수 에 대하여 다음이 성립한다.

 

 


 

[증명]

 

                        

                     

 

                      

 

행렬의 곱이 정의된다고 가정했을 때 실수에서 결합법칙과 배분법칙이 성립하는 것과 마찬가지로 곱에 대한 결합법칙과 배분법칙이 성립한다는 것을 다음 정리에 의하여 알 수 있다.

 

(정리2)
행렬 에 대하여 다음이 성립한다.


 

[증명]

행렬의 성분을 각각 로 놓으면 -성분은 이므로

-성분은 이다.

또한, 행렬 -성분은 이고 -성분은 이므로 -성분은 이다. 따라서 행렬 -성분이 모두 같기 때문에 등식이 성립한다.

 

(정리3)

행렬 에 대하여 다음이 성립한다.

 

 

[증명]

행렬의 성분을 각각 로 놓으면 -성분은 이므로 -성분은 이다.

또한, 행렬 -성분은 이고 -성분은 이므로 -성분은

이다. 따라서 행렬 -성분이 모두 같기 때문에 등식이 성립한다.

 

(정리4)

세 행렬 , , 에 대하여 다음이 성립한다.

 

 

 

[증명]

각 행렬의 성분을 , , 으로 놓으면 행렬 -성분은 이므로

-성분은 이다.

또한, 행렬 -성분은 이므로 -성분은

이다.

그런데

이므로 행렬 의 모든 -성분이 같다. 따라서 정리가 증명된다.

실수에서는 곱에 대하여 교환법칙이 성립하지만 행렬은 곱에 대하여 교환법칙이 성립하지 않는다는 사실을 다음 예제를 통하여 알 수 있다.

 

(예제)

두 행렬 에 대하여 는 각각 다음과 같다.

 

 

따라서 이다.

 

(정리)

행렬 에 대하여 연산 이 정의될 때 다음이 성립한다.

 

 

 

 

(예제)

다음 두 행렬의 곱 를 구하여라

 

 

[풀이]

행렬 을 각각 다음과 같이 놓자.

 

 

 

그러면

 

이다. 따라서 는 다음과 같다.

 

반응형
728x90
300x250
[프로그래밍 퀴즈(Quiz)] 프로그래밍 기초 퀴즈(C++)


초급적인 문제입니다.



(입력1)


입력

출력

12345

5,4,3,2,1



(소스코드)


#include <iostream>
#include <string>
#include <vector>
#include <math.h>

using namespace std;

vector<int> solution(long long n) {
    vector<int> answer;
    string strNumber;

    long long conversionNumber;
    int div = 10;
    int size = 0;
    int tmp = n;

    while (tmp > 0) {

        tmp = tmp / 10;
        size++;
    }

    strNumber = to_string(n);

    while (size > 0) {

        conversionNumber = std::stoll(strNumber.substr((size - 1), 1));
        //cout << strNumber.substr( (size - 1), 1) << endl;
        answer.push_back(conversionNumber);
        size--;
    }

    return answer;
}

int main() {

    solution(12345);

}


반응형
728x90
300x250
[수학(Math)] 11. 행렬의 정의 및 연산(Matrix)

 

행렬에 대해서 가볍게 소개한다.

 

참고하면 도움이 되는 주제: 선형대수학(Linear Algebra)
-> 컴퓨터공학: 컴퓨터 그래픽스, OpenGL.
-> 경영학/산업공학: Operation Research(OR)
-> 회로 최적화
-> 물리(벡터)

-> 등.

 

(정의1)

임의의 자연수 에 대하여 개의 실수  를 다음과 같이 직사각형 모양으로 나열해 놓은 것을 실수를 성분으로 갖고 크기가 인 행렬(matrix)이라고 한다.

 

 

 

이때, 각각의 를 행렬 -성분 이라고 한다.

또한 실수를 성분으로 갖는 모든 행렬들의 집합을 로 표시한다.


즉,

 

(정의2)

행렬 개의 수평성분과 개의 수직 성분들로 이루어지는데 특히 번째 수평성분을 행렬

이라고 하고 로 표시한다. 또한 행렬 번째 수직성분을 행렬 번째 열이라고 하고 로 표시한다. 즉, 행렬 번째 행과 번째 열은 각각 다음과 같다.

 

 

예) 행렬 는 다음과 같은 두 개의 행과 두 개의 열로 이루어진 크기가 인 행렬이다.

 

,

 

 

다음은 행렬의 덧셈에 대한 항등원의 역할을 하는 영행렬의 정의에 대해 살펴보자.

 

(정의3)

 

행렬 의 모든 -성분이 0이면 즉, 이면 행렬 를 영행렬(zero matrix)이라고 하고

(또는 )으로 표시한다.

 

(정의4)

행렬 의 행의 수 과 열의 수 이 서로 같으면, 행렬 차의 정사각행렬(square matrix)이라고 한다.

차의 정사각행렬 에서 를 행렬 의 주 대각성분이라고 한다.

 

 

(정의5)

정사각행렬 의 주 대각성분이 모두 1이고 나머지 성분이 모두 0이면 행렬 를 항등행렬(단위행렬, identity matrix)이라고 하고,

으로 표시한다. 즉, 항등행렬 은 다음과 같다.


 

 

[참고] 실수

 

로 정의하면 차의 항등행렬은 으로 나타낼 수 있다.

 

 

(정의6)

정사각행렬 가 다음 조건을 만족하면 상삼각행렬(upper triangular matrix)이라고 한다.

 

 

[참고] 정의에 의하여 정사각행렬 가 상삼각행렬이면 주 대각성분 아래에 놓여있는 성분들은 모두 0이다.

 

예) 행렬 

는 상삼각행렬이다.

 

(정의7)

정사각행렬 가 다음 조건을 만족하면 하삼각행렬(lower triangular matrix)이라고 한다.

 

 

[참고] 정의에 의하여 정사각행렬 가 하삼각행렬이면 주 대각성분 위에 놓여있는 성분들은 모두 0이다.

 

예) 행렬

는 하삼각행렬이다.

 

 

(정의8)

 정사각행렬 가 다음 조건을 만족하면 대각행렬(diagonal matrix)이라고 한다.

 

 

 

그리고 이때 으로 표시한다.

 

 

[참고] 정의에 의하여 정사각행렬 가 대각행렬이면 주 대각성분 이외의 성분들이 0이다. 또한 대각행렬은 상삼각행렬이고 동시에 하삼각행렬이다.

 

예) 행렬

는 대각행렬이다.

 

 

두 행렬의 상등관계에 대해서 소개한다.

 

(정의9)
두 행렬 의 대응되는 모든 성분이 같으면, 즉,

이면 행렬 는 같은 행렬이라고 하고 로 나타낸다.

 

예) 두 행렬

에 대하여 상등관계 가 성립하기 위한 실수 의 값은 다음과 같이 구할 수 있다.

 

 

 

집합 에 속하는 행렬들 사이에서 정의되는 연산에 대하여 살펴보자.

 

(정의10)

두 행렬 에 대하여 덧셈과 실수 에 대한 스칼라곱을 다음과 같이 정의한다.

 

 

(예제)

 

두 행렬

에 대하여 는 각각 다음과 같다.

 

 

 

 

 

(정의11)

두 행렬 의 곱을 다음과 같이 정의한다.

 

 

 

[참고]

정의에 의하여 두 개의 행렬 의 곱 의 열의 갯수와 의 행의 갯수가 같을 때에만 정의됨을 알 수 있다.

 

 

(예제) 두 행렬

에 대하여 는 다음과 같다.

 

 

 

(예제)

 

두 행렬

에 대하여 의 열의 갯수는 2이고 의 행의 갯수는 1이므로 곱 를 정의할 수 없다.

 

(예제)

 

두 행렬 에 대하여 다음이 성립함을 보여라.

 

 

=> (풀이)

 

두 행렬

에 대하여 이지만 이고 이다.

 

 


(연습 문제)

 

1. 두 행렬 에 대하여 다음을 구하여라.

 

                                              

 

 

 

 

 

 

2. 두 행렬 에 대하여 다음을 구하여라.

 

 

                                           

 

 

 

 

3. 두 행렬

에 대하여 다음을 구하여라.

 

                              

 

 

 

 

4. 다음 식을 만족하는 실수 를 구하여라.

 

 

 

반응형
728x90
300x250

[PC활용] Matlab 2010a(매틀랩 2010a) 설치와 제거 가이드

 

매틀랩 2010a(Matlab 2010a) 설치 가이드와 제거 가이드에 대해서 소개하려고 합니다.

정품을 사용하는 것을 권장합니다.

참고로 학생에게는 평가판을 배포해주는 것으로 알고 있습니다.

 


1. 설치

 

설치 마법사에서 Install without using the Internet(인스톨 윗아웃 유징 더 인터넷)을 클릭하면 "인터넷이 없이 설치한다."라고 번역됩니다.

Install using the Internet(인스톨 유징 더 인터넷)을 클릭하면 "인터넷에서 설치한다."라고 번역됩니다.

기호와 환경에 맞는 것을 클릭합니다.

선택을 맞췄으면 Next(다음)을 클릭합니다.

 

 

라이선스 동의(License Agreement / 라이선스 어그리먼트)에 관한 사항입니다.

잘 읽어보시고 동의를 하면 Yes(네)에 체크를 해주시면 됩니다.

 

Do you accept the terms of the license agreement?

당신은 라이선스 약관의 항목에 동의합니까?

 

Next(네)를 클릭합니다.

 

 

 

시디키를 입력하도록 합니다.

I have the File Installation Key for my license(아이 헤브 더 파일 인스톨레이션 키 포 마이 라이선스)

체크를 하면 시디키 입력란이 하얀색으로 바뀝니다.

 

I do not have the File Installation Key. Help me with the next steps.을 클릭하면 시디키 입력란이 회색으로 변합니다.

입력 후 Next(다음)을 클릭합니다.

 

 

 

인스톨레이션(설치) 타입입니다.

Typical(티피컬, 정형적인, 일반의) 타입의 설치 방식과 Custom(커스텀, 사용자 설정)의 방식으로 구분됩니다.

 

Typical에서 Install all your licensed products using default settings.(인스톨 올 유어 라이선스드 프로덕츠 유징 디폴트 셋팅 / 기본 설정을 사용해서 당신의 모든 제품 라이선스를 설치할 수 있습니다.)로 번역됩니다.

 

Next(다음)을 클릭합니다.

 

 

 

 

 

 

 

 

Matlab 설치 구성 요소들에 관한 것입니다.

 

 

 

 

 

 

 

 

설치 마법사가 진행되는 중입니다.

 

 

 

 

 

제품 구성에 대한 알림입니다.

설치가 완료되기 전 몇 가지 사항에 대해서 추가적인 단계는 필수적이라고 합니다.

Next(네)를 클릭합니다.

 

 

뒷장을 보니 Activate MATLAB이 있는 것으로 보아 정품인증을 해달라는 게 앞서 요구사항이었던 것으로 추측됩니다.

 

 


2. 처음 실행하기

 

그림을 따라 하시면 인증이 되겠습니다.

 

 

그림 2-1. MATLAB Activation

 

 

그림 2-2. MATLAB Activation

 

 

그림 2-3. MATLAB Activation

 

 

그림 2-4. MATLAB Activation

 


3. 제거

 

매틀랩을 제거하는 방법에 대해서 소개하려고 합니다.

컴퓨터에서 설정 앱 및 기능에서 MATLAB R2010a를 클릭합니다.

제거를 클릭하면 제거할 수 있습니다.

 

윈도우 7에서는 "프로그램 및 추가/제거"에서 제거 할 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 

반응형
728x90
300x250

[PC활용] Visual Studio [Community, Professional, Enterprise] 설치하기

 

이번에 소개할 것은 비주얼 스튜디오를 3가지 버전으로 설치하는 방법에 대해서 소개하려고 합니다.

 


1. 웹 사이트 접속하기

 

https://visualstudio.microsoft.com 에 접속합니다.

 

 

커뮤니티, Professional, Enterprise 3가지 버전으로 내려 받을 수 있습니다.

참고로 macOS버전도 지원하고 있습니다.

 


2. 다운로드 받기

 

 

 

 


3. 설치하기

Visual Studio Installer 설치 마법사 창이 열린다.

계속(C)를 클릭한다.

 

 

기다린다.

 

 

 

 

 


4. 원하는 제품 선택하기

 

필요한 기능별 제품을 선택하면 설치할 수 있습니다.

 

 

 

 

 

 

 

 


5. 재부팅 후 실행하기

 

재부팅 후에 Visual Studio를 실행한 모습입니다.

MSDN 계정이 없다면, 나중에 로그인을 선택하여 진행할 수 있습니다.

 

 

Visual Studio의 작업 환경에 대한 테마를 선택합니다.

그리고 Visual Studio 시작(S)를 클릭합니다.

 

 

 

 

 


6. 제품 라이선스 등록하기

 

제품 라이선스 등록하기에 대한 것입니다.

도움말(H)에서 제품 등록(P)을 클릭합니다.

 

 

아래의 화면에서 제품 등록키를 입력해줄 수 있습니다.

 

반응형

+ Recent posts