- TI nspire
[TI-nspire CAS] Root Locus Plot 루트 로커스, 근궤적 그리는 프로그램 (Ver 1.44)
1. 프로그램 소개

함수를 입력받아 근궤적(root locus)을 그려주는 프로그램입니다.
선으로 그리는 것이 아니고, 시간(t) 흐름에 따라 점 데이터 List 를 생성해서 점을 그래프상에 표시합니다.
촘촘하게 그릴 수록 보기는 좋지만, 오래 걸리기 때문에,
적당한 분석 시간을 설정하고,
적당한 밀도를 결정해야 수월하게 사용할 수 있습니다.
Root Locus Program (Plot)
for TI-Nspire CX CAS ver 1.44
by Creeras
http://www.allcalc.org/652
(Do not redistribute)
---
Usage
1. To draw graph of 1+K×(((p(s))/(z(s))))=0
2. Excute in entry line
R.locusplot(((p(s))/(z(s))),T,D)
3. Variable should be about alphabet 's'
4. Time=1, Density=1 is recommended.
When plot doesn't fit your needs, adjust 'Time' and 'Density' arguments.
"time=n" multiplies time period to n times longer than "time=1"
"density=n" multiples plot density n times more than "density=1"
2. 다운로드 및 사용방법
Download : rootlocus_plot.tns <- 클릭 // 또는 본문 하단 Attatched File + 클릭
해보면 간단하지만, 말로 설명하기는 복잡하니... 아래 동영상을 참고해서 사용하세요.
사용 예)
- r.locusplot(exprs,1,1) : 기본
- r.locusplot(exprs,10,1) : 그래프가 너무 짧을 때
분석 구간(t)을 10배로 늘림 : 계산시간은 일정, DATA간격 늘어남 - r.locusplot(exprs,1,10) : 점들의 간격이 너무 넓을 때
분석 양(=밀도)를 10배로 늘림 : 계산시간 10배 증가 - exprs 에는 1+K×(p(s)/z(s))=0 중에서 1+ 와 K를 제외한 변수 s에 관한 식만 넣습니다.
- 화면 페이지(계산 화면↔그래프 화면) 간 변환은 【ctrl】【◀】【▶】 버튼으로 가능합니다.
3. 업데이트 내역
Ver 1.44 (2015/11/13)
- OS Ver 4.0.0.xxx 에서 발생하는 (csolve) 계산 지연 및 에러 수정
- for 문 관련 버그 수정
댓글35
- 1
- 2
-
1
세상의모든계산기이 프로그램(.tns)은 다운받은 직후 3페이지(간혹 4페이지)로 구성되어 있습니다.첫 페이지는 Note - 프로그램 소개 페이지이고,두번째는 Note - 주의사항(Caution)세번째는 Calculator - 빈 페이지,네번째가 Graphs - 그래프 페이지입니다.빈 페이지에서 함수를 실행하면그래프 페이지에서 근궤적 그래프가 자동으로 그려지는 구조입니다.페이지간 이동(오른쪽) 단축키는

입니다.* 만약 그래프 페이지가 보이지 않는다면, 파일을 삭제하고 다시 다운받아 열어 보세요. - 2
- 1
- 1
-
1
세상의모든계산기
본문 하단에 첨부파일 표시가 있었는데 잘 안보이는 것 같아서
제목 아래로 표시 위치를 바꾸었습니다. 확인해보시기 바랍니다.※ 모바일에서는 첨부파일이 보이지 않을 수 있습니다.
가로보기 상태일 때 본문 위/아래에 네비게이션바가 나타나는데 거기서 클립을 클릭하시면 첨부파일이 보입니다.

-
세상의모든계산기
유투브 동영상 댓글을 보니 잘 안된다는 분이 계신데...
이유를 알 수 없네요. 저는 잘 되는데 말이죠.
----- ----- ----- ----- ----- ----- ----- ----- ----- -----
Justin Prendeville
Hey if I try and plot something mildy complex such as 10/((s+10)(s^2+2s+2)) the program keeps loading for ages and doesn't work.
I have a ti Nspire CX CAS.----- ----- ----- ----- ----- ----- ----- ----- ----- -----
OS Ver 4.0.0.235 인 에뮬에서 돌려보니 아래와 같이 에러가 뜨네요.
새 OS 와 충돌이 있나봅니다. 확인해봐야겠습니다.
문제를 해결할 수 있을지.... -_-
-
1
세상의모든계산기
일단 문제의 원인은 발견했습니다.
1. OS 4.0.0.235(에뮬) 에서 csolve 하는 속도가 무지하게 느리네요.
처음에 프로그램 만들 때 비슷한 문제가 있어서
approx() 를 씌워가지고 해결했던 것으로 기억하는데... 가물가물

왜 비슷한 문제가 OS 4.0 버전에서 재발하는 것인지 모르겠습니다. OS3.6 이나 OS3.9 로 한번 테스트를 해보고, 해결이 안되면 TI에 물어봐야겠네요.
2. Syntax 에러 문제는 for 문 때문인 것 같습니다. 구간이 정수단위가 아닌 경우 or approx 모드에서 발생하는 점 점 때문에?? 문제가 발생했던 것 같습니다.
- 2
-
1
- 1
-
1
세상의모든계산기
이것과 같다고 보시면 될 것 같습니다. (#은 갯수를 뜻하구요)

사진 출처 : https://ocw.mit.edu/courses/mechanical-engineering/2-004-systems-modeling-and-control-ii-fall-2007/lecture-notes/lecture18.pdf
- 1
- 1
- 1
-
1
세상의모든계산기
TI nspire CX CAS Student Software 를 추천드리구요.
https://education.ti.com/en/software/details/en/B4F6E4EE05B94D75AAB4DFE24B2720AE/ti-nspirecxcas_pc_trial
오직 파일 전송 기능만 사용하실 때는 TI Comouter Link Software 도 가능합니다
(not compatible with CX II models)
https://education.ti.com/en/software/details/en/82035809F7E6474099944056CCB01C20/ti-nspire_computerlink - 1
- 2

세상의모든계산기 님의 최근 댓글
- claude AI는 l-c*r^2 을 1-c*r^2 으로 잘못 읽고 표시하고 있습니다. - TI-nspire CAS 계산기에 l-c*r^2 ≥0 을 조건에 추가해 계산해 보아도 결과는 바뀌지 않습니다. 2026 07.20 ⚠️ 경고가 바로 두 번째 방법이 "성공"한 이유와 정확히 연결되어 있습니다. 경고의 의미 "Domain of the result might be larger than the domain of the input"는 CAS가 절댓값(모듈러스)을 계산하는 과정에서 원래 식보다 정의역이 더 넓은 형태로 단순화했다는 뜻입니다. 구체적으로 이 계산은 내부적으로 대략 이런 과정을 거칩니다. $$\left|\frac{er}{e\cdot r}\right| = \sqrt{\left(\frac{er}{e\cdot r}\right)\cdot\overline{\left(\frac{er}{e\cdot r}\right)}}$$ 즉 원래 식(복소수)과 그 켤레복소수를 곱해서 실수부·허수부 제곱합을 만들고, 거기에 다시 제곱근을 씌우는 과정입니다. 이 과정에서 √(x²) → x 또는 √a·√b → √(ab) 같은 규칙들이 쓰이는데, 이런 규칙들은 x가 실수이고 0 이상일 때만 엄밀하게 성립합니다. CAS는 이 조건들을 일일이 다 추적하지 않고 넘어가면서, 원래는 (e≠0, r+l·ω·i ≠ 0 등) 복소수 특유의 좁은 정의역을 가진 식을, r, l, ω가 어떤 실수여도(부호 무관하게) 정의되는 1/√(r²+l²·ω²)라는 더 넓은 정의역의 식으로 바꿔버린 것입니다. CAS는 이 손실을 감지하고 경고를 띄운 것입니다. 이게 왜 조건 대입 성공과 연결되는가 정리하면, 이 경고는 사실상 이런 뜻입니다. "나는 이 결과를 만들면서 원래 식이 가지고 있던 정의역 제약 정보(부호 조건, i 관련 조건 등)를 이미 버렸다." 바로 이 "정의역 정보를 버린" 상태가 이후 con_1 대입을 매끄럽게 만드는 원인입니다. 첫 번째 시도에서는 i가 살아있는 원래 식에 조건을 대입했기 때문에, CAS가 √(1-c·r²)이 실수인지(정의역 조건: 1-c·r² ≥ 0) 계속 추적하려고 했고, 그 정보가 con에 없어서 더 이상 정리를 못 하고 멈췄습니다. 두 번째 시도에서는 절댓값 계산 단계에서 이미 그런 세밀한 정의역 추적을 CAS 스스로 포기(단순화)했기 때문에, 이후 ω에 무리식을 대입해도 "이게 실수가 맞나?" 하는 검증 절차 없이 그냥 대수적으로 치환·정리해 버립니다. 그래서 깔끔하게 √c/√l이 나온 겁니다. 한 줄 요약 절댓값 계산 시 뜬 "정의역이 넓어졌을 수 있다"는 경고는, CAS가 그 순간에 원래 식의 엄밀한 조건(정의역)을 놓쳤다는 신호이고, 바로 그 "조건을 놓친 상태"이기 때문에 뒤에 이어지는 조건식 대입이 막힘없이 진행된 것입니다. 다만 그 대가로, 결과인 1/√(r²+l²·ω²)이나 최종 √c/√l이 원래 회로 조건(i≠0이 되는 경계, 분모가 0이 되는 경우 등)에서는 엄밀히 성립하지 않을 수 있다는 점은 감안하셔야 합니다. 실제 물리적으로는 r, l, c > 0이고 결과도 물리적으로 타당한 형태라 문제없어 보이지만, 수학적 엄밀성 측면에서는 "정의역이 넓어진 근사적 결과"라는 꼬리표가 붙어있는 셈입니다. 2026 07.20 Claude AI 답변 TI-Nspire CAS의 | (such that / 조건대입) 연산자는 대입 시점의 수식 형태를 그대로 두고 기호만 치환하는 연산입니다. 대입 후에 처음부터 다시 "실수부/허수부 분리, 유리화" 같은 재간소화를 자동으로 수행하지 않습니다. 이 차이가 지금 보신 결과 차이의 핵심입니다. 첫 번째 경우 (|er/(e·r)| | con_1 and con → 실패) 이 시점의 식은 아직 r + l·ω·i 형태의 복소수 그대로입니다 (i가 살아있음). 여기에 con_1: ω = √(1-c·r²)/(√c·l)을 대입하면, 분모 안에 i · √(1-c·r²) 라는 항이 새로 생깁니다. 문제는 CAS가 √(1-c·r²)이 실수인지(즉 1-c·r² ≥ 0인지) 판단할 근거가 없다는 겁니다. 저장해 두신 con 조건은 c>0, l>0, r>0뿐이고, 1-c·r²≥0이라는 조건은 포함되어 있지 않습니다. 그래서 CAS는 i와 이 무리식을 더 정리(유리화, 실수부·허수부 재결합)하지 못하고 있는 그대로 남겨둡니다. 결과에 여전히 i가 보이는 이유입니다. 두 번째 경우 (결과값 1/√(r²+l²·ω²)에 대입 → 성공) |er/(e·r)| (절댓값/모듈러스) 연산은 그 자체로 이미 "복소수 → 실수" 변환을 완료한 결과입니다. 즉 1/√(r²+l²·ω²)에는 더 이상 i가 없고, 순수하게 r, l, ω로만 이루어진 실수식입니다. 이 식에 ω = con_1을 대입하는 것은 그냥 실수 대수식에 실수 대입하는 것이므로, i와 무리식이 뒤엉키는 문제 자체가 발생하지 않습니다. 그래서 바로 깔끔하게 √c/√l로 정리됩니다. 정리하면 절댓값(모듈러스) 계산은 "이 값들이 실수다"라는 가정을 이미 내부적으로 써서 i를 제거하는 연산입니다. 그 연산을 조건 대입 이전에 해두면, 이후 대입은 단순 실수 대입이라 문제없이 정리됩니다. 반대로 i가 남아있는 식에 무리식을 포함한 조건을 먼저 대입하면, 그 무리식의 실수성/부호에 대한 가정이 없어서 CAS가 i를 소거하는 재간소화를 못 하고 멈춰버립니다. 실용적 팁: 복소식에 조건을 대입해야 할 때는 가능하면 절댓값·실수화(유리화) 등을 먼저 끝내서 i를 없앤 뒤 조건을 대입하거나, 대입 후 결과에 다시 simplify/expand/combine 같은 명령을 한 번 더 걸어주면 (필요한 도메인 조건과 함께) 정리가 되는 경우가 많습니다. 2026 07.19 저도 어림잡아 추측할 뿐이지 정확한 이유를 알지는 못합니다. 질문하신 사진을 그대로 (Gemini 3.5 Flash / ChatGPT / Claude Sonnet 5) AI에 넣어 보니 claude AI 가 제일 합리적인 답변을 주어서 이를 붙여 넣습니다. 2026 07.19 아 그렇네요. 감사합니다. ^^ 2026 04.28