]> git.rustad.me Git - optimering/commitdiff
Some initial writing on the SR-1 method
authorBjørn Rustad <bjorn@rustad.me>
Fri, 9 Mar 2012 10:59:06 +0000 (11:59 +0100)
committerBjørn Rustad <bjorn@rustad.me>
Fri, 9 Mar 2012 10:59:06 +0000 (11:59 +0100)
rapport.tex

index e1c1b5659b12824d21cb529e603ce14db5ca1e8c..7fbda4a0c4801dd8ced548ff90c8e71107306e6f 100644 (file)
@@ -38,4 +38,39 @@ Her må vi også skrive noe.
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \subsection{a)}
+SR-1 er en kvasi-newton-metode der vi ved hver iterasjon oppdaterer vårt
+estimat for hessianen, $B$, med en rang-1-matrise. Ved hvert steg trenger
+vi også inversen til $B$, som vi kaller $H$.
+
+Ved hver iterasjon starter vi med følgende oppdatering av gjeldende
+posisjon $x$
+\begin{lstlisting}[language=Matlab]
+p = -H*g;
+x = x + p;
+\end{lstlisting}
+der $g$ er gradienten i gjeldende punkt. Vi ser at steget $p$ er et
+newton-steg bare at vi bruker vår tilnærming $H$ i stedet for den ekte
+inversen til hessian-matrisen. Vi fortsetter med å oppdatere gradienten
+$g$.
+\begin{lstlisting}[language=Matlab]
+y = -g;
+g = A*x - b;
+y = g + y;
+\end{lstlisting}
+Siden denne koden er spesifikk til testproblemet har vi at gradienten i
+punktet $x$ er lik $A\cdot x - b$. Variabelen $y$ vil etter dette være
+lik endringen i gradienten $g_{k+1} - g_k$. Neste steg er å oppdatere
+vår hessian-tilnærming $B$ som følger
+\begin{lstlisting}[language=Matlab]
+v = y - B*p;
+B = B + v*v'/(v'*p);
+\end{lstlisting}
+Skal vi forklare dette? Til slutt må vi også oppdatere $H$ slik at den
+fortsatt er inversen til $B$.
+\begin{lstlisting}[language=Matlab]
+w = p - H*y;
+H = H + w*w'/(w'*y);
+\end{lstlisting}
+Og hvor mye skal vi forklare av dette?
+
 \end{document}