이곳에서는 우리가 중고등학교 시절 배웠던 수학과 또는 대학에서 배우는 수학 중에서
프로그래밍을 통해서 공부해 보면 좋은 아이템들을 정리하고 있습니다.
선형 보간법(linear interpolation)을 구현하시오.
아래의 함수는 2차원 공간 상의 두 점을 입력받아서 두 점 사이의 자리를 채우는 함수입니다.
void Linear_Interpolation(int x1, int y1, int x2, int y2);
이를 이용해서 아래와 같은 출력 결과를 만드시오.
[x: 0][y: 10]
[x: 1][y: 15]
[x: 2][y: 20]
[x: 2][y: 20]
[x: 3][y: 17]
[x: 4][y: 14]
[x: 5][y: 11]
[x: 6][y: 8]
[x: 7][y: 5]
[x: 7][y: 5]
[x: 8][y: 4]
[x: 9][y: 3]
[x: 10][y: 2]
[x: 10][y: 2]
[x: 11][y: 3]
[x: 12][y: 5]
[x: 13][y: 6]
[x: 14][y: 8]
[x: 15][y: 10]
계속하려면 아무 키나 누르십시오 . . .
1. root 2를 계산해보자. 가능한 정밀한 값을 구해보자.
Hint: root 2는 제곱해서 2가되는 수이다.
12< root 2 < 22
12< root 2 < 1.52
12< root 2 < 1.252
1.252< root 2 < 1.52
1.42 = 1.96 < root 2 < 1.52 = 2.25
2. 파이를 구해보자.
3. 지면에서 초속 30m로 위로 똑바로 던져 올린 물체의 x초 후의 높이는 (30x - 5x²)m라고 한다. 이 물체가 땅에 떨어지는 것은 던져 올린 지 몇 초 후인지 구하여라.
4. 최적의 값 찾기: 어떤 단체의 월 회비가 10만원이라고 할 때, 이 단체의 현재 회원은 10명이다. 지금부터 1명의 회원이 추가될 때 마다 전체 회원의 회비를 1천원 할인해준다고 할 때, 몇 명의 신규회원이 들어와야 이 단체의 월 수입이 최대가 될까?
5. 달리기는 초속 5m
수영은 초속 2m로 갈 수 있다.
남은 시간은 44초이다.
*까지 도착하기 위해서 몇 미터를 달리다가 수영을 해야할까?
6. 2차원 공간상에 아래의 4개의 점이 있다. 이 4개의 점을 가장 잘 표현(....)할 수 있는 직선의 방정식을 구하시오.
(1,2), (2, 5), (4, 7), (6, 10)
(힌트)
위의 4개의 점을 가장 잘 표현하는 직선이라는 말은, 아래의 그림과 같이 위의 4개의 점 근방을 지나는 직선을 구하는 문제라고 할 수 있다.
이러한 직선을 어떻게 구할 수 있을까?
이를 함수로 표현하면
구하려는 직선의 방정식을 y = ax +b라고 할때,
아래의 식을 만족하는 경우이다.
f(a, b) = sigma(i from 0 to 4) { ax_i+b -y_i }
7. 3x2 + 7x + 2 = 0를 만족하는 해를 구해보자.
Hint 1: 근의 공식을 사용해보자.
Hint 2: 컴퓨터의 빠른 속도를 이용해서 -무한대 부터 +무한대 까지의 모든 수를 넣어보자.
8. 위의 근을 공식을 이용하여 아래의 2차 방정식의 해를 구해보자.
이차 방정식이 아래와 같을 때
ax^2 + bx + c = 0
a = 10^-30;
b = -10^30;
c = 10^30;
즉,
a = pow(10, -30);
b = pow(-10, 30);
c = pow(10, 30);
이라고 할때 근을 구하시오.
9. 다음과 같은 방법을 bisection method라고 한다.
http://en.wikipedia.org/wiki/Bisection_method
이 방법을 이용하여 아래의 방정식을 풀어보자.
아래의 방정식은 [1, 2] 사이에 근을 하나 가지고 있다는 정보를 알고 있다는 가정하에...
x^3 + 4x^2 -10 = 0
10. 다음과 같은 방법을 Newton Raphson method라고 한다.
http://en.wikipedia.org/wiki/Newton's_method
이 방법을 이용하여 아래의 방정식을 풀어보자.
x^3 + 4x^2 -10 = 0
x의 초기 값은 1.5라고 가정하라.
11. 이제 미분(differentiation)에 대해서 다루어 보자.
우리는 고등학교 시절 부터 분석적으로 미분을 할 수 있다.
그러나 컴퓨터를 이용하여 수치적으로 미분의 근사값을 구해보자.
이를 numerical differentiation(수치적 미분?)이라고 한다.
f(x) = ln x 라면 f'(x)= 1/x 인것을 안다.
그러나 이를 모르는 상황에서 어떻게 미분 함수의 근사값을 구할 수 있을까?
예를 들어서 f'(1.8)을 구해보자.
이를 위해서는 Lagrange Polynomial을 알면 도움된다.
http://en.wikipedia.org/wiki/Lagrange_polynomial
그렇지 않더라도 아래의 페이지를 보면 직관적으로 이해할 수 있을 것이다.
http://en.wikipedia.org/wiki/Numerical_differentiation
이를 이용해서 여러 함수의 미분 함수의 근사치를 구해보자.
그래서 위의 로그 함수의 미분 함수를 그림으로 그려서 한번 확인해보자.
또한 sin함수의 미분함수를 그리면 cos함수가 되는지도 확인해보자.
12. 적분(integration)에 대해서 알아보자.
이 문제도 미분과 유사하다.
numerical integration이라고 한다.
http://en.wikipedia.org/wiki/Numerical_differentiation
몇가지 방법이 있지만 가장 간단한 방식인
trapezoidal(사다리꼴의... 라는 뜻이다) rule을 사용해보자.
위의 방식을 사용하여
Integral(i from 1 to 1.5) ( x^2*ln x) dx를 구해보자.
보다 정확한 값을 구하려면 어떻게 하면 되나?