*대수학 곱셈

 

이번 포스팅 부터 파이썬으로 수학을 조금씩 구현해 보기로 했다. 문제만 푸는 것은 단조롭고 이 120년된 교재의 사람들은 다 거쳐갔을테니까... 진도는 조금 줄이고 파이썬으로 대수를 구현해 보기로 한다.

 

파이썬은 기본 수학 기능이 들어있다. Numpy 같은 모듈을 설치하면 대학에서 다루는 수준의 수학 연산을 할 수가 있다. 프로그래밍과 수학을 하나로 보는게 아무래도 더 유용하지 않을까 싶다.

 

1.

4.5.a.b.c.7,

- 숫자를 나열하는 것은 곱셈표시다

 

7 x 6

 

- 산수에서의 곱셈표시다

 

x x y

 

- 대수의 곱셈표시다.

 

2.

 

abc, xy, amx

 

이들은 대수의 곱셈표시다. 언뜻 문자가 그냥 이어져 있는것 같은데 문자가 아니라 대수의 곱셈이다,

 

어떤 것이 계수이고 대수인지 추가적인 설명 없이 이것만 봐서는 잘 모른다.

 

3. x.x = xx = x^2

x.x.x = xxx = x^3

 

키보드로 입력할 때는 위와 같이 쓰기도 한다.

 

x^2를 x 제곱 -> x second power, x square 이라고 하는데 power는 같은 뒤에 나오는 지수(exponent) 만큼 반복한다는 의미이다.

 

x를 2번 더하면 x 제곱이라고 말 할 수 있다. 더하는 개념보다는 더 많은 의미가 있다. 2의 n승으로 진행하는 이진트리 같은 모양을 생각하면 복제의 모습이다. 만약 부부가 아이를 네명씩 낳는다면 2의 N승인 이진트리가 된다.

(현실에서는 그렇지 않다.)

 

2제곱과 3제곱은 특히 중요한데 x의 2 제곱을 x 스퀘어라고 부른다. 이것은 한국에서는 잘 안쓰는 말인데 정사각형이다. x 정사각형 (x square ) 가 x를 변으로 하는 정사각형을 설명하기 때문이다. x가 변이므로 x 2제곱으로 무한대의 정사각형을 표현할 수 있다.

 

즉 영어 표현으로 들으면

 

x square

 

x 정사각형

 

-> 변이 x인 정사각형이 생각난다. 이상하게 한국어로는 x 정사각형이라는 말을 잘 쓰지 않는다. x의 제곱, 혹은 x의 2승이라고 한다.

 

영어권에서 정사각형이라고 말하는 것은 기하학에서 많은 것이 풀리기 때문이기도 하다. 그래서 좀 어색하더라도 x 정사각형이라는 말을 사용해 보자. x는 미지의 수(대수)이기 때문에 어떤 숫자라도 들어올 수 있다.

 

이 내용을 파이썬으로 표현해보자. 터틀을 사용하면 도형을 그리는게 쉽다.

import turtle as tt

def turtle_square(x):
    for i in range(4):
        tt.forward(x*50)
        tt.left(90)
    return x**2

x = int(input('정사각형의 변을 입력하시오 : '))
result = turtle_square(x)
print('제곱의 결과 : ', result)
tt.mainloop()

 

 

터틀로 그린 정사각형

정사각형의 변의 길이를 입력하면 그 길이로 정사각형을 그린다.

 

* x^3은 세제곱 x cube (큐브, 정육면체) 라고 한다. 역시 x의 2승이 정사각형이니까 이것을 세번째 축으로 늘이면 큐브가 된다. (정육면체 = 큐브)

 

다만 컴퓨터비전에서 3차원의 구현은 좀 더 복잡한 소프트웨어가 필요하니 다음 기회에 보기로 한다. 여기는 대수 기초니까 삼천포로 빠질 필요가 없다.

 

exponent 엑스포넌트를 지수라고 한다. 지수는 한 숫자의 오른쪽 위에 올라가는 작은 숫자이다. 지수는 인수를 몇번 사용했는지 나타낸다. (인수는 Factor 다, 지수와 인수를 구분한다)

 

 

*연습문제 유형 12

 

이번 포스팅 부터는 연습문제를 풀면서 파이썬으로 적용해보겠다. 수학과 컴퓨터 언어는 같은듯 다른점이 있어서 모든 문제가 완벽하게 구현되지 않지만 충분히 사용할 만큼 만들도록 해보겠다.

 

너무 간단한 식 보다는 좀 알고리즘이 있어야 할 것 같은 문제를 중심으로 한다. 가끔 서점에 파이썬으로 푸는 수학같은 책들이 나오긴 하는데 난이도가 좀 있어서 그런지 몰라도 손이 잘 안간다. 이 포스팅에서 나름의 방법을 찾아보려 한다. 정말 어려운 것만 있는건지 필자 스스로 판단도 좀 해보고.

 

 

 

1. x의 더블을 표현하라.

 

-> x의 더블은 x.x = xx = x^2 이다.

 

파이썬에서는 변수로 표현할 수 있다.

python IDLE

 

주의점은 파이썬은 변수를 초기화시켜줘야 한다.

 

그냥 x * x 는 오류가 난다.

 

2. x,y,z 의 곱을 표현하라

 

-> x.y.z , xyz

 

파이썬은 항상 변수를 초기화 시켜야 한다는 점을 잊으면 안된다.

 

3. x 달러는 센트로 얼마인가?

 

-> 1 달러는 100센트이다. 즉 x100 센트

 

 x에 100을 곱하면 된다.

 

센트를 상수로 설정하면 가독성이 좋아진다. (상수: 프로그램의 실행동안 변하지 않는 수)

 

4. a 곱하기 b 곱하기 c 를 적어라.

 

-> a.b.c = abc

 

영어 times 가 배수가 아니라 곱하기임에 주의한다

 

5. 체리의 a 쿼트는 얼마의 비용이 되는가? 1 쿼트에 d 센트라고 한다. (쿼트는 단위이다)

 

-> 1 쿼트에 d 센트니까 a 쿼트는 ad 이다.

 

원문을 잘 보면 a의 모양이 약간씩 다르다. 헷갈릴 소지가 있다. a quarts 라는 것은 quarts 의 복수가 붙어서 a는 대수를 말하는 것이다. 즉 a개의 quarts 이다. 지난 포스팅에서도 계속 보는데 영어와 국어를 세밀하게 다루는게 수학이다.

 

 

 

10. a 인수의 곱을 표현하라. a는 각자 d와 같다.

 

-> 영어 해석이 좀 어려운데 ad 로 봤다. a인수의 각각은 d와 같다고 했으니까 곱하기다.

 

11. a의 2 제곱에 3 곱하기 m의 세제곱을 더함

 

-> a^2 + 3m^3

 

키보드로 쓰면 좀 다르게 보이지만 제대로 표현한 식이다.

 

15. x 명의 남자가 어떤 일을 9일에 할 수 있다.

    1명의 남자가 똑같은 작업을 하면 며칠이 걸리겠는가?

 

x = 남자의 수

9 = 작업일

9x x명의 작업량 (the same work)

 

9x / 1

 

-> x명의 9일동안 작업량을 1명으로 나눈다. (작업일이 나온다) 즉 남자의 수 x 와 작업일 9의 곱셈이다.

 

9x 일 걸린다.

 

 

*파이썬 코드

 

menpower = 1
base_workday = 9

while(True):
    menpower = int(input('몇명이 9일간 작업하나요? (exit : 0) '))
    if menpower == 0:
        break
    total_workday = base_workday * menpower
    print(menpower, '명이 9일간 할 일을 1명이 하면',total_workday,'일이 걸립니다')
print('종료합니다')

 

코드로 구현할 때는 수학식 처럼 모든 것을 증명하지 않아도 된다. 과정을 보여주는게 목적이 아니라면 생략하는게 프로그램 실행도 더 빠르다. 즉 생략가능한 것들을 생각하고 최종식으로 구현한다.

 

total_workday 가 구하려는 작업 일수(날짜)이다.

 

 

프로그램에서는 x 값을 변화시키기가 편하다.

 

1명이 9일간 할일은 당연히 9일간 할 수 있다. -> 이게 답이다. 더 나아가서

 

2명,3명... 얼마든지 늘릴 수 있다. 이를 테면 3명이 9일간 할 일을 혼자서 한다. 그러면 일이 세명 몫으로 늘었으니 날짜도 9일에서 세배 늘은 27일이 되는 것이다. 혼자서 세 명만큼 일하는 사람이 현실에선 있을지도 모르겠다. 여기서는 모든 사람이 동일한 시간에 동일한 양의 일을 한다는 가정을 하였다.(현실과 안맞다...)

 

 

이번 포스팅에서는 대수 교과서와 파이썬을 연결지어서 사용해봤다. 조금 다른 느낌인 것 같기도 하고, 좀 더 포스팅을 많이 해봐야겠다.

 

영어 문제는 점점 더 어려워지고 있다. 수학에서 사용하는 문장을 잘 못알아듣고 있구나라는 생각이다. 당연히 영어로 제대로된 수학을 배운 적이 없으니까 조금 더 자료를 찾아봐야 알것 같다.

공유하기

facebook twitter kakaoTalk kakaostory naver band