- TI nspire
[TI-nspire] 행렬의 입력 & 계산 - 확장 라이브러리 Matrix Library
1. 라이브러리 설명
행렬의 입력 및 계산을 도와주는 확장 라이브러리입니다.
Matrix pieces Arithmetic function & Cofactor Expansion Program TI-Nspire
By creeras
Ver 1.5 (2024-10-21)
---
Usage
Function_name(matrix1,matrix2,row_number,column_number)
: For overwrite(), add(), subtract(), multiply(), divide()
Dim(matrix1) have to be bigger than dim(matrix2), and have to put all matrix2 elements opon matrix1 elements to calculate it.
Function_name(matrix,row_number,column_number)
: For insert(), insertrow(), insertcol(), minor(), cofactor()
Function_name(matrix,r or c,index)
: For coex()
Function_name(matrix)
: For adjoint(), rank(), lunp()
Caution
Result of Function() is not stored to original matrix. So store it to original matrix variable or new matrix variable.
2. 함수 (및 프로그램) 설명
- add(matrix1,matrix2,row_number,column_number) : 행렬을 일부분만 더함
ㄴ mat_big 행렬에 mat_small을 더함. 4행 2열 ~ 5행 3열 부분만
subtract(matrix1,matrix2,row_number,column_number) : 행렬을 일부분만 뺌
multiply(matrix1,matrix2,row_number,column_number) : 행렬을 일부분만 곱함
divide(matrix1,matrix2,row_number,column_number) : 행렬을 일부분만 나눔 - overwrite(matrix1,matrix2,row_number,column_number) : 행렬을 일부분만 덮어쓰기 ; 기존 값은 무시되고, 새로운 함수의 값이 덧쓰입니다.
- insert(matrix,row_number,column_number) : 행 또는 열을 추가합니다. (0으로 채워져 있음)
delete(matrix,row_number,column_number) : 행 또는 열을 삭제합니다(=소행렬)
- Insertrow(matrix,row_number,column_number) : 1행(만)의 이동.
ㄴ 나머지 행들간의 순서변화 없음.
ㄴ 내장함수 rowSwap( )은 2행 사이의 위치 교환
Insertcol(matrix,row_number,column_number) : 1열(만)의 이동. (나머지 열들간의 순서변화 없음.)
- minor(matrix,row_number,column_number) : "소행렬식", 부호를 고려하지 않은 소행렬의 행렬식. \( M_{ij} \)
cofactor(matrix,row_number,column_number) : 여인자, 부호를 고려한 소행렬식. \( C_{ij} = (-1)^{i+j} M_{ij} \)
adjoint() : 딸림행렬 = 수반행렬 - lunp() : permutation 없이 LU 분해하는 프로그램. // v1.4에서 추가됨. (다른 것들은 다 함수인데, 이것은 프로그램입니다)
https://allcalc.org/9593#comment_49292 - coex(matrix,r or c,index) : 여인자 전개 // v1.5 에서 수정됨.
3. 사용 방법
3-1. 라이브러리를 다운로드 : matrix.tns
3-2. TI-nspire의 MyLib 폴더에 옮겨 넣고
3-3. refresh Library : 【Doc】 【6】 상세 설명은 다음 링크 확인 https://allcalc.org/35636
사용하시면 됩니다.
4. 동영상 설명
5. 업데이트 내역
V1.31 (2015-11-22)
근사(approx)계산시 rank 오류 해결
V1.40 (2024-10-07)
lunp() 추가 // permutation 없이 LU 분해함.
V1.50 (2024-10-21)
coex() 수정 // 기존에 열선택할 수 없던 문제, 그리고 step-by-step 확인하지 못하던 문제 해결
댓글12
- 1
- 1
- 2
- 1
- 1
- 2
-
세상의모든계산기
여인자 전개 프로그램 수정 V1.5
Define LibPub coex(mat1,choice,index)= Func :© coex(matrix,r or c,index) :© Initialize :Local mat1_dim,i,j,co.result,minormat,sgn :dim(mat1)→mat1_dim :newMat(mat1_dim[1],2)→co.result : :©Main Body :Disp "Cofactor Expansion =" : :If string(choice)="r" Then : If 1≤index≤mat1_dim[1] Then : For j,1,mat1_dim[2] :[mat1[index,j],cofactor(mat1,index,j)]→co.result[j] : minormat:=delete(mat1,index,j) : sgn:=(−1)^(index+j) : If j=1 Then : If sgn=1 Then : Disp string(mat1[index,j])&"×det(",minormat,")" : Disp "(("&string(mat1[index,j])&")×("&string(minor(mat1,index,j))&"))" : Else : Disp "-("&string(mat1[index,j])&")×det(",minormat,")" : Disp "-"&"(("&string(mat1[index,j])&")×("&string(minor(mat1,index,j))&"))" : EndIf : Else : Disp "----------" : If sgn=1 Then : Disp "+("&string(mat1[index,j])&")×det(",minormat,")" : Disp "+"&"(("&string(mat1[index,j])&")×("&string(minor(mat1,index,j))&"))" : Else : Disp "-("&string(mat1[index,j])&")×det(",minormat,")" : Disp "-"&"(("&string(mat1[index,j])&")×("&string(minor(mat1,index,j))&"))" : EndIf : EndIf : EndFor : Else : Disp "Invalid Row Index" : EndIf : :ElseIf string(choice)="c" Then : If 1≤index≤mat1_dim[2] Then : For i,1,mat1_dim[1] :[mat1[i,index],cofactor(mat1,i,index)]→co.result[i] : minormat:=delete(mat1,i,index) : sgn:=(−1)^(index+i) : : If i=1 Then : If sgn=1 Then : Disp string(mat1[index,i])&"×det(",minormat,")" : Disp "(("&string(mat1[i,index])&")×("&string(minor(mat1,i,index))&"))" : Else : Disp "-("&string(mat1[index,i])&")×det(",minormat,")" : Disp "-"&"(("&string(mat1[index,i])&")×("&string(minor(mat1,index,i))&"))" : EndIf : : Else : Disp "----------" : If sgn=1 Then : Disp "+("&string(mat1[index,i])&")×det(",minormat,")" : Disp "+"&"(("&string(mat1[index,i])&")×("&string(minor(mat1,index,i))&"))" : Else : Disp "-("&string(mat1[index,i])&")×det(",minormat,")" : Disp "-"&"(("&string(mat1[index,i])&")×("&string(minor(mat1,index,i))&"))" : EndIf : : EndIf : EndFor : Else : Disp "Invalid Column Index" : EndIf :Else : Disp "Invalid Choice : Input ""r"" or ""c"" for 2nd argument" :EndIf : :© Finalize :Return det(mat1) :EndFunc
사용 예시
세상의모든계산기 님의 최근 댓글
4*4 행렬 계산이 가능한 fx-570EX 이후 계산기는 행렬 기능을 이용하는 방법도 있지만, 본문 방법이 더 편리한 것 같습니다. [fx-570 EX] 복소수 1차 연립방정식 해 구하기 (feat. MATRIX) https://allcalc.org/21582 2025 10.15 고장남 - POST 진입 실패, 모니터 안나옴 직접 사용할 일이 없어져서, 고향집에 가져다 놓고 어댑터만 꼽아 두었습니다. 마지막으로 켠 것은 25년 6월쯤이 아니었을까 싶습니다. (이상증상은 없었구요) 이번 추석에 가서 켜 보니까, 화면이 아예 안나오더라구요. 집에 가져와서 분해해 살펴보니까 - 어댑터 12V는 정상 - 어댑터 꼽으면 바로 POWER 는 켜집니다. ㄴ POWER ON -> Fan 돌아감 + 파워 LED 들어옴 + NVME에 LED 들어옴 ㄴ HDMI 1, 2 신호 전혀 안들어옴 (모니터 2대 확인) ㄴ 키보드에 LED 안들어옴 (USB 5V 가 안들어오는 듯 함) - 옆구리 버튼은 작동하지 않습니다. 길게 눌러도 꺼지지 않음. 하나씩 제거하면서 변수를 제거해 봤는데, 뭘 해도 상태가 똑같습니다. 보드쪽에 문제가 생긴 것 같습니다. 2025 10.14 다항식 나눗셈 (가장 정석적인 방법) (피제수, 나뉠 식) r1*r3 를 (제수, 나누는 식) r1+r3 로 직접 나누며, 여기서 r1을 변수로 취급합니다. 1. 몫 구하기: r1*r3 (나뉠 식)의 최고차항을 r1+r3 (나누는 식)의 최고차항 r1로 나눕니다. (r1*r3) / r1 = r3 <-- 이것이 몫(Quotient)이 됩니다. 2. 나머지 구하기: (원래 분자) - (몫 × 분모) 를 계산합니다. (r1*r3) - (r3 × (r1+r3)) = r1*r3 - (r1*r3 + r3^2) = -r3^2 <-- 이것이 나머지(Remainder)가 됩니다. 3. 결과 조합: 최종 결과는 `몫 + (나머지 / 나누는 식)` 형태로 씁니다. r3 + (-r3^2 / (r1+r3)) \[ \begin{array}{l} \phantom{r_1+r_3 \overline{) r_1 r_3}} r_3 \\ r_1+r_3 \overline{) \begin{array}[t]{@{}r@{}} r_1 r_3 \phantom{+r_3^2} \\ - (r_1 r_3 + r_3^2) \\ \hline -r_3^2 \\ \end{array}} \end{array} \] 2025 10.14 부분적 과정으로 분자(변수의 곱)를 다른 변수로 치환할 수 있다면 (r1*r3=a, r2*r4=b) 다항식에서도 강제 나눗셈 과정을 막을 수 있겠습니다만, 원래의 식에 적용시킬 수는 없어 의미가 없겠습니다. 2025 10.14 (r1*r3) / (r1+r3) 에서 원래라면 분자(r1*r3)에서 하나의 변수를 선택하여 그것을 기준으로 분모를 나누고 몫과 나머지로 분리하여 표현하는 것이 기본 원칙입니다만, 결과가 단항인 분수식일 경우 분자가 두 변수의 곱으로 표현되더라도 그것이 더 간단한 표현인 것으로 보고 그대로 두는 듯 합니다. 하지만 마지막 예시에서 보이는 것처럼 +1만 붙는 간단한 형식일지라도 다항식이 되는 순간 원래의 기본 원칙대로 대수의 나눗셈(r1*r3를 (r1+r3)로 나눔)이 강제 진행되어버리고 이를 막을 수 없는 듯 합니다. 2025 10.14