기본 콘텐츠로 건너뛰기

[matplotlib]quiver()함수

[stock] 캔들 스틱 패턴

캔들 패턴

캔들 스틱의 종류: 나타나는 캔들으 수와 형성된 모양에 따라 다양하게 분류될 수 있음, 크게 분류하면 다음과 같음

단일 캔들 패턴: 하나의 캔들로 이루어진 패턴으로 시장의 잠재적인 추세전환 또는 지속을 암시

단일 캔들 패턴
명칭설명
도지(Doji)시가와 종가가 거의 같은 가격에 형성되어 몸통이 매우 작거나 없는 캔들. 시장의 불확실성 또는 추세전환의 가능성을 암시하며, 긴 윗꼬리 도지 (Gravestone Doji), 긴 아래꼬리 도지 (Dragonfly Doji), 긴 몸통 도지 (Long-Legged Doji, 위와 아래 꼬리가 작아 몸통이 길어보이는 경우)) 등 다양한 형태가 있음
망치형 (Hammer)하락 추세의 끝에서 나타나는 작은 몸통과 긴 아래꼬리를 가진 양봉입니다. 상승 반전의 신호로 해석될 수 있습니다.
교수형 (Hanging Man)상승 추세의 끝에서 나타나는 작은 몸통과 긴 아래꼬리를 가진 음봉입니다. 하락 반전의 신호로 해석될 수 있습니다.
유성형 (Shooting Star)상승 추세의 끝에서 나타나는 작은 몸통과 긴 윗꼬리를 가진 음봉입니다. 하락 반전의 신호로 해석될 수 있습니다.
하락추세의 바닥에서 나타나는 경우 상승 반전 가능성을 시사
팽이형 (Spinning Top)작은 몸통과 긴윗꼬리, 아래꼬리를 가진 캔들입니다. 시장의 관망세 또는 추세의 일시적인 멈춤을 나타냅니다.

이중 캔들 패턴 (Double Candlestick Patterns): 두 개의 캔들로 이루어진 패턴으로, 단일 캔들 패턴보다 더 강력한 신호를 제공할 수 있습니다.

이중 캔들 패턴 (Double Candlestick Patterns)
명칭설명
장악형 (Engulfing Pattern)상승 장악형 (Bullish Engulfing)하락 추세에서 작은 음봉 뒤에 이전 음봉을 완전히 감싸는 큰 양봉이 나타나는 패턴입니다. 강력한 상승 반전 신호로 해석됩니다.
하락 장악형 (Bearish Engulfing)상승 추세에서 작은 양봉 뒤에 이전 양봉을 완전히 감싸는 큰 음봉이 나타나는 패턴입니다. 강력한 하락 반전 신호로 해석됩니다.
관통형 (Piercing Line)하락 추세에서 긴 음봉 뒤에 이전 음봉의 중간 이상을 뚫고 올라오는 양봉이 나타나는 패턴입니다. 상승 반전의 가능성을 시사합니다.
흑운형 (Dark Cloud Cover)상승 추세에서 긴 양봉 뒤에 이전 양봉의 중간 이하로 내려와 닫히는 음봉이 나타나는 패턴입니다. 하락 반전의 가능성을 시사합니다.
하락/상승 샅바형 (Harami)하락 샅바형 (Bearish Harami)상승 추세에서 긴 양봉 안에 완전히 들어가는 작은 음봉이 나타나는 패턴입니다. 추세 약화 또는 하락 반전의 가능성을 나타냅니다.
상승 샅바형 (Bullish Harami)하락 추세에서 긴 음봉 안에 완전히 들어가는 작은 양봉이 나타나는 패턴입니다. 추세 약화 또는 상승 반전의 가능성을 나타냅니다.
집게형 천장/바닥 (Tweezer Tops/Bottoms)속된 두 캔들의 고가 또는 저가가 거의 같은 가격에 형성되는 패턴으로, 추세 반전의 가능성을 나타냅니다.

세 개 이상 캔들 패턴 (Multiple Candlestick Patterns): 세 개 이상의 캔들로 이루어진 패턴으로, 추세 전환 또는 지속에 대한 더 강력하고 신뢰할 수 있는 신호를 제공할 수 있습니다.

세 개 이상 캔들 패턴 (Multiple Candlestick Patterns)
명칭설명
별형 (Star Patterns)상승 반전 별형 (Morning Star)하락 추세에서 긴 음봉, 작은 몸통의 캔들 (양봉 또는 음봉), 긴 양봉 순으로 나타나는 패턴입니다. 상승 반전의 강력한 신호로 해석됩니다.
하락 반전 별형 (Evening Star)상승 추세에서 긴 양봉, 작은 몸통의 캔들 (양봉 또는 음봉), 긴 음봉 순으로 나타나는 패턴입니다. 하락 반전의 강력한 신호로 해석됩니다.
도지 별형 (Doji Star)별 패턴의 중간 캔들이 도지인 경우로, 반전 신호가 더욱 강력할 수 있습니다.
세 개의 흰 병정 (Three White Soldiers) 하락 추세의 끝에서 연속적으로 나타나는 세 개의 긴 양봉 패턴입니다. 강력한 상승 추세 시작의 신호로 해석됩니다.
세 마리의 검은 까마귀 (Three Black Crows) 상승 추세의 끝에서 연속적으로 나타나는 세 개의 긴 음봉 패턴입니다. 강력한 하락 추세 시작의 신호로 해석됩니다.
상승/하락 쐐기형 (Rising/Falling Three Methods) 추세 지속 패턴으로, 상승 추세 중 긴 양봉 이후 세 개의 작은 음봉이 나타나고 다시 긴 양봉이 나타나 상승 추세 지속을 암시하거나, 하락 추세 중 긴 음봉 이후 세 개의 작은 양봉이 나타나고 다시 긴 음봉이 나타나 하락 추세 지속을 암시합니다

캔들스틱 패턴 활용 시 주의사항:

  • 다른 기술적지표와 함께 사용: 캔들스틱 패턴은 유용한 분석 도구이지만, 이동평균선, MACD, RSI 등 다른 기술적 지표와 함께 사용하여 분석의 신뢰도를 높이는 것이 좋습니다.
  • 확인: 캔들스틱 패턴이 나타날 때 거래량을 함께 분석하여 신호의 강도를 파악하는 것이 중요합니다. 일반적으로 추세 전환 신호가 나타날 때는 거래량이 증가하는 경향이 있습니다.
  • 시장상황 고려: 전반적인 시장 추세와 상황을 고려하여 캔들스틱 패턴을 해석해야 합니다. 강세 시장과 약세 시장에서 동일한 패턴이라도 의미가 다를 수 있습니다.
  • 추세선 및 지지/저항선: 캔들스틱 패턴을 추세선, 지지선 및 저항선과 함께 분석하면 더욱 정확한 매매 전략을 수립하는 데 도움이 될 수 있습니다.
  • 오류가능성 인지: 모든 기술적 분석 도구와 마찬가지로 캔들스틱 패턴도 때로는 잘못된 신호를 발생시킬 수 있다는 점을 인지하고 항상 주의를 기울여야 합니다.
  • 캔들스틱 패턴은 직관적인 시각적 정보를 제공하며, 시장 참여자들의 심리를 파악하고 잠재적인 가격 움직임을 예측하는 데 유용한 도구입니다. 다양한 패턴을 이해하고 실제 차트에 적용하는 연습을 통해 트레이딩 전략을 개선할 수 있습니다.

dl_pattern은 캔들스틱 패턴을 식별하는 데 사용되는 지표 다양한 캔들스틱 패턴을 자동으로 인식하여 매수, 미도 신호를 제공할 수 있습니다. 이러한 패턴은 특정 기간 동안 시가,, 고가, 저가 종가를 시각적으로 표현한 것으로 시장 참여자들의 심리와 잠재적인 가격 움직임을 나타내는 것으로 간주됩니다.

pandas_ta.cdl_pattern(open_, high, low, close, name: Union[str, Sequence[str]] = 'all', scalar=None, offset=None, **kwargs)로 다양한 캔들스틱 패턴을 찾을 수 있습니다. 이 함수에서 제공하는 모든 패턴의 이름은 a.CDL_PATTERN_NAMES으로 확인할 수 있습니다.

ta.CDL_PATTERN_NAMES
['2crows',
 '3blackcrows',
 '3inside',
 '3linestrike',
 '3outside',
 …
pandas_ta 라이브러리에서 제공하는 캔들 패턴의 종류
명칭내용
2Crows두 개의 연속된 하락 캔들 패턴
3BlackCrows세 개의 연속된 긴 음봉 패턴
3Inside세 개의 캔들로 이루어진 반전 패턴
3LineStrike세 개의 동일한 추세의 캔들 이후 반대 방향의 긴 캔들 패턴
3Outside현재 캔들이 이전 캔들을 완전히 감싸는 세 개의 캔들로 이루어진 반전 패턴
3StarsInSouth하락 추세 중 나타나는 세 개의 캔들 패턴
3WhiteSoldiers세 개의 연속된 긴 양봉 패턴
AbandonedBaby갭 상승 또는 하락 후 나타나는 도지 캔들 패턴
AdvanceBlock상승 추세의 둔화를 나타내는 패턴
Belthold시가 부근에서 시작하여 추세 방향으로 길게 뻗은 캔들 패턴
Breakaway추세 반전을 암시하는 갭과 긴 캔들로 이루어진 패턴
ClosingMarubozu시가 또는 고가에서 시작하여 반대 방향으로 꽉 찬 캔들 패턴
ConcealBabysWall하락 추세 중 짧은 양봉 후 긴 음봉이 나타나는 패턴
Counterattack반대 방향의 긴 캔들이 이전 캔들의 종가 부근에서 마감하는 패턴
DarkCloudCover상승 추세 중 발생하며 하락 반전을 암시하는 패턴
Doji시가와 종가가 거의 같은 캔들
DojiStar이전 캔들과 갭을 두고 나타나는 도지 캔들
DragonflyDoji아래꼬리가 긴 도지 캔들
Engulfing현재 캔들이 이전 캔들을 완전히 감싸는 패턴
EveningDojiStar상승 추세의 끝에 나타나는 도지 스타 패턴
EveningStar상승 추세의 끝에 나타나는 세 개의 캔들 패턴
GapSideSideWhite두 개의 연속된 양봉이 갭을 두고 나타나는 패턴
GravestoneDoji윗꼬리가 긴 도지 캔들
Hammer하락 추세 끝에서 나타나는 짧은 몸통과 긴 아래꼬리를 가진 캔들
HangingMan상승 추세 끝에서 나타나는 짧은 몸통과 긴 아래꼬리를 가진 캔들
Harami이전의 긴 캔들 안에 작은 캔들이 들어가는 패턴
HaramiCross이전의 긴 캔들 안에 도지 캔들이 들어가는 패턴
HighWave몸통에 비해 꼬리가 긴 캔들
Hikkake여러 캔들 내에서 나타나는 잠재적 반전 패턴
HikkakeMod수정된 히카케 패턴
HomingPigeon하락 추세 중 긴 음봉 안에 작은 음봉이 들어가는 패턴
Identical3Crows세 개의 연속된 동일한 길이의 음봉 패턴
InNeck하락 추세 중 짧은 양봉이 이전 음봉의 종가 부근에서 마감하는 패턴
Inside이전 캔들 안에 현재 캔들이 완전히 들어가는 패턴
InvertedHammer하락 추세 끝에서 나타나는 짧은 몸통과 긴 윗꼬리를 가진 캔들
Kicking이전 캔들과 반대 방향으로 긴 갭을 가진 캔들
KickingByLength몸통 길이를 고려한 키킹 패턴
LadderBottom하락 추세 끝에 나타나는 다섯 개의 캔들 패턴
LongLeggedDoji위아래 꼬리가 모두 긴 도지 캔들
LongLine몸통 길이가 긴 캔들
Marubozu꼬리가 없는 꽉 찬 캔들
MatchingLow하락 추세 중 두 개의 연속된 캔들이 같은 저가를 갖는 패턴
Mathold상승 추세 중 세 개의 작은 음봉이 큰 양봉 안에 있는 패턴
MorningDojiStar하락 추세 끝에 나타나는 도지 스타 패턴
MorningStar하락 추세 끝에 나타나는 세 개의 캔들 패턴
OnNeck하락 추세 중 짧은 양봉이 이전 음봉의 저가 부근에서 마감하는 패턴
Piercing하락 추세 중 긴 양봉이 이전 음봉의 중간 이상을 뚫고 올라오는 패턴
RickshawMan몸통이 짧고 위아래 꼬리가 모두 긴 캔들
RiseFall3Methods추세 방향으로 세 개의 작은 캔들 이후 긴 추세 반전 캔들 패턴
SeparatingLines같은 시가에서 시작하여 반대 방향으로 움직이는 두 개의 긴 캔들 패턴
ShootingStar상승 추세 끝에서 나타나는 짧은 몸통과 긴 윗꼬리를 가진 캔들
ShortLine몸통 길이가 짧은 캔들
SpinningTop몸통이 짧고 위아래 꼬리가 적당히 긴 캔들
StalledPattern상승 추세의 둔화를 나타내는 패턴
StickSandwich두 개의 양봉 사이에 있는 음봉 패턴
Takuri긴 아래꼬리를 가진 작은 몸통의 캔들
Tasukigap상승 또는 하락 추세 중 발생하는 갭 패턴
Thrusting하락 추세 중 양봉이 이전 음봉의 중간 아래에서 마감하는 패턴
Tristar세 개의 도지 캔들로 이루어진 패턴
Unique3River하락 추세 끝에 나타나는 세 개의 캔들 패턴
UpsideGap2Crows상승 추세 중 발생하는 갭 패턴
XSideGap3Methods갭을 포함한 다섯 개의 캔들 패턴

일정기간의 주가 자료에서 캔들스틱 형태 'doji'를 살펴봅니다.

import numpy as np
import pandas as pd
import yfinance as yf
import pandas_ta as ta
import matplotlib.pyplot as plt
import mplfinance as mpf

st=pd.Timestamp(2024,9, 1)
et=pd.Timestamp(2025, 5,3)
trgnme="000660.KS"
trg=yf.download(trgnme,  st, et)
trg.columns=[i[0] for i in trg.columns]
doji=ta.cdl_pattern(trg.Open, trg.High, trg.Low, trg.Close, name="doji")
(doji == 100).any()
CDL_DOJI_10_0.1    True
dtype: bool
positive=np.where(doji !=0)[0:]
positive
(array([ 13,  38,  40,  43,  50,  52,  58,  67,  71,  76,  78,  87,  88,
         95,  97, 102, 107, 111, 121, 131, 147], dtype=int64),
 array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
       dtype=int64))
trg.index[positive[0]]
DatetimeIndex(['2024-09-24', '2024-11-01', '2024-11-05', '2024-11-08',
               '2024-11-19', '2024-11-21', '2024-11-29', '2024-12-12',
               '2024-12-18', '2024-12-26', '2024-12-30', '2025-01-14',
               '2025-01-15', '2025-01-24', '2025-02-03', '2025-02-10',
               '2025-02-17', '2025-02-21', '2025-03-10', '2025-03-24',
               '2025-04-15'],
              dtype='datetime64[ns]', name='Date', freq=None)

위 과정을 위한 UDF를 작성하여 사용합니다.

def candlePattern(data, name="all"):
    pattern =ta.cdl_pattern(data.Open, data.High, data.Low, data.Close, name=name)
    if (type(pattern) == (pd.Series)) or (type(pattern) ==pd.DataFrame):
        result=np.where(pattern == 100)
        result=pd.DataFrame([result[0], result[1]], index=["row_num","col_num" ]).T
        return (result, pattern.columns)
    else:
        return pattern
positive=candlePattern(trg, name="doji")
positive
(    row_num  col_num
 0        13        0
 1        38        0
 2        40        0
 3        43        0
 4        50        0
 5        52        0
 6        58        0
 7        67        0
 8        71        0
 9        76        0
 10       78        0
 11       87        0
 12       88        0
 13       95        0
 14       97        0
 15      102        0
 16      107        0
 17      111        0
 18      121        0
 19      131        0
 20      147        0,
 Index(['CDL_DOJI_10_0.1'], dtype='object'))
trg.index[positive[0]]
DatetimeIndex(['2024-09-24', '2024-11-01', '2024-11-05', '2024-11-08',
               '2024-11-19', '2024-11-21', '2024-11-29', '2024-12-12',
               '2024-12-18', '2024-12-26', '2024-12-30', '2025-01-14',
               '2025-01-15', '2025-01-24', '2025-02-03', '2025-02-10',
               '2025-02-17', '2025-02-21', '2025-03-10', '2025-03-24',
               '2025-04-15'],
              dtype='datetime64[ns]', name='Date', freq=None)
trg.index[positive[0].iloc[:, 0]]
DatetimeIndex(['2024-09-24', '2024-11-01', '2024-11-05', '2024-11-08',
               '2024-11-19', '2024-11-21', '2024-11-29', '2024-12-12',
               '2024-12-18', '2024-12-26', '2024-12-30', '2025-01-14',
               '2025-01-15', '2025-01-24', '2025-02-03', '2025-02-10',
               '2025-02-17', '2025-02-21', '2025-03-10', '2025-03-24',
               '2025-04-15'],
              dtype='datetime64[ns]', name='Date', freq=None)

위 데이터에서 최근일에 발견되는 캔들스틱의 패턴을 찾아봅니다.

pattern=candlePattern(trg, name="all")
pattern
(     row_num  col_num
 0          9       56
 1         12        9
 2         12       18
 3         12       39
 4         13        4
 ..       ...      ...
 178      149       51
 179      150       51
 180      153       51
 181      155       51
 182      159       11
 
 [183 rows x 2 columns],
 Index(['CDL_2CROWS', 'CDL_3BLACKCROWS', 'CDL_3INSIDE', 'CDL_3LINESTRIKE',
        'CDL_3OUTSIDE', 'CDL_3STARSINSOUTH', 'CDL_3WHITESOLDIERS',
        'CDL_ABANDONEDBABY', 'CDL_ADVANCEBLOCK', 'CDL_BELTHOLD',
        'CDL_BREAKAWAY', 'CDL_CLOSINGMARUBOZU', 'CDL_CONCEALBABYSWALL',
        'CDL_COUNTERATTACK', 'CDL_DARKCLOUDCOVER', 'CDL_DOJI_10_0.1',
        'CDL_DOJISTAR', 'CDL_DRAGONFLYDOJI', 'CDL_ENGULFING',
        'CDL_EVENINGDOJISTAR', 'CDL_EVENINGSTAR', 'CDL_GAPSIDESIDEWHITE',
        'CDL_GRAVESTONEDOJI', 'CDL_HAMMER', 'CDL_HANGINGMAN', 'CDL_HARAMI',
        'CDL_HARAMICROSS', 'CDL_HIGHWAVE', 'CDL_HIKKAKE', 'CDL_HIKKAKEMOD',
        'CDL_HOMINGPIGEON', 'CDL_IDENTICAL3CROWS', 'CDL_INNECK', 'CDL_INSIDE',
        'CDL_INVERTEDHAMMER', 'CDL_KICKING', 'CDL_KICKINGBYLENGTH',
        'CDL_LADDERBOTTOM', 'CDL_LONGLEGGEDDOJI', 'CDL_LONGLINE',
        'CDL_MARUBOZU', 'CDL_MATCHINGLOW', 'CDL_MATHOLD', 'CDL_MORNINGDOJISTAR',
        'CDL_MORNINGSTAR', 'CDL_ONNECK', 'CDL_PIERCING', 'CDL_RICKSHAWMAN',
        'CDL_RISEFALL3METHODS', 'CDL_SEPARATINGLINES', 'CDL_SHOOTINGSTAR',
        'CDL_SHORTLINE', 'CDL_SPINNINGTOP', 'CDL_STALLEDPATTERN',
        'CDL_STICKSANDWICH', 'CDL_TAKURI', 'CDL_TASUKIGAP', 'CDL_THRUSTING',
        'CDL_TRISTAR', 'CDL_UNIQUE3RIVER', 'CDL_UPSIDEGAP2CROWS',
        'CDL_XSIDEGAP3METHODS'],
       dtype='object'))
pattern[0].tail(1)
row_num col_num
182 159 11
trg.index[159]
Timestamp('2025-05-02 00:00:00')
pattern[1][11]
'CDL_CLOSINGMARUBOZU'

위 결과는 '시가 또는 고가에서 시작하여 반대방향으로 꽉찬 캔틀 패턴'를 나타냅니다. 다음 그림과 같으며 캔들의 한쪽 끝(고가 또는 저가)이 몸통과 완전히 붙어 있소 다른쪽 끝에는 꼬리가 없는 특징을 가집니다. 이 패턴은 강력한 추세 지속 또는 시작의 신호로 해석될 수 있으며 양봉 또는 음봉에 따라 의미가 달라집니다.

댓글

이 블로그의 인기 게시물

[Linear Algebra] 유사변환(Similarity transformation)

유사변환(Similarity transformation) n×n 차원의 정방 행렬 A, B 그리고 가역 행렬 P 사이에 식 1의 관계가 성립하면 행렬 A와 B는 유사행렬(similarity matrix)이 되며 행렬 A를 가역행렬 P와 B로 분해하는 것을 유사 변환(similarity transformation) 이라고 합니다. $$\tag{1} A = PBP^{-1} \Leftrightarrow P^{-1}AP = B $$ 식 2는 식 1의 양변에 B의 고유값을 고려한 것입니다. \begin{align}\tag{식 2} B - \lambda I &= P^{-1}AP – \lambda P^{-1}P\\ &= P^{-1}(AP – \lambda P)\\ &= P^{-1}(A - \lambda I)P \end{align} 식 2의 행렬식은 식 3과 같이 정리됩니다. \begin{align} &\begin{aligned}\textsf{det}(B - \lambda I ) & = \textsf{det}(P^{-1}(AP – \lambda P))\\ &= \textsf{det}(P^{-1}) \textsf{det}((A – \lambda I)) \textsf{det}(P)\\ &= \textsf{det}(P^{-1}) \textsf{det}(P) \textsf{det}((A – \lambda I))\\ &= \textsf{det}(A – \lambda I)\end{aligned}\\ &\begin{aligned}\because \; \textsf{det}(P^{-1}) \textsf{det}(P) &= \textsf{det}(P^{-1}P)\\ &= \textsf{det}(I)\end{aligned}\end{align} 유사행렬의 특성 유사행렬인 두 정방행렬 A와 B는 'A ~ B' 와 같...

[sympy] Sympy객체의 표현을 위한 함수들

Sympy객체의 표현을 위한 함수들 General simplify(x): 식 x(sympy 객체)를 간단히 정리 합니다. import numpy as np from sympy import * x=symbols("x") a=sin(x)**2+cos(x)**2 a $\sin^{2}{\left(x \right)} + \cos^{2}{\left(x \right)}$ simplify(a) 1 simplify(b) $\frac{x^{3} + x^{2} - x - 1}{x^{2} + 2 x + 1}$ simplify(b) x - 1 c=gamma(x)/gamma(x-2) c $\frac{\Gamma\left(x\right)}{\Gamma\left(x - 2\right)}$ simplify(c) $\displaystyle \left(x - 2\right) \left(x - 1\right)$ 위의 예들 중 객체 c의 감마함수(gamma(x))는 확률분포 등 여러 부분에서 사용되는 표현식으로 다음과 같이 정의 됩니다. 감마함수는 음이 아닌 정수를 제외한 모든 수에서 정의됩니다. 식 1과 같이 자연수에서 감마함수는 factorial(!), 부동소수(양의 실수)인 경우 적분을 적용하여 계산합니다. $$\tag{식 1}\Gamma(n) =\begin{cases}(n-1)!& n:\text{자연수}\\\int^\infty_0x^{n-1}e^{-x}\,dx& n:\text{부동소수}\end{cases}$$ x=symbols('x') gamma(x).subs(x,4) $\displaystyle 6$ factorial 계산은 math.factorial() 함수를 사용할 수 있습니다. import math math.factorial(3) 6 a=gamma(x).subs(x,4.5) a.evalf(3) 11.6 simpilfy() 함수의 알고리즘은 식에서 공통사항을 찾아 정리하...

sympy.solvers로 방정식해 구하기

sympy.solvers로 방정식해 구하기 대수 방정식을 해를 계산하기 위해 다음 함수를 사용합니다. sympy.solvers.solve(f, *symbols, **flags) f=0, 즉 동차방정식에 대해 지정한 변수의 해를 계산 f : 식 또는 함수 symbols: 식의 해를 계산하기 위한 변수, 변수가 하나인 경우는 생략가능(자동으로 인식) flags: 계산 또는 결과의 방식을 지정하기 위한 인수들 dict=True: {x:3, y:1}같이 사전형식, 기본값 = False set=True :{(x,3),(y,1)}같이 집합형식, 기본값 = False ratioal=True : 실수를 유리수로 반환, 기본값 = False positive=True: 해들 중에 양수만을 반환, 기본값 = False 예 $x^2=1$의 해를 결정합니다. solve() 함수에 적용하기 위해서는 다음과 같이 식의 한쪽이 0이 되는 형태인 동차식으로 구성되어야 합니다. $$x^2-1=0$$ import numpy as np from sympy import * x = symbols('x') solve(x**2-1, x) [-1, 1] 위 식은 계산 과정은 다음과 같습니다. $$\begin{aligned}x^2-1=0 \rightarrow (x+1)(x-1)=0 \\ x=1 \; \text{or}\; -1\end{aligned}$$ 예 $x^4=1$의 해를 결정합니다. solve() 함수의 인수 set=True를 지정하였으므로 결과는 집합(set)형으로 반환됩니다. eq=x**4-1 solve(eq, set=True) ([x], {(-1,), (-I,), (1,), (I,)}) 위의 경우 I는 복소수입니다.즉 위 결과의 과정은 다음과 같습니다. $$x^4-1=(x^2+1)(x+1)(x-1)=0 \rightarrow x=\pm \sqrt{-1}, \; \pm 1=\pm i,\; \pm1$$ 실수...