중고생들을 위한 매스매티카 기초#11:
오늘의 주제: 나만의 function만들기 -
* 이 영상은 콩글리쉬와 브로큰 잉글리쉬/코리안, 그리고 주변잡음을 포함하고 있습니다.
나레이터: John Lee
학생: 존리
선생님: Jon Lee
* 매스매티카는 무료 로 온라인에서 TRY할 수 있습니다. 자세한 내용은 이 화면 또는 설명에 있는 링크를 참고하세요. - JohnLeeEdu.Tistory.Com/28
두점 사이의 거리
일반적으로 좌표평면에서 두점 (x1, y1)과 (x2, y2)의 거리는 다음과 같다.
거리 = (x2 - x1)2+ (y2 - y1)2
물론 매스매티카는 위와 같은 전통적인 수학적 표현도 알아 듣고 또 나타낼 수도 있지만 오늘은 좀 덜 예뻐도 실수할 확률이 적은 매스매티카 입력문 형태로 표현해보자.
일반 수학적 표현 : abc ⟶ 매스매티카 입력문 표현 : Sqrt[abc]
일반 수학적 표현 : x2⟶매스매티카 입력문 표현 : x^2
일반 수학적 표현도 매스매티카에서 입력이 가능하다. 근데 숙련되지 않으면 좀 귀찮다. 예를 들어서 5 를 입력하고 싶으면 “Control키 + 2” 그리고 나서 “5”를 쳐주면 된다. 또 5
7
를 입력하고 싶으면 “5” 그리고“Control키 + 6” 그런 다음에 “7”을 쳐주면 된다.
In[1]:= (* 왼쪽은 일반 수학적 표현, 오른쪽은 매스매티카 입력문 표현 *)
2 , Sqrt[2]
Out[1]=
2 , 2
In[2]:= (* 뭔가를 보통 소수로 나타내고 싶으면 보통 뒤에 //N 이라고 쳐주면 된다. *)
2 , Sqrt[2] // N
Out[2]=
{ 1.41421, 1.41421}
In[3]:= (* 왼쪽은 일반 수학적 표현, 오른쪽은 매스매티카 입력문 표현 *)
22, 2^2
Out[3]=
{ 4, 4}
따라서 (x2 - x1)
2
+ (y2 - y1)2
을 매스매티카 입력문 형태로 다시 쓰면 아래와 같이 된다.In[4]:= Sqrt[(x2 - x1)^2 + (y2 - y1)^2]
Out[4]=
(- x1 + x2)
2+ (- y1 + y2)
2그런데 점(1, 2)와 점(3, 4)사이의 거리를 구하라 같은 문제가 나올 때 마다
In[5]:= Sqrt[(3 - 1)^2 + (4 - 2)^2]
Out[5]=
2 2
위와 같이 숫자를 식에 넣어서 매 번 쳐 주려면 정말 귀찮다. 그래서 그냥 나만의 “거리를 구하는 function”을 만들어 보자.
간단히 말해서 매스매티카에서 function을 만들려면 function이름 쓰고 “[“ 열고 input variable(s) 을
“variable_” 형태로 써주고 “]” 닫은 후 그냥 등호 대신 “:=” 쓰고 원하는 function을 variable을 사용해서 써주면 된다. 해보자.
In[6]:= myfunction[x1_, y1_, x2_, y2_] := Sqrt[(x2 - x1)^2 + (y2 - y1)^2]
In[8]:= myfunction[1, 2, 3, 4]
Out[8]=
2 2
In[9]:= myfunction[1, 2, 3, 4] == Sqrt[(3 - 1)^2 + (4 - 2)^2]
Out[9]=
True
이번에 (102, 22)와 (33, 45)사이의 거리를 구하라.
No problem!!!
In[10]:= myfunction[102, 22, 33, 45] // N
Out[10]=
72.7324
In[11]:= myfunction
Out[11]=
myfunction
myfunction이 궁금할 때 “?”치고 myfunction해주면 된다. 매스매티카의 모든 명령문 또는 변수들은 이런식으로 “?”치고 그 옆에 쳐주면 정보가 나온다.
In[12]:= ? myfunction
Global`myfunction
myfunction[x1_, y1_, x2_, y2_] := (x2 - x1)2+ (y2 - y1)2
잘 생각해보면 매스매티카의 모든 명령어는 function이다!!! 앞으로 명령어란 말 대신 function이라고 하자.
잘될지는 모르겠지만... Why? 이건 존리의 개인적인 생각인데 기존 function이랑 사용자가 만든 function이랑 헷갈리기 때문에...
In[13]:= ? Table
Table
[ expr, n ]
generates a list of n copies of expr.Table
[ expr, { i, i max }]
generates a list of the values of expr when i runs from 1 to imax
. Table[ expr, { i, i min
, imax }]
starts with i= i min
.Table
[ expr, { i, i min
, imax
, di}]
uses steps di.Table
[ expr, { i, { i
1, i2,…}}]
uses the successive values i1, i2,…
. Table[ expr, { i, i min
, imax }
,{ j, j min
, jmax }
,…]
gives a nested list. The list associated with i is outermost. '
복잡한 함수도 나만의 function으로!
In[14]:= mypoly[x_] := x^4 + 3 x^3 + 2 x^2 + x + 1
In[15]:= mypoly[7]
Out[15]=
3536
나만의 function으로 재밌게!
Framed는 뭔가에 박스를 씌워준다. 해보자!
In[16]:= Framed[fdjfdsfdsf]
Out[16]=
fdjfdsfdsf
Rotate는 뭔가를 돌려준다. 해보자!
In[17]:= Rotate"뱅글뱅글", 90 Degree
Out[17]=
뱅 글 뱅 글
두개를 합쳐서 나만의 function을 만들고 싶다. function안에 haha와 deg를 집어넣으면 haha에다가 박스를 씌워주고 deg만틈 돌려주는 그런 function을 만들자!
In[18]:= myfun[haha_, deg_] := Rotate[Framed[haha], deg Degree]
In[19]:= myfun[{2, 4, 5, 6}, 30]
Out[19]=
{2 , 4 , 5 , 6 }
In[20]:= myfun[Plot[Sin[x], {x, 0, 6}], 15]
Out[20]=
1
2
3
4
5
6
-1.0 -0.5 0.5 1.0
In[21]:= Tablemyfun , angle, {angle, 0, 90, 30}
Out[21]=
, , ,
Quiz
#1: 공간상의 두점 (x1, y1, z1)과 (x2, y2, z2) 사이의 거리는 (x2-x1)
2
+ (y2-y1)2
+ (z2-z1)2
와 같다.이것을 function으로 만들어라.
#2: 자연수 N을 넣으면 1부터 N까지 자연수의 합을 구해 주는 function을 만들어라.