To estimate the unknown parameters θ, M, and X in the given parametric curve:
[ x = \left(t*\cos(\theta) - e^{M|t|}\sin(0.3t)\sin(\theta) + X\right) ] [ y = \left(42 + t*\sin(\theta) + e^{M|t|}\sin(0.3t)\cos(\theta)\right) ]
using the provided dataset of points (x, y) for ( 6 < t < 60 ).
Dataset provided as: xy_data.csv
| Variable | Range |
|---|---|
| ( 0° < \theta < 50° ) | ( -0.05 < M < 0.05 ) |
| ( 6 < t < 60 ) |
-
Model Definition
Defined a Python function for (x(t)) and (y(t)) based on given parametric equations. -
Parameter Initialization
Started with random guesses for θ, M, and X within the allowed ranges. -
Optimization
Used SciPy’sminimize(L-BFGS-B) algorithm to minimize the L1 distance between the predicted and observed points. -
Evaluation
Compared the fitted curve against actual data points using Matplotlib visualization.
| Parameter | Symbol | Optimal Value |
|---|---|---|
| Angle | ( \theta ) | 28.1275° |
| Exponential Coeff | ( M ) | 0.02133 |
| Offset | ( X ) | 54.901 |
[ \left(t*\cos(0.491) - e^{0.02133|t|}\sin(0.3t)\sin(0.491) + 54.901,\ 42 + t*\sin(0.491) + e^{0.02133|t|}\sin(0.3t)\cos(0.491)\right) ]
You can view the curve directly here:
Desmos Link
Paste the equation and set value of t (6<t<60)
The full implementation (data loading, visualization, optimization, and plotting) is available in
curve_fitting.ipynb.
- Python 3.x
- NumPy
- Pandas
- Matplotlib
- SciPy
Siddharth B — Research and Development / AI Assignment (Curve Parameter Estimation)