TI-84 Plus CE: Fitting Points to an Ellipse
Back to one of my favorite subjects: curve fitting.
The program ELLIPFIT attempts to fit a parametric curve for
a collection of points (x, y) to an ellipse using the following equations:
x = a * cos t + b
y = c * sin t + d
where the independent variable is t. The program also plots
the estimated line and the scatter plot.
I decided to keep the correlation (r^2) separate, so we can tell how
well the line fits both the x and y data.
The program uses the range of 0 ≤ t ≤ 2*π, where t is in radians.
The user is asked to provide two lists, x and y. The list of t values is determined by the
atan2, angle, or arg function of the complex number point x + y*i. The angle is adjusted to the range of [0, 2*π].
Quadrant I: x ≥ 0, y ≥ 0, angle(x + y*i)
Quadrant II: x < 0, y ≥ 0, angle(x + y*i)
Quadrant III: x < 0, y < 0, angle(x + y*i) + 2*π
Quadrant IV: x ≥ 0, y < 0, angle(x + y*i) + 2*π
TI-84 Plus CE Program ELLIPFIT
Notes:
L1: list 1, [ 2nd ] [ 1 ]; L2: list 2, [ 2nd ] [ 2 ],
etc. X1T, Y1T are from the [ vars ],
Y-VARS, Parametric submenu
[square] is from [2nd] [ y= ] (stat plot) , MARK submenu,
option 1
The complex variable i = √-1 is found by pressing [ 2nd
] [ . ].
Program:
"ELLIPTICAL
FIT"
"2017-08-31
EWS"
Param:Radian:a+bi
Input "X LIST:
",L2
Input "Y LIST:
",L3
FnOff
L2→L1
For(I,1,dim(L1))
angle(L2(I)+L3(I)*i)→T
If L3(I)<0
Then
T+2π→T
End
T→L1(I)
End
PlotsOff
cos(L1)→L4
LinReg(ax+b) L4,L2
a→A:b→B:r²→E
"Acos(T)+B"→X1T
ClrHome
Disp "X =
A*cos(T)+B"
Disp A
Disp B
Disp "CORR:
"
Pause E
sin(L1)→L4
LinReg(ax+b) L4,L3
a→C:b→D:r²→F
"Csin(T)+D"→Y1T
ClrHome
Disp "Y =
C*sin(T)+D"
Disp C
Disp D
Disp "CORR:
"
Pause F
FnOn 1
PlotsOn 1
GraphColor(1,RED)
Plot1(Scatter,L2,L3,[square],GREEN)
0→Tmin
2π→Tmax
ZoomStat
(Obviously use the colors and makers you like. If you are working with a monochrome
TI-83/TI-84, ignore the color commands.)
You can get a download here:
Example 1
A perfect circle:
X
|
Y
|
0
|
1
|
1
|
0
|
0
|
-1
|
-1
|
0
|
Results:
x = cos t (r^2 = 1)
y = sin t (r^2 = 1)
Example 2
X
|
Y
|
1.0
|
0.0
|
0.5
|
0.5
|
0.0
|
1.0
|
-0.5
|
0.5
|
-1.0
|
0.0
|
-0.5
|
-0.5
|
0.0
|
-1.0
|
0.5
|
-0.5
|
Results:
x = 0.8535533906 cos t (r^2
≈ 0.97140)
y = 0.8535533906 sin t (r^2 ≈ 0.97140)
Eddie
This blog is property of Edward Shore, 2017.