- TI 89
[TI-92][TI-89] Fourier Transform Library
오리지널 출처는 모르겠구요. 이곳에서 발견했습니다.
https://helpcalculator.forumfree.it/?t=7760484
파일 다운로드 : https://digilander.libero.it/fpirozzi/fourier.zip
Readme.txt
fourier
-------
Fourier version 3.20 for TI-92/TI-92II and TI-89/TI-92+
This packet contains functions to perform Fourier-/inverse Fourier-
transformation. A function, which can rewrite the output of Fourier/
iFourie to a form that, can be evaluated numerical. A function to
graph the output.
Keep the functions together in a separate folder with the name
"FOURIER" and do not create any variable in it.
Before using iFourier or Fourier set TI-92 MODE
Complex Format to RECTANGULAR
Angle to RADIAN
Exact/Approx to AUTO
You have to do these settings yourself because; the functions cannot
change the mode setting on the calculator.
The package include following programs/functions:
Help online help to programs.
Fourier Fourier transformation
iFourier inverse Fourier transformation
Plot graph expression
eval evaluate expression
Menu custom menu
Other files in the package are all sub functions or data for above functions.
--------------------- Archiving on TI-89 and TI-92+ -------------------------
All variables can be archived on the TI-89 and TI-92+. Functions and programs can also be archived, but first after they have been used one time each. If
the programs have not been run before archiving, the calculator has to
compile them each time they are used, this will slow down the execution time
of the programs.
Before archiving the programs execute following commands from the command
line in the "fourier" folder:
Help() and press 'x'
ifourier(1/w,w)
fourier(1,t)
eval(1)
plot(1,t,0)
---------------------------------------------------------------------
Help
This program will give online information about and demonstrate the
use of functions in this package. When you do not need this program
any longer just delete it and the data file "hlp".
Syntax: Help()
---------------------------------------------------------------------
Function: Fourier(f(var), var ,mode)
Transforms the expression "f(var)" from time domain to frequency domain (Fourier). This function has the ability in the most occasions to perform symbolical transformations, but not in all. It depends on the type of transform.
f(var): can be any expression, which have a Fourier transform.
var : is the name of the variable to transform normally 't', but can be any name.
mode : decide the format of the result.
Mode can be 1 or 2.
In mode 1 the result will be in Ti-92's complex format (exp(i*w) will be rewritten to cos(w)+i*sin(w)). Mode 2 is a special format, where the calculators complex 'i' will be replaced with the letter 'i'.
The results in mode 2 will be exponential functions instead of sine and cosine. The letter 'i' in the results of Fourier is the same as the complex 'i' and can always be replaced with it.
The letter 'i' and 'complex i' will be interpreted as equal.
The expression may contain constants of any kind except constants
containing the letter 's'.
Special transforms:
Unit step function (Heaviside function):
Definition: u(t-a) = 1 for t>=a else 0
Fourier(u(t - a),t,2) = pi*'Delta'(w)-i*exp(-a*i*w)/w
Dirac delta function:
Definition: 'delta'(t - a) = 1 for t=a else 0
fourier('delta'(t - a),t,2) = exp(-a*i*w)
You can get 'delta' by pressing 'green diamond' + G + D on TI-92.
signum function:
Definition: signum(t-a) = 1 for t>=a else -1
Fourier(signum(t - a),t,2) = -i*2*exp(-a*i*w)/w
Some examples:
Fourier(cos(5*t),t,1) = pi*'delta'(w-5)+pi*'delta'(w+5)
Fourier(cos(5*t)*u(t),t,1) =
i*(-1/2*(w+5))-1/(2*(w-5))+pi*'delta'(w-5)+pi*'delta'(w+5)
Fourier(1/(t-i),t,2) = 2*pi*i*exp(w)*u(-w)
---------------------------------------------------------------------
Function: iFourier(F(var), var ,mode)
Transforms the expression "F(var)" from frequency domain to time domain
(inverse Fourier).
F(var): can be any expression, which have an inverse Fourier transform.
var : is the name of the variable to transform normally 'w', but can
be any name. This function has the ability in the most occasions to
perform symbolical transformations, but not in all. It depends on the
type of transform.
mode : decide the format of the result. Mode can be 1 or 2. In mode 1
the result will be in Ti-92's complex format (exp(i*w) will be rewritten
to cos(w)+i*sin(w)). Mode 2 is a special format, where the calculators
complex 'i' will be replaced with the letter 'i'. The results in mode 2
will be exponential functions instead of sine and cosine. The letter 'i'
in the results of iFourier is the same as the complex 'i' and can always
be replaced with it.
The letter 'i' and 'complex i' will be interpreted as equal.
The expression may contain constants of any kind except constants containing the letter 's'.
Special transforms:
Unit step function (Heaviside function):
Definition: u(w-a) = 1 for w>=a else 0
iFourier(u(w - a),w,2) = 'Delta'(-t)/2+i*exp(a*i*t)/(2*pi*t)
Dirac delta function:
Definition: 'delta'(w - a) = 1 for w=a else 0
Fourier('delta'(w - a),w,2) = exp(a*i*t)/(2*pi)
You can get 'delta' by pressing 'green diamond' + G + D on TI-92.
signum function:
Definition: signum(w - a) = 1 for w>=a else -1
Fourier(signum(w - a),w,2) = i*exp(a*i*t)/(pi*t)
Some examples:
iFourier(u(w+1)-u(w-1),w,1) = sin(t)/(pi*t)
iFourier(1/(w+1)^2,w,2) = 2*t*exp(-i*t)*(2*u(-t)-1)
iFourier('delta'(w+5)+'delta'(w-5),t,1) = sin(5*t)/pi
---------------------------------------------------------------------
Function: eval(f(var))
f(var) any function containing Heaviside, dirac delta or signum
This function will replace u(var), 'delta'(var), signum(var) with a
equivalent when-functions. The letter 'i' will be replaced with the
'complex i'.
Example: eval(u(t-a))=when(t-a>=0, 1,0)
To get a numerical result out of a function containing special
functions
eval(f(var))|var=value
---------------------------------------------------------------------
Program: Plot(f(var),var,type)
This program will graph functions containing Heaviside, dirac delta or
signum. It will not change the setting of the calculator and it is
therefore up to you to manage the window settings.
f(var) any function containing Heaviside, dirac delta or signum
var variable to plot
type=0 plot the function f(var)
type=1 plot the amplitude abs(f(var))
type=2 plot phase angle(f(var))
Example:
Plot(u(t)-u(t-4),t,0) plots a pulse
Example:
Plot the amplitude of a complex function
plot(f(war),var,1)
Plot the phase
plot(f(war),war,2)
---------------------------------------------------------------------
Author: Lars Frederiksen
E-mail: LTF@POST8.TELE.DK
PS. Please do not ask for more programs.
댓글8
-
-
세상의모든계산기
주요 함수들과 그들의 역할
1. fourier(α,β,β1) - 메인 함수
- 모드 체크를 수행합니다 (Exact/Approx, Complex Format, Angle)
- β1 값에 따라 다른 변환 방식을 선택합니다:
- β1=1 or 2: 일반적인 푸리에 변환
- β1=3 or 4: 주파수 도메인(2πf) 변환2. fourisub(α, ββ, β1, β2, β3, βi) - 실제 변환 연산
- 복소수 형태의 푸리에 변환을 계산합니다
- 주요 처리 과정:
- 입력 함수를 파싱하여 항들을 분리
- 각 항에 대해 적분 계산
- 델타 함수(δ), 단위계단 함수(u), 부호 함수(signum) 등의 특수 함수 처리3. eval(x) - 수식 평가 함수
- 특수 함수들을 계산 가능한 형태로 변환:
- u(x) → when(x>=0,1,0)
- δ(x) → when(x=0,1,0)
- signum(x) → when(x>=0,1,-1) -
세상의모든계산기
예시) x(t) = e^(-at)u(t) 처리 과정

1. 함수 입력 형태와 초기 처리:
# 입력 함수 형태
α = "e^(-a*s)*u(s)" # 여기서 s는 시간 변수# eval 함수에서 단위계단 함수 변환
# "u(s)" → "when(s>=0,1,0)"
inString(α, "u(")→αa # u( 위치 찾기
read(α, αa+1,")*+-/")→αb # 인자 추출 (여기서는 's')
# 변환 결과: "e^(-a*s)*when(s>=0,1,0)"2. fourier 함수에서의 처리:
fourier(α,β,β1)
# β는 변환 파라미터
# β1은 변환 타입 (1 또는 2: 기본 푸리에 변환)# fourisub 호출
fourier\fourisub(α, β, w, w, 0, @i)→α
3. fourisub 함수에서의 주요 변환 과정:
# 1) 입력 함수 파싱
expr(αa)→αk # 수식을 파싱하여 계산 가능한 형태로 변환
getDenom(αk)→βλ # 분모 추출
getNum(αk)→βf # 분자 추출# 2) 지수함수 처리
# e^(-a*s) 부분 처리
inString(αa,"@e^",αj)→αj # 지수함수 위치 찾기
read(αa, αj,"÷−)*/")→αi # 지수 부분 추출# 3) 기본 변환쌍에 대입해 변환
# timeδ 함수와 time 함수가 실제 변환을 처리합니다
timeδ(βρ,β1,β2,β4)→αf # βρ에는 변환할 항의 정보가 담겨있습니다
# 변환 결과들은 누적됩니다
βa+αf/βλ→βa # 부분 결과들의 합산
# 특별한 경우(poles가 있는 경우) 처리
If dim(βγ)>0 Then
# βγ는 극점들의 배열
# 각 극점에 대해 처리하는 루프
For βς,1,dim(βγ)-1
Φα*(s-#("Γ"&char(ord("a")+βς)))→Φα
EndFor
# 4) 결과 조합
β3*(βa+Φw)|i^2=-1→Φw # 최종 결과 생성
수학적 계산 흐름:
1. x(t) = e^(-at)u(t)가 입력됨
2. u(t)가 when(t>=0,1,0)로 변환됨
3. 푸리에 변환 적분 적용:
X(ω) = ∫[e^(-at)u(t)e^(-jωt)]dt
4. u(t)의 특성으로 인해 적분 구간이 0에서 ∞로 변경됨
5. 적분 계산:
X(ω) = ∫[e^((-a-jω)t)]dt, from 0 to ∞
6. 적분 결과:
X(ω) = 1/(a + jω)이 과정이 코드에서 자동으로 처리되며, 특히 주목할 점은:
- 특수함수(여기서는 u(t))의 자동 변환
- 복소수 처리 (i^2=-1 조건 사용)
- 지수함수의 적분 처리
- 최종 결과의 표준화된 형태 제공이는 단순한 예시지만, 코드는 더 복잡한 함수들(예: 델타 함수, 부호 함수 등을 포함하는 함수들)도 처리할 수 있도록 설계되어 있습니다.
-
-
세상의모든계산기
function - fouriersub()
클릭해 프로그램(png) 보기 - 스크롤 주의
details

-



세상의모든계산기 님의 최근 댓글
HP-39gII 에 ExistOS 설치하기 https://allcalc.org/38526 2025 11.07 1. 왜 검은색이 아닌 다른 색으로 보일까? (제공된 LUT 필터) 제가 제공해 드린 magenta_lens.cube LUT 필터는 540~560nm(녹색-노란색) 파장대의 색상을 '완전히 제거(검은색으로 만듦)'하는 대신, '다른 색상으로 왜곡/변환'하도록 설계되었습니다. * 원리: LUT(Look-Up Table)는 특정 입력 색상(Input RGB)을 미리 정해진 다른 출력 색상(Output RGB)으로 매핑하는 테이블입니다. 이 LUT는 540~560nm에 해당하는 RGB 값들이 들어오면, 검은색(0, 0, 0)이 아닌, 매우 어둡거나 채도가 낮은 특정 색(예: 어두운 올리브색, 갈색 등)으로 변환하라고 지시합니다. * 의도: * 현실적인 물리 필터 시뮬레이션: 실제 고가의 색약 보정 안경도 특정 파장을 100% 완벽하게 차단하지는 못합니다. 빛의 일부를 흡수하고 일부는 통과시키거나 변환하는데, 이 LUT는 그러한 현실 세계의 필터 효과를 더 비슷하게 흉내 냈을 수 있습니다. * 시각적 정보 유지: 특정 색을 완전히 검게 만들면 그 부분의 형태나 질감 정보가 완전히 사라집니다. 하지만 다른 어두운 색으로 대체하면, 색상 정보는 왜곡되더라도 밝기나 형태 정보는 어느 정도 유지되어 전체적인 이미지가 덜 어색하게 보일 수 있습니다. 결론적으로, 스펙트럼 그림에서 해당 대역의 색이 갑자기 '다른 색으로 툭 바뀌는' 현상은, LUT 필터가 "이 파장대의 색은 앞으로 이 색으로 표시해!"라고 강제적으로 지시한 결과이며, 이것이 바로 이 필터가 작동하는 방식 그 자체입니다. 2. 왜 'Color Vision Helper' 앱은 검은색으로 보일까? 비교하신 'Color Vision Helper' 앱은 노치 필터의 원리를 더 이상적(Ideal)이고 교과서적으로 구현했을 가능성이 높습니다. * 원리: "L-콘과 M-콘의 신호가 겹치는 540~560nm 파장의 빛은 '완전히 차단'되어야 한다"는 개념에 매우 충실한 방식입니다. * 구현: 따라서 해당 파장에 해당하는 색상 정보가 들어오면, 어떠한 타협도 없이 그냥 '검은색(RGB 0, 0, 0)'으로 처리해 버립니다. 이는 "이 파장의 빛은 존재하지 않는 것으로 처리하겠다"는 가장 강력하고 직접적인 표현입니다. 2025 11.06 적용사례 4 - 파장 스펙트럼 https://news.samsungdisplay.com/26683 ㄴ (좌) 연속되는 그라데이션 ➡️ (우) 540 이하 | 구분되는 층(색) | 560 이상 - 겹치는 부분, 즉 540~560 nm 에서 색상이 차단? 변형? 된 것을 확인할 수 있음. 그럼 폰에서 Color Vision Helper 앱으로 보면? ㄴ 540~560 nm 대역이 검은 띠로 표시됨. 완전 차단됨을 의미 2025 11.05 빨간 셀로판지로도 이시하라 테스트 같은 숫자 구분에서는 유사한 효과를 낼 수 있다고 합니다. 색상이 다양하다면 빨강이나, 노랑, 주황 등도 테스트해보면 재밌겠네요. 2025 11.05 안드로이드 앱 - "Color Vision Helper" 다운받아 본문 내용을 카메라로 찍어 보니, 본문 프로그램에서는 애매하게 보이던 부분에서도 구분이 완전 확실하게 되네요. 숫자 구분 능력 & 편의성 면에서 압도적이라고 할 수 있겠습니다. 2025 11.05