In [ ]:
#
# 나는 julia 를 사랑하는가.
#
In [ ]:
# Complex and Rational Number
# 복소소 유리수
In [1]:
# julia 는
# 복소수 i 를 전역상수 im 에 연결해놓았다.
# i 가 아니고 im 으로 정한 이유 따위는
# 나는 궁금하지 않다.
# 복소수를 표현할 수 있는 방법이 있다는 사실에 감사할 뿐.
im
Out[1]:
In [2]:
1 + 2im
Out[2]:
In [3]:
# 닥치고 보라.
(1 + 2im)*(2 - 3im)
Out[3]:
In [4]:
(1 + 2im)/(1 - 2im)
Out[4]:
In [5]:
(1 + 2im) + ( - 2im)
Out[5]:
In [6]:
(-3 + 2im) - (5 - 1im)
Out[6]:
In [7]:
(-1 + 2im)^2
Out[7]:
In [8]:
(-1 + 2im)^2.5
Out[8]:
In [9]:
(-1 + 2im)^(1 + 1im)
Out[9]:
In [10]:
3(2 - 5im)
Out[10]:
In [11]:
3(2 - 5im)^2
Out[11]:
In [12]:
3(2 - 5im)^-1.0
Out[12]:
In [13]:
# 형변환 장치가 적절히 작동해 준다.
2(1 - 1im)
Out[13]:
In [14]:
(2 + 3im) - 1
Out[14]:
In [15]:
(1 + 2im) + 0.5
Out[15]:
In [16]:
(2 + 3im) - 0.5im
Out[16]:
In [17]:
0.75(1 + 2im)
Out[17]:
In [18]:
(2 + 3im) / 2
Out[18]:
In [19]:
(1 - 3im) / (2 + 2im)
Out[19]:
In [20]:
2im^2
Out[20]:
In [21]:
1 + 3/4im
Out[21]:
In [22]:
# 복소수값을 조작하는 표준 함수를 제공한다.
real(1 + 2im)
Out[22]:
In [23]:
imag(1 + 2im)
Out[23]:
In [24]:
conj(1 + 2im)
Out[24]:
In [25]:
# 절대값. 0 으로부터 거리
abs(1 + 2im)
Out[25]:
In [26]:
# 절대값의 제곱
abs2(1 + 2im)
Out[26]:
In [27]:
# 라디안 값을 리턴한다.
angle(1 + 2im)
Out[27]:
In [28]:
# 기본 함수 전체가 복소수에 대해 작동한다.
sqrt( 1im)
Out[28]:
In [29]:
sqrt( 1 + 2im)
Out[29]:
In [30]:
cos(1 + 2im)
Out[30]:
In [31]:
exp(1 + 2im)
Out[31]:
In [32]:
sinh(1 + 2im)
Out[32]:
In [33]:
# 이건 안된다.
sqrt(-1)
In [34]:
# 이건 된다.
# sqrt(-1) 과 같은건데, 하난 되고, 하난 안된다.
sqrt( -1 + 0im)
Out[34]:
In [35]:
# 이건 안된다.
# 곱하기를 생략하기는 안된다.
a = 1; b = 2; a + bim
In [36]:
# 이건 된다.
# 곱하기를 반드시 써줘야 한다.
a = 1; b = 2; a + b*im
Out[36]:
In [37]:
# 그런데, 위와 같은 기능이 필요하다면
# 생성자를 써라.
complex( a, b)
Out[37]:
In [38]:
1 + Inf*im
Out[38]:
In [39]:
1 + NaN*im
Out[39]:
In [40]:
# 유리수
# 반올림이 발생하는 부정확한 소수가 아니라
# 정수의 정확한 비율로 표시하는 유리수.
# 유리수는 // 연산자로 표현한다.
2//3
Out[40]:
In [41]:
6//9
Out[41]:
In [42]:
-4//8
Out[42]:
In [43]:
5//-15
Out[43]:
In [44]:
-4//-12
Out[44]:
In [45]:
# 분모 denominator den()
# 분자 numerator num()
num(2//3)
Out[45]:
In [46]:
den(2//3)
Out[46]:
In [47]:
2//3 == 6//9
Out[47]:
In [48]:
2//3 == 9//27
Out[48]:
In [49]:
3//7 < 1//2
Out[49]:
In [50]:
3//4 > 2//3
Out[50]:
In [51]:
2//4 + 1//6
Out[51]:
In [52]:
5//12 - 1//4
Out[52]:
In [53]:
5//8 * 3//12
Out[53]:
In [54]:
6//5 / 10//7
Out[54]:
In [55]:
# 부동소수점수로 변환
float( 3//4)
Out[55]:
In [56]:
isequal(float(a//b), a/b)
Out[56]:
In [57]:
# 무한대 유리수
# Inf 표현이 가능하다.
5//0
Out[57]:
In [58]:
-3//0
Out[58]:
In [59]:
typeof(ans)
Out[59]:
In [60]:
# NaN 표현은 불가하다.
0//0
In [61]:
# 자동 형변환 장치덕분에 다른 타입과 연산이 된다.
3//5 + 1
Out[61]:
In [62]:
3//5 - 0.5
Out[62]:
In [63]:
2//7 * (1 + 2im)
Out[63]:
In [64]:
2//7 * (1.5 + 2im)
Out[64]:
In [65]:
3//2 / (1 + 2im)
Out[65]:
In [66]:
1//2 + 2im
Out[66]:
In [67]:
1 + 2//3im
Out[67]:
In [68]:
0.5 == 1//2
Out[68]:
In [69]:
0.33 == 1//3
Out[69]:
In [70]:
0.33 < 1//3
Out[70]:
In [71]:
1//3 - 0.33
Out[71]: