- TI nspire
[TI-nspire CAS] Function - cSolve : 복소수 해 찾기
1. cSolve 란?
- cSolve 는 '복소수가 포함된 수식'이나 '복소수가 해인 수식'의 해를 찾는 함수입니다.
- 찾아진 해는 실수꼴일 수도 있고, 실수꼴이 아닐 수도 있습니다.
- cSolve 는 도메인이 real 로 설정된 상태이더라도, 일시적으로 도메인을 복소수로 지정합니다.
하지만, 복소수를 취급하실거면 rectangular 든 polar든 선택하시는 것이 좋습니다.
2. 사용 예 1 (방정식, 부등식)
- cSolve(Equation, Var) ⇒ Boolean expression
- cSolve(Equation, Var=Guess) ⇒ Boolean expression
- cSolve(Inequality, Var) ⇒ Boolean expression
3. 사용 예 2 (연립 방정식)
- cSolve(Eqn1 and Eqn2 [and…], VarOrGuess1, VarOrGuess2 [, … ]) ⇒ Boolean expression
- cSolve(SystemOfEqns, VarOrGuess1, VarOrGuess2 [, …]) ⇒ Boolean expression
- 모든 방정식(Eqn)이 다항식(polynomials)이고, 어떠한 초기 추정값도 지정되지 않았다면, cSolve 는 모든 복소수 해를 결정하기 위해 lexical Gröbner/Buchberger elimination method 를 사용합니다.
- 어떠한 방정식(Eqn)이라도 어떠한 변수에 대해 다항식이 아니(non-polynomial)고, 어떠한 초기 추정값도 지정되지 않았으며, 모든 방정식이 모든 해 변수들에 대해 리니어(linear)하다면, cSolve 는 모든 해를 결정하기 위해 Gaussian elimination 을 사용합니다.
- 계산 소요 시간이나 메모리 사용량은 해로 적어놓은 변수의 순서(order)에 매우 크게 영향을 받습니다. 만약 (무한 루프 등) 인내력의 한계에 도달하게 된다면, 방정식 내의 변수들이나 해로 지정한 변수 리스트를 재조정해보시는 것도 좋습니다.
- 연립 방정식 시스템이 모든 변수들에 대해 다항식도 아니고 해 변수들이 리니어하지도 않(non-linear)다면, cSolve는 최적의 해 하나를 찾기 위해 approximate iterative method 를 사용합니다.
조건 1 : '해 변수의 갯수' = '방정식의 갯수'
조건 2 : 방정식 내 모든 변수들이 숫자로 간소화될 수 있어야 함.
4. 주의사항
- cSolve 는 TI-nspire (non-CAS) 에서는 사용할 수 없습니다.
- OS 버전에 따라 cSolve 결과가 다를 수도 있습니다.
- Setting 에서
가급적(x)반드시(!) Angle=Radian 으로 바꿔두세요.
Degree 등일 때는 "Error: Domain error" 내지 "false" 오류가 발생할 수 있습니다. - 결과값의 표시 방법은 Document Setting - Real or Complex Format 에 영향을 받습니다.
x-y 직교좌표일 때는 Rectangular 를 선택하시는 것을 추천드리고,
r-θ 극좌표일 때는 Polar를 선택하시면 됩니다. 이 때는 Deg / Rad 에 또 영향을 받습니다. - solve와 비교하면 계산 시간이 오래 걸릴 수 있고, 재수가 없으면 무한 루프에 빠지기도 합니다.
이러한 사태를 방지하기 위해서는 초기값을 넣어주시면 해결될 수 있습니다.
approx로 계산해서 해결되기도 합니다.
5. 상세 설명
- solve와 달리 csolve는 실수해/복소수해 모두를 찾아줍니다.
- (이 예제에서) 'Solve 해집합' ⊂ 'cSolve 해집합' 성립
- 분모가 홀수인 분수 지수꼴에서는 'Solve 해집합' ⊂ 'cSolve 해집합'이 아닐 수 있음.
- cSolve 는 우선적으로 exact symbolic method 를 사용하지만, 경우에 따라 (알아서) 반복 근사법을 사용하기도 합니다.
- (복소수 연립방정식에서) 간혹 무한 루프에 빠지는 경우가 있습니다. (모래시계)
- 이 때는 【on】 버튼을 길게 눌러 연산을 강제로 멈추게(break, "Calculation Interrupted") 할 수 있습니다.
http://www.allcalc.org/4619 - 아니면 명령시부터 【ctrl】【enter】 를 이용해 반복 근사법만 계산하도록 강제할 수도 있습니다.
이 때 결과값은 소숫점 형태(Decimal Form)로만 표현됩니다. - 아니면 변수에 초기 추정값을 지정하는 방법을 사용할 수도 있습니다.
추정값은 실수나 복소수 모두 가능합니다.
- 변수(var)끝에 밑줄(underscore)을 붙이면, 변수_(var_) 는 복소수로 취급됩니다.
- 복소수해를 가질 가능성이 있는 수식에서는 모든 다른 변수들에도 밑줄을 붙여주는 편이 좋습니다.
그렇지 않으면 기대하지 않은 결과값을 찾을 가능성이 있습니다.
- 연립방정식은 값이 없는 추가 변수(c_)를 포함할 수 있고, 이것은 나중에 숫자로 치환될 수 있습니다.
- 수식에는 없는 변수(w_) 를 포함하는 해
- 여기서 c 는 constants 의 약자입니다. (뒤에 붙는 숫자는 1~255까지 순차적으로 결정됩니다.)
- Gaussian elimination

- Approximate iterative method
- 복소수 해를 결정하기 위해서, 종종 복소수 초기 추정값이 필요합니다.
댓글2
-
세상의모든계산기
csolve 와 무한 루프
[TI-nspire] 계산기 먹통(=무한 루프=모래 시계=무한 로딩) 강제종료 방법
https://allcalc.org/4619
무한루프 회피하려면?
ㄴ 초기값 입력 or approx 계산 【ctrl】【enter】하면 되는데,
이 경우에는 approx 계산방법으로는 해결되지 않네요.
세상의모든계산기 님의 최근 댓글
낮에 TV에서 영화 '말모이' 해주더라구요. 그래서 한번 물어 봤습니다. 2025 10.10 마지막 발언이 마지막 힌트이자 문제의 핵심이군요. 처음 들은 달이 8월이었다면 (15일인지 17일인지 확신할 수 없어서) 마지막 대사를 할 수 없지만, 처음 들은 달이 7월이었다면 (선택지가 16일 하나라서 확신이 가능하므로) 마지막 대사를 할 수 있다. 대사를 했으니 7월이다. 이제 이해되었습니다. 지금 보니까 이해가 되는데, 당시에는 왜 이해가 안됐을까요? 세가지 전제 하에 문제를 풀면 A는 마지막 대화 2줄만으로 C의 생일을 알 수 없어야 정상인데, 무슨 이유에서인지 "그럼 나도 앎!"이라고 선언해 버립니다. 알게 된 이유를 대화 속에서 찾을 수는 없습니다. 이 편견에 사로잡혀 빠져나오지 못하고 다른 길로 계속 샜나봅니다. 2025 10.09 (장*훈)님 (+10,000원) 계좌 후원(2025/10/09) 감사 드립니다. 2025 10.09 원래 식이 풀어진 상태에서는 두번째 인수 v가 분모, 분자에 섞여 있어서 계산기가 처리하지 못하는 듯 합니다. 이 때는 위에서와 반대로 분모 부분만 다른 문자(w)로 치환한 다음 completesquare(,v^2) 처리를 하면 일부분은 묶이는 듯 합니다. 하지만 여기서 처음 모양으로 더 이상 진행되진 않네요. 2025 10.08 전체 식에서 일부분(분모, 루트 내부)만 적용할 수는 없습니다. 번거롭더라도 해당 부분만 따로 끄집어 내서 적용하셔야 합니다. https://allcalc.org/30694#comment_30704 2025 10.08