diff --git a/mp5/Project_5_Maggioni_Claudio.pdf b/mp5/Project_5_Maggioni_Claudio.pdf index 3f49ab5..dc851bf 100644 Binary files a/mp5/Project_5_Maggioni_Claudio.pdf and b/mp5/Project_5_Maggioni_Claudio.pdf differ diff --git a/mp5/Project_5_Maggioni_Claudio.tex b/mp5/Project_5_Maggioni_Claudio.tex index 29765e4..27c6802 100644 --- a/mp5/Project_5_Maggioni_Claudio.tex +++ b/mp5/Project_5_Maggioni_Claudio.tex @@ -72,7 +72,6 @@ second derivative we have: since $A$ is positive definite. Therefore, we can say that the absolute minima of $f(x)$ is the solution for $Ax = b$. - \section{Conjugate Gradient [40 points]} \subsection{ Write a function for the conjugate gradient solver \texttt{[x,rvec]=myCG(A,b,x0,max\_itr,tol)}, where \texttt{x} @@ -98,8 +97,10 @@ The plot of the squared residual 2-norms over all iterations can be found in Fig condition number and convergence rate.} The eigenvalues of A can be found in figure -\ref{fig:plot2}. The condition number for matrix $A$ according to \texttt{rcond(...)} is $\approx 3.2720 \cdot 10^7$, which is very low without sitting in the denormalized range (i.e. $< \text{eps}$) and thus very good for the Conjugate Gradient algorithm. -This well conditioning is also reflected in the eigenvalue plot, which shows a not so +\ref{fig:plot2}. The condition number for matrix $A$ according to \texttt{rcond(...)} is $\approx 3.2720 \cdot 10^7$, +which is very low without sitting in the denormalized range (i.e. $< \text{eps}$) and thus very good for the Conjugate Gradient algorithm. +This well conditioning is also +reflected in the eigenvalue plot, which shows a not so drastic increase of the first eigenvalues ordered in increasing order. \begin{figure}[h] @@ -118,9 +119,14 @@ Matlab documentation). Solve the system with both solvers using $max\_iter=200$ $tol= 10^{-6}$. Plot the convergence (residual vs iteration) of each solver and display the original and final deblurred image.} + +Plots already rendered. + \subsection{ When would \texttt{pcg} be worth the added computational cost? What about if you are debluring lots of images with the same blur operator?} +\textit{pcg} better for many, myCG better for one thanks to cost of ichol. + \end{document} diff --git a/mp5/Project_5_Maggioni_Claudio/code_template.asv b/mp5/Project_5_Maggioni_Claudio/code_template.asv deleted file mode 100644 index 3c7199f..0000000 --- a/mp5/Project_5_Maggioni_Claudio/code_template.asv +++ /dev/null @@ -1,41 +0,0 @@ -close all; -clear; clc; - -%% Load Default Img Data -load('blur_data/B.mat'); -B=double(B); -load('blur_data/A.mat'); -A=double(A); -ciao = A; - -% Show Image -figure -im_l=min(min(B)); -im_u=max(max(B)); -imshow(B,[im_l,im_u]) -title('Blured Image') - -% Vectorize the image (row by row) -b=B'; -b=b(:); - -%IL = ichol(A, struct('type', 'nofill', 'diagcomp', 0)); -y = IL \ b; -x0 = IL' \ y; - -[x, rvec] = myCG(A, b, diag(IL), 200, 1e-6); -semilogy(rvec); - -[X2,flag,~,~,rvec2] = pcg(A, b, 1e-6, 200); - - - -%% Validate Test values -load('test_data/A_test.mat'); -load('test_data/x_test_exact.mat'); -load('test_data/b_test.mat'); - -%res=||x^*-A^{-1}b|| -res=x_test_exact-inv(A_test)*b_test; -norm(res); -%(Now do it with your CG and Matlab's PCG routine!!!)