- TI nspire
[TI-nspire] Fourier Transform Library 푸리에 변환 라이브러리 (ported from TI-92)
오리지널(TI-92/89) 라이브러리
https://allcalc.org/52455
Author: Lars Frederiksen
E-mail: LTF@POST8.TELE.DKPS. Please do not ask for more programs.
포팅 -
진행중
아무리 찾아봐도 TI-nspire 용 fourier transform 라이브러리(프로그램)이 없고,
TI-92/89 용으로는 단 하나 찾아지긴 했는데, 포팅하려고 보니 코드가 단순하지가 않네요.
진행 완료
- fourier() 함수 - libpub
- fouriersub() 함수
- ifourier() 함수 - libpub
- eval() 함수 - libpub
- phi() 함수 // 원본은 pi() 인데, 제한이 있어 변경함
- lambda() 함수
미진행
- Help Program
- Plot program
- Menu Program
프로그램 내부에서 변화된 내용
프로그램 구조가 바뀌지는 않았구요.
일부 변수명이 바뀌는 수준의 자잘한 변화가 있습니다.
1. Γ 를 변수명으로 사용시 소문자로 강제변환되기 때문에,
소문자 γ 를 쓸까하다가
대체문자 capital F, Fisher ideal index 를 사용하였습니다.
그런데, 단순히 변수문자로만 사용되는 것이 아니고, 코드 중간에 결합되어 쓰이는 부분도 있어서, 어떻게 해야 맞는 건지 감이 오지 않습니다.
ㄴ 다만, 이 코드는 Label test2 에 있는거라서 영향이 없는 건지도?
2. Δ 삼각형 심볼(increment or triangle)은 문자변수명에 사용할 수 없어서,
inc 라는 문자로 대체하였습니다.
3. TI-92에서는 대문자였던 변수는 그냥 소문자로 변하도록 자연스럽게 놔뒀습니다.
4. 그 외에는 최대한 원본과 동일한 모양을 유지하도록 하였습니다.
사용방법
1. tns 파일을 라이브러리에 넣고 ⇒ refresh 해줍니다.
※ 파일 다운로드는 본문 하단의 attatched file+ 에 있습니다.
2. fourier(함수,변수,결과형식타입) 으로 입력합니다.
3. 결과 형식 타입(모드)
├ 1 : 각속도 w 도메인. (exp(i*w) 형식이 cos(w)+i*sin(w)) 로 표시됩니다.
├ 2(추천) : 각속도 w 도메인. 복소수 기호 'i' 이, 알파벳 'i' 로 대신 표시됩니다. sin/cos 대신 지수형식으로 표시됩니다.
├ 3 : 주파수 f 도메인.
└ 4 : 주파수 f 도메인. 복소수 기호 'i' 이, 알파벳 'i' 로 대신 표시됩니다.
※ 일단 2로 해보고, 잘 안되거나, 맘에 안들면 1로 바꿔 보세요.
4. 특수 함수
- 유닛스텝함수 u() 는 알파벳 u 를 입력
- 델타함수는 카탈로그 - 특수문자 δ 를 입력
- signum() 은 알파벳으로 전체 입력
- 사각함수 rect(t/τ) 는 u(t+τ/2)-u(t-τ/2) 로 변환하여 입력 : 댓글 이미지 참고
※ 각각의 특수함수들은 문자로서 표시될 뿐, 함수로서 기능 하지는 않습니다.
댓글6
-
세상의모든계산기
예제2 : https://blog.naver.com/songsite123/222940646211
되는 것 (대충이라도 되는 것 포함)
-
1
세상의모든계산기
안되는 예제
- 절대값 입력시 변환 실패
- 변수(a, u 등)에 다른 값이 저장되어 있을 경우 오류 발생 가능. delvar 필요함.
-
세상의모든계산기
예제3 : https://www.fmkorea.com/2952857872
답변 : https://www.fmkorea.com/2953144342
-
1
세상의모든계산기
되는 것
* u 변수를 할당하면 fourier()에서 에러가 나기 때문에, 그래프로 그려서 확인하기 위해 h(x) 를 다시 정의하였습니다. (fourier 변환에 필수요소는 아닙니다)
* w를 w_로 바꾸면 위의 풀이 결과와 제일 비슷하게 정리되어서 대체하였습니다. 필요에 따라 바꾸셔도 되고, 안바꾸셔도 됩니다.
* 결과 모드를 1로 할지, 2로 하고 i=@i 로 바꿀지는 알아서 판단해 보시기를...
x=1 에서 y축 방향으로 0.5~1 사이에만 수직으로 직선이 표시되는데, 왜 표시되는지 모르겠습니다.
0~1 구간 전부 표시되면 더 좋겠지만, '아예 안보여도 할 말 없는데, 보이는 거니까" 이거라도 감지덕지겠지요. -
1
세상의모든계산기
안되는 것
* 절대값이 들어가면 무한루프에 빠지는 것 같습니다.
* 절대값을 풀어서 두 구간으로 나눈 다음에 더하면 되겠죠? 아마도???
-
세상의모든계산기
ifourier
fourier() 만큼 복잡할 것으로 예상했는데,
예상과 달리 fouriersub() 를 활용해서 간단하게 처리하네요.
프로그램 설명 예제에는 (마지막 예시가) t 로 나와 있고, 결과가 sin(5t)/pi 로 되어 있지만, w로 바꿔야 에러가 나지 않고, 결과도 cos(5t)/pi 로 나옴.
세상의모든계산기 님의 최근 댓글
낮에 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