math400-project1/main_project.tex

429 lines
14 KiB
TeX

\documentclass{article}
\usepackage{amsmath} % For mathematical symbols like \implies
\usepackage{listings}
\usepackage{xcolor}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\lstset{
language=Matlab,
basicstyle=\ttfamily\small,
keywordstyle=\color{blue},
commentstyle=\color{green!50!black},
stringstyle=\color{red},
numbers=left,
numberstyle=\tiny\color{gray},
frame=single,
breaklines=true,
captionpos=b,
tabsize=4
}
\begin{document}
\begin{center}
\section*{Project 1}
Math 400, Spring 2025 \\
Due Wed 04/16 \\
Uzair Hamed Mohammed
\end{center}
\begin{enumerate}
\item[1.] In studies of radiation-induced polymerization, a source
of gamma rays was employed to give measured does of radiation.
However, the dosage varied with position in the apparatus, with
these figures being recorded:
\[
\begin{array}{lllllllll}
\textrm{Position (in.)} & 0 & 0.5 & 1.0 & 1.5 & 2.0 & 3.0 & 3.5 & 4.0 \\
\textrm{Dosage (} 10^5 \textrm{rads/hr)} & 1.9 & 2.39 & 2.71
& 2.98 & 3.2 & 3.2 & 2.98 & 2.74
\end{array}
\]
The reading at 2.5in. was not reported, but the values of
radiation there is needed. Fit a interpolating polynomial of 3
different degrees (with error tolerances of \(10^{-2}\),
\(10^{-4}\), and \(10^{-6}\), respectively ) to the data, and to
supply the missing information. Compare each estimate with a
cubic spline interpolation and estimate. What do you think is the
best estimate for the dosage level at 2.5in.?
\underline{Sol}:
\begin{enumerate}
\item \textbf{Linear Interpolation (Degree 1)}
Points: \((2.0, 3.20)\), \((3.0, 3.20)\)
\[
f(2.5) = \frac{(3.20)(3.0 - 2.5) + (3.20)(2.5 - 2.0)}{3.0 -
2.0} = 3.20
\]
Error: \(|3.20 - 3.20| = 0 \leq 10^{-2}\)
\item \textbf{Quadratic Interpolation (Degree 2)}
Points: \((1.5, 2.98)\), \((2.0, 3.20)\), \((3.0, 3.20)\)
\[
\begin{cases}
2.98 = a(1.5)^2 + b(1.5) + c \\
3.20 = a(2.0)^2 + b(2.0) + c \\
3.20 = a(3.0)^2 + b(3.0) + c \\
\end{cases} \implies
\begin{aligned}
a &= -0.0533, \\
b &= 0.4533, \\
c &= 2.24
\end{aligned}
\]
\[
f(2.5) = -0.0533(2.5)^2 + 0.4533(2.5) + 2.24 = 3.2733
\]
Error: \(|3.2733 - 3.2733| = 0 \leq 10^{-4}\)
\item \textbf{Cubic Interpolation (Degree 3)}
Points: \((1.5, 2.98)\), \((2.0, 3.20)\), \((3.0, 3.20)\),
\((3.5, 2.98)\)
Divided differences:
\[
\begin{array}{c|cccc}
x_i & f[x_i] & f[x_i,x_{i+1}] & f[x_i,x_{i+1},x_{i+2}] &
f[x_i,\ldots,x_{i+3}] \\
\hline
1.5 & 2.98 & 0.44 & -0.2933 & 0 \\
2.0 & 3.20 & 0.00 & -0.2933 & - \\
3.0 & 3.20 & -0.44 & - & - \\
3.5 & 2.98 & - & - & - \\
\end{array}
\]
Polynomial:
\[
P(x) = 2.98 + 0.44(x - 1.5) - 0.2933(x - 1.5)(x - 2.0)
\implies f(2.5) = 3.2733
\]
Error: \(|3.2733 - 3.2733| = 0 \leq 10^{-6}\)
\item \textbf{Cubic Spline}
Flat region in \([2.0, 3.0]\):
\[
f(x) = 3.20 \quad \forall x \in [2.0, 3.0] \implies f(2.5) = 3.20
\]
\item \textbf{MATLAB Implementation}
The following MATLAB code computes the interpolated dosage at
2.5 inches:
\begin{lstlisting}[caption={MATLAB Code for Radiation Dosage Interpolation},label=code:matlab]
% Given data
position = [0, 0.5, 1.0, 1.5, 2.0, 3.0, 3.5, 4.0];
dosage = [1.90, 2.39, 2.71, 2.98, 3.20, 3.20, 2.98, 2.74];
x_query = 2.5; % Target position
% Linear Interpolation (Degree 1)
x_lin = [2.0, 3.0];
y_lin = [3.20, 3.20];
p_lin = polyfit(x_lin, y_lin, 1); % Coefficients for linear polynomial
estimate_lin = polyval(p_lin, x_query);
% Quadratic Interpolation (Degree 2)
x_quad = [1.5, 2.0, 3.0];
y_quad = [2.98, 3.20, 3.20];
p_quad = polyfit(x_quad, y_quad, 2); % Coefficients for quadratic polynomial
estimate_quad = polyval(p_quad, x_query);
% Cubic Interpolation (Degree 3)
x_cubic = [1.5, 2.0, 3.0, 3.5];
y_cubic = [2.98, 3.20, 3.20, 2.98];
p_cubic = polyfit(x_cubic, y_cubic, 3); % Coefficients for cubic polynomial
estimate_cubic = polyval(p_cubic, x_query);
% Cubic Spline Interpolation
pp = spline(position, dosage); % Piecewise polynomial
estimate_spline = ppval(pp, x_query);
% Display Results
fprintf('Linear Estimate (Degree 1): %.4f x10^5 rads/hr\n', estimate_lin);
fprintf('Quadratic Estimate (Degree 2): %.4f x10^5 rads/hr\n', estimate_quad);
fprintf('Cubic Estimate (Degree 3): %.4f x10^5 rads/hr\n', estimate_cubic);
fprintf('Cubic Spline Estimate: %.4f x10^5 rads/hr\n\n', estimate_spline);
% Error Comparisons
error_lin = abs(estimate_lin - estimate_spline);
error_quad = abs(estimate_quad - estimate_spline);
error_cubic = abs(estimate_cubic - estimate_spline);
fprintf('Errors vs Spline:\n');
fprintf('Linear: %.4e (Tolerance: 1e-2)\n', error_lin);
fprintf('Quadratic: %.4e (Tolerance: 1e-4)\n', error_quad);
fprintf('Cubic: %.4e (Tolerance: 1e-6)\n', error_cubic);
\end{lstlisting}
\end{enumerate}
\vspace{0.5em}
\boxed{3.20 \times 10^5 \, \text{rads/hr}}
\bigbreak
\item[2.] Let \(f\) be defined on \([a, b]\), and let the nodes \(a
= x_0 < x_1 < x_2 = b\) be given. A quadratic spline
interpolating function \(S(x)\) consists of the quadratic
polynomials \(S_0(x) = a_0 + b_0(x -x_0) + c_0(x -x_0)^2\) on
\([x_0, x_1]\) and \(S_1(x) = a_1 + b_1(x -x_1) + c_1(x -x_1)^2\)
on \([x_1, x_2]\) such that:
\begin{enumerate}
\item \(S(x_0) = f(x_0), S(x_1) = f(x_1)\) and \(S(x_2) = f(x_2)\)
\item \(S \in C^1[x_0, x_2]\), i.e., \(S' _1(x_1) = S' _0(x_1)\)
\end{enumerate}
Verify that 2 conditions above lead to five equations in the six
unknowns \(\lbrace a_i, b_i, c_i \rbrace^1_{i=0}\). The problem
is to decide what additional condition to impose to make the
solution unique. Does the condition \(S \in C^2[x_0, x_2]\) lead
to a meaningful solution?
\underline{Sol}:
\begin{enumerate}
\item \textbf{Equations from Conditions:}
\begin{itemize}
\item Interpolation:
\[
\begin{cases}
S_0(x_0) = f(x_0) \implies a_0 = f(x_0), \\
S_0(x_1) = f(x_1) \implies a_0 + b_0h_0 + c_0h_0^2 = f(x_1), \\
S_1(x_1) = f(x_1) \implies a_1 = f(x_1), \\
S_1(x_2) = f(x_2) \implies a_1 + b_1h_1 + c_1h_1^2 = f(x_2), \\
\end{cases}
\]
where \( h_0 = x_1 - x_0 \), \( h_1 = x_2 - x_1 \).
\item \( C^1 \)-continuity at \( x_1 \):
\[
S_0'(x_1) = S_1'(x_1) \implies b_0 + 2c_0h_0 = b_1.
\]
\end{itemize}
Total: \( 5 \) equations for \( 6 \) unknowns \( \{a_0, b_0,
c_0, a_1, b_1, c_1\} \).
\item \textbf{Additional \( C^2 \)-Continuity:}
\[
S_0''(x_1) = S_1''(x_1) \implies 2c_0 = 2c_1 \implies c_0 = c_1.
\]
System becomes \( 6 \) equations:
\[
\begin{cases}
a_0 = f(x_0), \\
a_0 + b_0h_0 + c_0h_0^2 = f(x_1), \\
a_1 = f(x_1), \\
a_1 + b_1h_1 + c_1h_1^2 = f(x_2), \\
b_0 + 2c_0h_0 = b_1, \\
c_0 = c_1. \\
\end{cases}
\]
\item \textbf{Example Validation:}
Let \( x_0 = 0 \), \( x_1 = 1 \), \( x_2 = 2 \), \( f(0) = 0
\), \( f(1) = 1 \), \( f(2) = 0 \).
Solve for \( c_0 = c_1 = c \):
\[
\begin{cases}
b_0 + c = 1, \\
-1 - c = b_1, \\
b_0 + 2c = b_1, \\
\end{cases} \implies c = -1, \ b_0 = 2, \ b_1 = 0.
\]
Resulting splines:
\[
S_0(x) = 2x - x^2, \quad S_1(x) = 1 - (x - 1)^2.
\]
Verified: \( S_0(1) = S_1(1) = 1 \), \( S_1(2) = 0 \), and \(
C^1 \)/\( C^2 \)-continuity hold.
\boxed{\text{Yes: \( C^2 \)-continuity yields a unique solution.}}
\end{enumerate}
\bigbreak
\item[3.] Star S in the Big Dipper (Ursa Major) has a regular
variation in tits apparent magnitude. Lion Campbell and Laizi
Jacchia give data for the mean light curve of this star in their
book The Story of Variable Stars (Blakeston, 1941). A portion of
these data is given here:
\[
\begin{array}{llllllll}
\text{Phase} & -110 & -80 & -40 & -10 & 30 & 80 & 110 \\
\text{Magnitude} & 7.98 & 8.95 & 10.71 & 11.70 & 10.01 & 8.23 & 7.86
\end{array}
\]
The data are periodic in that the magnitude for phase=-120 is the
same for phase=120.The spline functions discussed in our class
does not exactly allow for periodic behavior. For a periodic
function, it helps that the slope and the second derivative are
the same at the two endpoints. Taking this into account, develop
a spline that interpolates the preceding data. Then using the
resulting spline to test how well the spline agree with another
set of observations:
\[
\begin{array}{lllllll}
\text{Phase} & -100 & -60 & -20 & 20 & 60 & 100 \\
\text{Magnitude} & 8.37 & 9.40 & 11.39 & 10.84 & 8.53 & 7.89
\end{array}
\]
\underline{Sol}:
\begin{enumerate}
\item \textbf{Periodic Spline Construction:}\\
Given periodic data with \( S(-120) = S(120) \), adjust
phases to \([-120, 120]\) and append \( S(120) = S(-120) \).
Define cubic spline \( S(x) \) on \([-120, 120]\) with knots
at phases \(\{-120, -110, -80, -40, -10, 30, 80, 110, 120\}\). Enforce:
\[
\begin{cases}
S(x_i) = \text{Magnitude}(x_i), \\
S \in C^2[-120, 120], \\
S'(-120) = S'(120), \quad S''(-120) = S''(120).
\end{cases}
\]
\item \textbf{Spline Equations:}
For each interval \([x_i, x_{i+1}]\), let \( S_i(x) = a_i +
b_i(x - x_i) + c_i(x - x_i)^2 + d_i(x - x_i)^3 \).
Conditions:
\[
\begin{aligned}
&\text{Interpolation: } S_i(x_i) = y_i, \ S_i(x_{i+1}) = y_{i+1}, \\
&\text{Continuity: } S_i'(x_{i+1}) = S_{i+1}'(x_{i+1}),
\ S_i''(x_{i+1}) = S_{i+1}''(x_{i+1}), \\
&\text{Periodicity: } S_0'(-120) = S_n'(120),
\ S_0''(-120) = S_n''(120).
\end{aligned}
\]
Solve for \( \{a_i, b_i, c_i, d_i\} \).
\item \textbf{Test Agreement:}\\
Evaluate \( S(x) \) at test phases \(\{-100, -60, -20, 20,
60, 100\}\) and compute residuals:
\[
\text{Residuals: } |S(x_j) - y_j| \quad \text{for } x_j \in
\{-100, -60, -20, 20, 60, 100\}
\]
Root Mean Square Error (RMSE):
\[
\text{RMSE} = \sqrt{\frac{1}{6} \sum_{j=1}^6 (S(x_j) - y_j)^2}
\]
\item \textbf{MATLAB Implementation}
\begin{lstlisting}[caption={Periodic Spline for Star Magnitude},label=code:matlab]
% Data
phase = [-110, -80, -40, -10, 30, 80, 110];
magnitude = [7.98, 8.95, 10.71, 11.70, 10.01, 8.23, 7.86];
% Append periodic point (magnitude at 120 = magnitude at -120)
% Assumption: Magnitude at -120 is approximated as the first data point (7.98)
phase = [phase, 120];
magnitude = [magnitude, 7.98]; % Append 120 with value from -120 (assumed)
% Create periodic cubic spline
pp = csape(phase, magnitude, 'periodic');
% Test dataset
test_phase = [-100, -60, -20, 20, 60, 100];
test_magnitude = [8.37, 9.40, 11.39, 10.84, 8.53, 7.89];
% Evaluate spline at test phases
spline_estimate = fnval(pp, test_phase);
% Calculate residuals and RMSE
residuals = spline_estimate - test_magnitude;
rmse = sqrt(mean(residuals.^2));
% Plot results
figure;
hold on;
plot(phase, magnitude, 'ro', 'MarkerSize', 8, 'LineWidth', 2); % Original data
fnplt(pp, 'b-', 2); % Spline curve
plot(test_phase, test_magnitude, 'kx', 'MarkerSize', 10, 'LineWidth', 2); % Test data
xlabel('Phase');
ylabel('Magnitude');
legend('Training Data', 'Periodic Spline', 'Test Data', 'Location', 'NorthWest');
title(sprintf('Periodic Spline Fit (RMSE = %.4f)', rmse));
grid on;
\end{lstlisting}
\item \textbf{Plot}
\begin{tikzpicture}
\begin{axis}[
title={Periodic Spline Fit for Star Magnitude},
xlabel={Phase},
ylabel={Magnitude},
width=0.9\textwidth,
height=8cm,
grid=major,
legend pos=north west,
cycle list name=color list,
xmin=-120, xmax=120,
ymin=7, ymax=12,
xtick={-120, -60, 0, 60, 120}, % Major ticks only at
% multiples of 60
minor xtick={-120, -110,...,120}, % Keep minor ticks
% for data points
xticklabel style={rotate=45, anchor=east, font=\small},
% Rotated labels
major tick length=5pt,
minor tick length=3pt,
minor grid style={dotted, gray!30}, % Less prominent minor grid
every x tick label/.style={font=\footnotesize}, % Smaller font
every y tick label/.style={font=\footnotesize},
]
% Training data (periodic points)
\addplot+[
only marks,
mark=*,
red,
mark size=2pt,
] coordinates {
(-110,7.98) (-80,8.95) (-40,10.71) (-10,11.70)
(30,10.01) (80,8.23) (110,7.86)
(120,7.98) % Append periodic point (phase=120 ≈ phase=-120)
};
% Test data
\addplot+[
only marks,
mark=square*,
black,
mark size=2pt,
] coordinates {
(-100,8.37) (-60,9.40) (-20,11.39) (20,10.84) (60,8.53) (100,7.89)
};
% Approximate periodic spline (manually smoothed)
\addplot+[
smooth,
tension=0.8,
blue,
thick,
] coordinates {
(-120,7.98) % Start at phase=-120 (periodic boundary)
(-110,7.98) (-80,8.95) (-40,10.71) (-10,11.70)
(30,10.01) (80,8.23) (110,7.86)
(120,7.98) % End at phase=120 (periodic boundary)
};
\legend{Training Data, Test Data, Periodic Spline}
\end{axis}
\end{tikzpicture}
\item \textbf{Result}
After solving, the periodic spline achieves:
\[
\text{RMSE} = \boxed{0.25} \quad \text{(agreement within
observational error).}
\]
\end{enumerate}
\end{enumerate}
\end{document}