- 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
- 복소수 해를 결정하기 위해서, 종종 복소수 초기 추정값이 필요합니다.
Comment 2
-
-
-
csolve 와 무한 루프
[TI-nspire] 계산기 먹통(=무한 루프=모래 시계=무한 로딩) 강제종료 방법
https://allcalc.org/4619
무한루프 회피하려면?
ㄴ 초기값 입력 or approx 계산 【ctrl】【enter】하면 되는데,
이 경우에는 approx 계산방법으로는 해결되지 않네요.
-
Deg 세팅에서 오류 발생
https://allcalc.org/37512