Created
March 2, 2015 11:30
-
-
Save byronyi/ff4f28eb6e40d8ab370d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"metadata": { | |
"name": "", | |
"signature": "sha256:9e4db3e20c173d9ce302cadac98ae530021e48573c025d7706d5efc2d304070c" | |
}, | |
"nbformat": 3, | |
"nbformat_minor": 0, | |
"worksheets": [ | |
{ | |
"cells": [ | |
{ | |
"cell_type": "heading", | |
"level": 1, | |
"metadata": {}, | |
"source": [ | |
"Assignment 1" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Yi Bairen, 20026373" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"from IPython.display import Latex, display\n", | |
"\n", | |
"from sympy.interactive import printing\n", | |
"from sympy.printing.latex import latex\n", | |
"\n", | |
"printing.init_printing(use_latex=True)\n", | |
"\n", | |
"def print_func(func_str, func):\n", | |
" if hasattr(func, 'expr'):\n", | |
" latex_str = '$$' + func_str + '=' + latex(func.expr) + '$$'\n", | |
" else:\n", | |
" latex_str = '$$' + func_str + '=' + latex(func) + '$$'\n", | |
" display(Latex(latex_str))" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 1 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"from sympy import log, exp, diff, symbols, vectorize, Symbol, Float, Lambda, Matrix\n", | |
"from sympy.abc import x\n", | |
"\n", | |
"@vectorize(0, 1)\n", | |
"def vdiff(f, x):\n", | |
" return diff(f, x).simplify()" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 2 | |
}, | |
{ | |
"cell_type": "heading", | |
"level": 2, | |
"metadata": {}, | |
"source": [ | |
"Problem 1" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"f = Lambda((x), 2*log(exp(x)+1)-x)\n", | |
"\n", | |
"print_func(\"f(x)\", f)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"latex": [ | |
"$$f(x)=- x + 2 \\log{\\left (e^{x} + 1 \\right )}$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad0df150>" | |
] | |
} | |
], | |
"prompt_number": 3 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"def Newton1D(f, x0, n_iter):\n", | |
" df = Lambda((x), f.expr.diff(x).simplify())\n", | |
" d2f = Lambda((x), df.expr.diff(x).simplify())\n", | |
" \n", | |
" print_func(\"f(x)\", f)\n", | |
" print_func(\"f'(x)\", df)\n", | |
" print_func(\"f''(x)\", d2f)\n", | |
" \n", | |
" xk = Float(x0)\n", | |
" for k in range(n_iter+1):\n", | |
" \n", | |
" print \"x({}) = {:.3f}\".format(k, float(xk)) + '\\t',\n", | |
" print \"f(x) = {:.3f}\".format(float(f(xk))) + '\\t',\n", | |
" print \"f'(x) = {:.3f}\".format(float(df(xk))) + '\\t',\n", | |
" print \"f''(x) = {:.3f}\".format(float(d2f(xk)))\n", | |
" x_temp = xk - df(xk) / d2f(xk)\n", | |
" xk = x_temp\n", | |
"\n", | |
"Newton1D(f, 2., 4)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"latex": [ | |
"$$f(x)=- x + 2 \\log{\\left (e^{x} + 1 \\right )}$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad072c10>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$f'(x)=\\tanh{\\left (\\frac{x}{2} \\right )}$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad072a90>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$f''(x)=\\frac{1}{2 \\cosh^{2}{\\left (\\frac{x}{2} \\right )}}$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad072b10>" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"x(0) = 2.000\tf(x) = 2.254\tf'(x) = 0.762\tf''(x) = 0.210\n", | |
"x(1) = -1.627\tf(x) = 1.986\tf'(x) = -0.671\tf''(x) = 0.275\n", | |
"x(2) = 0.819\tf(x) = 1.549\tf'(x) = 0.388\tf''(x) = 0.425\n", | |
"x(3) = -0.095\tf(x) = 1.389\tf'(x) = -0.047\tf''(x) = 0.499\n", | |
"x(4) = 0.000\tf(x) = 1.386\tf'(x) = 0.000\tf''(x) = 0.500\n" | |
] | |
} | |
], | |
"prompt_number": 4 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"def Secant(f, x_1, x0, n_iter):\n", | |
" df = Lambda((x), f.expr.diff(x).simplify())\n", | |
" print_func(\"f(x)\", f)\n", | |
" print_func(\"f'(x)\", df)\n", | |
" xk_1 = Float(x_1)\n", | |
" xk = Float(x0)\n", | |
" for k in range(n_iter+1):\n", | |
" secant = (df(xk) - df(xk_1)) / (xk - xk_1)\n", | |
" print \"x({}) = {:.3f}\".format(k-1, float(xk_1)) + '\\t',\n", | |
" print \"x({}) = {:.3f}\".format(k, float(xk)) + '\\t',\n", | |
" print \"f(x({})) = {:.3f}\".format(k, float(f(xk))) + '\\t',\n", | |
" print \"f'(x({})) = {:.3f}\".format(k-1, float(df(xk_1))) + '\\t',\n", | |
" print \"f'(x({})) = {:.3f}\".format(k, float(df(xk))) + '\\t',\n", | |
" print 'secant = {:.3f}'.format(float(secant))\n", | |
" x_temp = xk - df(xk) / secant\n", | |
" xk_1 = xk\n", | |
" xk = x_temp\n", | |
" \n", | |
"Secant(f, 2.01, 2., 4)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"latex": [ | |
"$$f(x)=- x + 2 \\log{\\left (e^{x} + 1 \\right )}$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad072d50>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$f'(x)=\\tanh{\\left (\\frac{x}{2} \\right )}$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad072a50>" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"x(-1) = 2.010\tx(0) = 2.000\tf(x(0)) = 2.254\tf'(x(-1)) = 0.764\tf'(x(0)) = 0.762\tsecant = 0.209\n", | |
"x(0) = 2.000\tx(1) = -1.641\tf(x(1)) = 1.995\tf'(x(0)) = 0.762\tf'(x(1)) = -0.675\tsecant = 0.395\n", | |
"x(1) = -1.641\tx(2) = 0.070\tf(x(2)) = 1.388\tf'(x(1)) = -0.675\tf'(x(2)) = 0.035\tsecant = 0.415\n", | |
"x(2) = 0.070\tx(3) = -0.014\tf(x(3)) = 1.386\tf'(x(2)) = 0.035\tf'(x(3)) = -0.007\tsecant = 0.500\n", | |
"x(3) = -0.014\tx(4) = 0.000\tf(x(4)) = 1.386\tf'(x(3)) = -0.007\tf'(x(4)) = 0.000\tsecant = 0.500\n" | |
] | |
} | |
], | |
"prompt_number": 5 | |
}, | |
{ | |
"cell_type": "heading", | |
"level": 2, | |
"metadata": {}, | |
"source": [ | |
"Problem 2" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"x1, x2 = symbols('x_1, x_2')\n", | |
"x = (x1, x2)\n", | |
"f = Lambda(x, 2*x1**2 + x2**2 - 2*x1*x2 + 2*x1**3 + x1**4)\n", | |
"\n", | |
"print_func(\"f{}\".format(x), f)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"latex": [ | |
"$$f(x_1, x_2)=x_{1}^{4} + 2 x_{1}^{3} + 2 x_{1}^{2} - 2 x_{1} x_{2} + x_{2}^{2}$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad09b0d0>" | |
] | |
} | |
], | |
"prompt_number": 6 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"def Newton2D(f, x0, n_iter):\n", | |
" g = Lambda(x, vdiff(f.expr, x))\n", | |
" F = Lambda(x, Matrix(vdiff(g.expr, x)))\n", | |
" \n", | |
" g = Lambda(x, Matrix(g.expr))\n", | |
" \n", | |
" print_func(\"f{}\".format(x), f)\n", | |
" print_func(\"g{}\".format(x), g)\n", | |
" print_func(\"F{}\".format(x), F)\n", | |
" \n", | |
" xk = Matrix(x0)\n", | |
" for k in range(n_iter+1):\n", | |
" print\n", | |
" print 'Iter {}'.format(k)\n", | |
" print_func('x^{{({})}}'.format(k), Matrix(np.round(np.array(xk).astype(np.float), 3).squeeze()))\n", | |
" print_func('f{}'.format(x), np.round(np.array(f(*xk)).astype(np.float), 3))\n", | |
" print_func('g{}'.format(x), Matrix(np.round(np.array(g(*xk)).astype(np.float), 3).squeeze()))\n", | |
" print_func('F{}'.format(x), Matrix(np.round(np.array(F(*xk)).astype(np.float), 2).squeeze()))\n", | |
" x_temp = xk - F(*xk)**-1 * g(*xk)\n", | |
" xk = x_temp\n", | |
" \n", | |
"Newton2D(f, (0.5, 0.6), 4)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"latex": [ | |
"$$f(x_1, x_2)=x_{1}^{4} + 2 x_{1}^{3} + 2 x_{1}^{2} - 2 x_{1} x_{2} + x_{2}^{2}$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ae5bf410>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$g(x_1, x_2)=\\left[\\begin{matrix}4 x_{1}^{3} + 6 x_{1}^{2} + 4 x_{1} - 2 x_{2}\\\\- 2 x_{1} + 2 x_{2}\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ae5bf090>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$F(x_1, x_2)=\\left[\\begin{matrix}12 x_{1}^{2} + 12 x_{1} + 4 & -2\\\\-2 & 2\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad04e510>" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n", | |
"Iter 0\n" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$x^{(0)}=\\left[\\begin{matrix}0.5 & 0.6\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad072a50>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$f(x_1, x_2)=0.572$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad049890>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$g(x_1, x_2)=\\left[\\begin{matrix}2.8 & 0.2\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad049ed0>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$F(x_1, x_2)=\\left[\\begin{matrix}13.0 & -2.0\\\\-2.0 & 2.0\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad000250>" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n", | |
"Iter 1\n" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$x^{(1)}=\\left[\\begin{matrix}0.227 & 0.227\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad049d50>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$f(x_1, x_2)=0.078$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad049210>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$g(x_1, x_2)=\\left[\\begin{matrix}0.811 & 0.0\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad000750>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$F(x_1, x_2)=\\left[\\begin{matrix}7.35 & -2.0\\\\-2.0 & 2.0\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad0003d0>" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n", | |
"Iter 2\n" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$x^{(2)}=\\left[\\begin{matrix}0.076 & 0.076\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad000e90>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$f(x_1, x_2)=0.007$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad00d310>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$g(x_1, x_2)=\\left[\\begin{matrix}0.187 & 0.0\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad03ded0>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$F(x_1, x_2)=\\left[\\begin{matrix}4.97 & -2.0\\\\-2.0 & 2.0\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad049290>" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n", | |
"Iter 3\n" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$x^{(3)}=\\left[\\begin{matrix}0.013 & 0.013\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad00b090>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$f(x_1, x_2)=0.0$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad00b490>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$g(x_1, x_2)=\\left[\\begin{matrix}0.026 & 0.0\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad00bb10>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$F(x_1, x_2)=\\left[\\begin{matrix}4.15 & -2.0\\\\-2.0 & 2.0\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad00be50>" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n", | |
"Iter 4\n" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$x^{(4)}=\\left[\\begin{matrix}0.0 & 0.0\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60acf907d0>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$f(x_1, x_2)=0.0$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad049a90>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$g(x_1, x_2)=\\left[\\begin{matrix}0.001 & 0.0\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad049490>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$F(x_1, x_2)=\\left[\\begin{matrix}4.01 & -2.0\\\\-2.0 & 2.0\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad049190>" | |
] | |
} | |
], | |
"prompt_number": 7 | |
}, | |
{ | |
"cell_type": "heading", | |
"level": 2, | |
"metadata": {}, | |
"source": [ | |
"Problem 3" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**Let $f(x) = (x \u2212 x_0)^4$ for $x \\in \\mathbb{R}$, where $x_0 \\in \\mathbb{R}$ is a constant. Suppose that we apply\n", | |
"Newton\u2019s method to the problem of minimizing $f$.**" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**(1) Write down the update equation for Newton\u2019s method applied to the problem.**" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Suppose $ x^{(k)} \\neq x_0 $, \n", | |
"\n", | |
"$$ f'(x) = 4(x-x_0)^3 $$\n", | |
"\n", | |
"$$ f''(x) = 12(x-x_0)^2 $$\n", | |
"\n", | |
"Therefore,\n", | |
"\n", | |
"$$ x^{(k+1)} = x^{(k)} - \\dfrac{f'(x^{(k)})}{f''(x^{(k)})} = x^{(k)} - \\dfrac{1}{3}(x^{(k)}-x_0) $$" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**(2) Let $y^{(k)} = \\left|x^{(k)} \u2212 x_0\\right|$, where $x^{(k)}$ is the k-th iterate in Newton\u2019s method. Show that the sequence $\\left\\{y^{(k)}\\right\\}$ satisfies $ y^{(k+1)} = \\frac{2}{3} y^{(k)} $.**" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"As in (1),\n", | |
"\n", | |
"$$ x^{(k+1)} = x^{(k)} - \\dfrac{1}{3}(x^{(k)}-x_0) $$\n", | |
"\n", | |
"$$ y^{(k+1)} = \\left|x^{(k+1)} - x_0\\right| = \\left|x^{(k)} - \\dfrac{1}{3}(x^{(k)}-x_0) - x_0 \\right|= \\frac{2}{3}\\left|x^{(k)}-x_0 \\right| = \\frac{2}{3} y^{(k)} $$" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**(3) Show that $x^{(k)} \\rightarrow x_0$ for any initial guess $x^{(0)}$.**" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"If $x^{(k)} = x_0$, the case is trivial. \n", | |
"\n", | |
"Otherwise, as $\\forall x^{(0)} \\neq x_0 $, $\\left\\{y^{(k)}\\right\\} \\rightarrow 0$, then $x^{(k)} \\rightarrow x_0$." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**(4) Show that the order of convergence of the sequence $\\left\\{x^{(k)}\\right\\}$ in (2) is 1.**" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"As $$ \\lim_{k \\to \\infty} \\dfrac{\\left\\|x^{(k+1)} - x_0\\right\\|}{\\left\\|x^{(k)} - x_0\\right\\|} = \\dfrac{y^{(k+1)}}{y^{(k+1)}} = \\dfrac{2}{3} $$\n", | |
"By definition, order of convergence of $\\left\\{x^{(k)}\\right\\}$ is 1." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**(5) The theorem (Theorem 9.1 in Ref. [1]) states that under certain conditions, the order of convergence of Newton\u2019s method is at least 2. Why does that the theorem not hold in this particular problem?**" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"One precondition for Theorem 9.1 is that the Hessian of $f$ is invertible at $x_0$, which is clearly not satisfied as $f''(x_0) = 0$." | |
] | |
}, | |
{ | |
"cell_type": "heading", | |
"level": 2, | |
"metadata": {}, | |
"source": [ | |
"Problem 4" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**Consider the problem of finding minimizer of the function $f(x_1, x_2) = 100(x_2 \u2212 x_1^2)^2 + (1-x_1)^2$.**" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**(1) Show that $(1, 1)^T$ is the unique global minimizer of $f$ over $\\mathbb{R}^2$.**" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"x1, x2 = symbols('x_1, x_2')\n", | |
"x = (x1, x2)\n", | |
"\n", | |
"f = Lambda(x, 100*(x2-x1**2)**2 + (1-x1)**2)\n", | |
"g = Lambda(x, vdiff(f.expr, x))\n", | |
"F = Lambda(x, Matrix(vdiff(g.expr, x)))\n", | |
"\n", | |
"g = Lambda(x, Matrix(g.expr))\n", | |
"\n", | |
"print_func(\"f{}\".format(x), f)\n", | |
"print_func(\"g{}\".format(x), g)\n", | |
"print_func(\"F{}\".format(x), F)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"latex": [ | |
"$$f(x_1, x_2)=\\left(- x_{1} + 1\\right)^{2} + 100 \\left(- x_{1}^{2} + x_{2}\\right)^{2}$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ae5a5a50>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$g(x_1, x_2)=\\left[\\begin{matrix}400 x_{1} \\left(x_{1}^{2} - x_{2}\\right) + 2 x_{1} - 2\\\\- 200 x_{1}^{2} + 200 x_{2}\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad0264d0>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$F(x_1, x_2)=\\left[\\begin{matrix}1200 x_{1}^{2} - 400 x_{2} + 2 & - 400 x_{1}\\\\- 400 x_{1} & 200\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad026350>" | |
] | |
} | |
], | |
"prompt_number": 8 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"var = (1, 1)\n", | |
"\n", | |
"print_func('f{}'.format(var), f(*var))\n", | |
"print_func('g{}'.format(var), g(*var))\n", | |
"print_func('F{}'.format(var), F(*var))\n", | |
"print_func('\\det F{}'.format(var), F(*var).det())\n", | |
"print_func('trace\\ F{}'.format(var), F(*var).trace())" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"latex": [ | |
"$$f(1, 1)=0$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad03dbd0>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$g(1, 1)=\\left[\\begin{matrix}0\\\\0\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad03d450>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$F(1, 1)=\\left[\\begin{matrix}802 & -400\\\\-400 & 200\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad0e7b10>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$\\det F(1, 1)=400$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad0e7dd0>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$trace\\ F(1, 1)=1002$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ae5bf850>" | |
] | |
} | |
], | |
"prompt_number": 9 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"from sympy import solve\n", | |
"\n", | |
"display(solve(g(*x)))" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"latex": [ | |
"$$\\begin{bmatrix}\\begin{Bmatrix}x_{1} : 1, & x_{2} : 1\\end{Bmatrix}\\end{bmatrix}$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"[{x\u2081: 1, x\u2082: 1}]" | |
] | |
} | |
], | |
"prompt_number": 16 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"However, as $(1, 1)^T$ is the only solution to $g(x_1,x_2) = 0$, and there is no on-interior points in $\\mathbb{R}$, by SONC, there is no other local minimizer. \n", | |
"\n", | |
"Therefore, $(1, 1)^T$ is the unique global minimizer of $f$." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**(2) With the starting point $(0, 0)^T$, apply two iterations of Newton\u2019s method (use the inverse formula for a $2\\times 2$ matrix).**" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"Newton2D(f, (0., 0.), 2)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"latex": [ | |
"$$f(x_1, x_2)=\\frac{x_{1}^{2}}{2} + x_{1} + x_{2}^{2} + \\frac{x_{2}}{2} + 3$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ae5bf410>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$g(x_1, x_2)=\\left[\\begin{matrix}x_{1} + 1\\\\2 x_{2} + \\frac{1}{2}\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60acf85c10>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$F(x_1, x_2)=\\left[\\begin{matrix}1 & 0\\\\0 & 2\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60acf85d90>" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n", | |
"Iter 0\n" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$x^{(0)}=\\left[\\begin{matrix}0.0 & 0.0\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60acf76410>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$f(x_1, x_2)=3.0$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad0e7f10>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$g(x_1, x_2)=\\left[\\begin{matrix}1.0 & 0.5\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60acf76c10>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$F(x_1, x_2)=\\left[\\begin{matrix}1.0 & 0.0\\\\0.0 & 2.0\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60acf76e90>" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n", | |
"Iter 1\n" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$x^{(1)}=\\left[\\begin{matrix}-1.0 & -0.25\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60acf76750>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$f(x_1, x_2)=2.438$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60acf76690>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$g(x_1, x_2)=\\left[\\begin{matrix}0.0 & 0.0\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad09b550>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$F(x_1, x_2)=\\left[\\begin{matrix}1.0 & 0.0\\\\0.0 & 2.0\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad09b3d0>" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n", | |
"Iter 2\n" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$x^{(2)}=\\left[\\begin{matrix}-1.0 & -0.25\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60acf8df50>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$f(x_1, x_2)=2.438$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60acf8d1d0>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$g(x_1, x_2)=\\left[\\begin{matrix}0.0 & 0.0\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60acf8d4d0>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$F(x_1, x_2)=\\left[\\begin{matrix}1.0 & 0.0\\\\0.0 & 2.0\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60acf8d550>" | |
] | |
} | |
], | |
"prompt_number": 17 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**(3) Repeat part (2) using a gradient algorithm with a fixed step size of $\\alpha_k = 0.05$ at each iteration.**" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"def Gradient(f, x0, alpha, n_iter):\n", | |
" g = Lambda(x, vdiff(f.expr, x))\n", | |
" F = Lambda(x, Matrix(vdiff(g.expr, x)))\n", | |
" \n", | |
" g = Lambda(x, Matrix(g.expr))\n", | |
" \n", | |
" print_func(\"f{}\".format(x), f)\n", | |
" print_func(\"g{}\".format(x), g)\n", | |
" print_func(\"F{}\".format(x), F)\n", | |
" \n", | |
" xk = Matrix(x0)\n", | |
" for k in range(n_iter+1):\n", | |
" print\n", | |
" print 'Iter {}'.format(k)\n", | |
" print_func('x^{{({})}}'.format(k), Matrix(np.round(np.array(xk).astype(np.float), 3).squeeze()))\n", | |
" print_func('f{}'.format(x), np.round(np.array(f(*xk)).astype(np.float), 3))\n", | |
" print_func('g{}'.format(x), Matrix(np.round(np.array(g(*xk)).astype(np.float), 3).squeeze()))\n", | |
" x_temp = xk - alpha * g(*xk)\n", | |
" xk = x_temp\n", | |
" \n", | |
"Gradient(f, (0., 0.), 0.05, 2)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"latex": [ | |
"$$f(x_1, x_2)=\\frac{x_{1}^{2}}{2} + x_{1} + x_{2}^{2} + \\frac{x_{2}}{2} + 3$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60acf8d650>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$g(x_1, x_2)=\\left[\\begin{matrix}x_{1} + 1\\\\2 x_{2} + \\frac{1}{2}\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad03dc10>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$F(x_1, x_2)=\\left[\\begin{matrix}1 & 0\\\\0 & 2\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60acf8d610>" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n", | |
"Iter 0\n" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$x^{(0)}=\\left[\\begin{matrix}0.0 & 0.0\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60acf8d510>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$f(x_1, x_2)=3.0$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60acf8d390>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$g(x_1, x_2)=\\left[\\begin{matrix}1.0 & 0.5\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60acf8df90>" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n", | |
"Iter 1\n" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$x^{(1)}=\\left[\\begin{matrix}-0.05 & -0.025\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad09b450>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$f(x_1, x_2)=2.939$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad09b390>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$g(x_1, x_2)=\\left[\\begin{matrix}0.95 & 0.45\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60acf76490>" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n", | |
"Iter 2\n" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$x^{(2)}=\\left[\\begin{matrix}-0.098 & -0.048\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60acf76ad0>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$f(x_1, x_2)=2.886$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60acf763d0>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$g(x_1, x_2)=\\left[\\begin{matrix}0.902 & 0.405\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ace7c750>" | |
] | |
} | |
], | |
"prompt_number": 18 | |
}, | |
{ | |
"cell_type": "heading", | |
"level": 2, | |
"metadata": {}, | |
"source": [ | |
"Problem 5" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"x1, x2 = symbols('x_1, x_2')\n", | |
"x = (x1, x2)\n", | |
"f = Lambda(x, x1 + x2/2 + x1**2/2 + x2**2 + 3)\n", | |
"\n", | |
"print_func(\"f{}\".format(x), f)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"latex": [ | |
"$$f(x_1, x_2)=\\frac{x_{1}^{2}}{2} + x_{1} + x_{2}^{2} + \\frac{x_{2}}{2} + 3$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60acf8d710>" | |
] | |
} | |
], | |
"prompt_number": 19 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"def SteepestDescent(f, x0, n_iter):\n", | |
" g = Lambda(x, Matrix(vdiff(f.expr, x)))\n", | |
" alpha = Symbol('\u03b1')\n", | |
" \n", | |
" print_func(\"f{}\".format(x), f)\n", | |
" print_func(\"g{}\".format(x), g)\n", | |
" \n", | |
" xk = Matrix(x0)\n", | |
" for k in range(n_iter+1):\n", | |
" print\n", | |
" print 'Iter {}'.format(k)\n", | |
" print_func('x^{{({})}}'.format(k), Matrix(np.round(np.array(xk).astype(np.float), 3).squeeze()))\n", | |
" print_func('f{}'.format(x), np.round(np.array(f(*xk)).astype(np.float), 3))\n", | |
" print_func('g{}'.format(x), Matrix(np.round(np.array(g(*xk)).astype(np.float), 3).squeeze()))\n", | |
" x_temp = Lambda((alpha), xk - alpha * g(*xk))\n", | |
" a, = solve(vdiff(f(*x_temp(alpha)), alpha))\n", | |
" print_func('f_{\u03b1}', f(*x_temp(alpha)).simplify())\n", | |
" print_func('\u03b1_{optimal}', np.round(float(a), 3))\n", | |
" xk = x_temp(a)\n", | |
" \n", | |
"SteepestDescent(f, (0., 0.), 2)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"latex": [ | |
"$$f(x_1, x_2)=\\frac{x_{1}^{2}}{2} + x_{1} + x_{2}^{2} + \\frac{x_{2}}{2} + 3$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ace84dd0>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$g(x_1, x_2)=\\left[\\begin{matrix}x_{1} + 1\\\\2 x_{2} + \\frac{1}{2}\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ae5a5d50>" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n", | |
"Iter 0\n" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$x^{(0)}=\\left[\\begin{matrix}0.0 & 0.0\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ace84f10>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$f(x_1, x_2)=3.0$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ace7c890>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$g(x_1, x_2)=\\left[\\begin{matrix}1.0 & 0.5\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60acf76550>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$f_{\u03b1}=0.75 \u03b1^{2} - 1.25 \u03b1 + 3$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60acf8df90>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$\u03b1_{optimal}=0.833$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60acf8d350>" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n", | |
"Iter 1\n" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$x^{(1)}=\\left[\\begin{matrix}-0.833 & -0.417\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60acf8d390>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$f(x_1, x_2)=2.479$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ace880d0>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$g(x_1, x_2)=\\left[\\begin{matrix}0.167 & -0.333\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ace883d0>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$f_{\u03b1}=0.125 \u03b1^{2} - 0.138888888888889 \u03b1 + 2.47916666666667$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ad09b550>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$\u03b1_{optimal}=0.556$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60acf76ed0>" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n", | |
"Iter 2\n" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$x^{(2)}=\\left[\\begin{matrix}-0.926 & -0.231\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60acf76610>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$f(x_1, x_2)=2.441$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60acf76b90>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$g(x_1, x_2)=\\left[\\begin{matrix}0.074 & 0.037\\end{matrix}\\right]$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60acf85c10>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$f_{\u03b1}=0.00411522633744856 \u03b1^{2} - 0.00685871056241427 \u03b1 + 2.44058641975309$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ae5a5d50>" | |
] | |
}, | |
{ | |
"latex": [ | |
"$$\u03b1_{optimal}=0.833$$" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.Latex at 0x7f60ace84f10>" | |
] | |
} | |
], | |
"prompt_number": 20 | |
} | |
], | |
"metadata": {} | |
} | |
] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment