{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Newton’s method and nonlinear equations\n", "\n", "In first-year calculus, most students learn [Newton’s method](https://en.wikipedia.org/wiki/Newton's_method) for solving nonlinear equations $f(x) = 0$, which iteratively improves a sequence of guesses for the solution $x$ by **approximating f by a straight line**. That is, it **approximates a *nonlinear* equation by a sequence of approximate *linear* equations**.\n", "\n", "This can be extended to *systems* of nonlinear equations as a **multidimensional Newton** method, in which we iterate by solving a sequence of linear (*matrix*) systems of equations. This is one example of an amazing fact: **linear algebra is a fundamental tool even for solving nonlinear equations**." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Packages for this notebook" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ " \n" ], "text/plain": [ "HTML{String}(\" \\n\")" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "HTML{String}(\"\")" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "HTML{String}(\"\")" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ " \n" ], "text/plain": [ "HTML{String}(\" \\n\")" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Pkg.add.([\"Interact\", \"PyPlot\", \"ForwardDiff\"]) # uncomment this line to install packages\n", "using Interact, PyPlot" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## One-dimensional Newton\n", "\n", "The standard one-dimensional Newton’s method proceeds as follows. Suppose we are solving for a zero (root) of $f(x)$:\n", "\n", "$$\n", "f(x) = 0\n", "$$\n", "\n", "for an arbitrary (but differentiable) function $f$, and we have a guess $x$. We find an *improved* guess $x+\\delta$ by [Taylor expanding](https://en.wikipedia.org/wiki/Taylor_series) $f(x+\\delta)$ around $x$ to *first order* (linear!) in $\\delta$, and finding the . (This should be accurate if $x$ is *close enough* to a solution, so that the $\\delta$ is *small*.) That is, we solve:\n", "\n", "$$\n", "f(x + \\delta) \\approx f(x) + f'(x) \\delta = 0\n", "$$\n", "\n", "to obtain $\\delta = -f(x) / f'(x)$. Plugging this into $x+\\delta$, we obtain:\n", "\n", "$$\n", "\\boxed{\\mbox{new } x = x - f(x)/f'(x)}.\n", "$$\n", "\n", "This is called a **Newton step**. Then we simply repeat the process.\n", "\n", "Let's visualize this process for finding a root of $f(x) = 2\\cos(x) - x + x^2/10$ (a [transcendental equation](https://en.wikipedia.org/wiki/Transcendental_equation) that has no closed-form solution)." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "
\n", "WebIO.mount(this.previousSibling,{"props":{},"nodeType":"DOM","type":"node","instanceArgs":{"namespace":"html","tag":"div"},"children":[{"props":{"className":"field"},"nodeType":"DOM","type":"node","instanceArgs":{"namespace":"html","tag":"div"},"children":[{"props":{},"nodeType":"Scope","type":"node","instanceArgs":{"imports":{"data":[{"name":"knockout","type":"js","url":"/assetserver/d6df0bcbf61025c952fa7d6260c0502952fc6253-knockout.js"},{"name":"knockout_punches","type":"js","url":"/assetserver/76b9e9b6191c21207f614aefd21121e841930334-knockout_punches.js"},{"name":null,"type":"js","url":"/assetserver/aee18abf5b39fa7dbdb49e13ea37aa8617a93fca-all.js"},{"name":null,"type":"css","url":"/assetserver/b8ef71fc8f8c937f705d60a54c85dd170cf7e73f-style.css"},{"name":null,"type":"css","url":"/assetserver/342c1e68f950ec6d9432ff00342c66dae6d08a65-main.css"}],"type":"async_block"},"id":"knockout-component-70c6fe03-d699-4bda-84ae-acaed5a970fd","handlers":{"_promises":{"importsLoaded":[function (ko, koPunches) {\n", " ko.punches.enableAll();\n", " ko.bindingHandlers.numericValue = {\n", " init : function(element, valueAccessor, allBindings, data, context) {\n", " var stringified = ko.observable(ko.unwrap(valueAccessor()));\n", " stringified.subscribe(function(value) {\n", " var val = parseFloat(value);\n", " if (!isNaN(val)) {\n", " valueAccessor()(val);\n", " }\n", " })\n", " valueAccessor().subscribe(function(value) {\n", " var str = JSON.stringify(value);\n", " if ((str == "0") && (["-0", "-0."].indexOf(stringified()) >= 0))\n", " return;\n", " if (["null", ""].indexOf(str) >= 0)\n", " return;\n", " stringified(str);\n", " })\n", " ko.applyBindingsToNode(element, { value: stringified, valueUpdate: allBindings.get('valueUpdate')}, context);\n", " }\n", " };\n", " var json_data = JSON.parse("{\\"changes\\":0,\\"value\\":1}");\n", " var self = this;\n", " function AppViewModel() {\n", " for (var key in json_data) {\n", " var el = json_data[key];\n", " this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\n", " }\n", " \n", " [this["displayedvalue"]=ko.computed(function () {return this.value();},this)]\n", " [this["changes"].subscribe((function (val){!(this.valueFromJulia["changes"]) ? (WebIO.setval({"name":"changes","scope":"knockout-component-70c6fe03-d699-4bda-84ae-acaed5a970fd","id":"ob_02","type":"observable"},val)) : undefined; return this.valueFromJulia["changes"]=false}),self),this["value"].subscribe((function (val){!(this.valueFromJulia["value"]) ? (WebIO.setval({"name":"value","scope":"knockout-component-70c6fe03-d699-4bda-84ae-acaed5a970fd","id":"ob_01","type":"observable"},val)) : undefined; return this.valueFromJulia["value"]=false}),self)]\n", " \n", " }\n", " self.model = new AppViewModel();\n", " self.valueFromJulia = {};\n", " for (var key in json_data) {\n", " self.valueFromJulia[key] = false;\n", " }\n", " ko.applyBindings(self.model, self.dom);\n", "}\n", "]},"changes":[(function (val){return (val!=this.model["changes"]()) ? (this.valueFromJulia["changes"]=true, this.model["changes"](val)) : undefined})],"value":[(function (val){return (val!=this.model["value"]()) ? (this.valueFromJulia["value"]=true, this.model["value"](val)) : undefined})]},"systemjs_options":null,"observables":{"changes":{"sync":false,"id":"ob_02","value":0},"value":{"sync":true,"id":"ob_01","value":1}}},"children":[{"props":{"attributes":{"style":"display:flex; justify-content:center; align-items:center;"}},"nodeType":"DOM","type":"node","instanceArgs":{"namespace":"html","tag":"div"},"children":[{"props":{"attributes":{"style":"text-align:right;width:18%"}},"nodeType":"DOM","type":"node","instanceArgs":{"namespace":"html","tag":"div"},"children":[{"props":{"className":"interact ","style":{"padding":"5px 10px 0px 10px"}},"nodeType":"DOM","type":"node","instanceArgs":{"namespace":"html","tag":"label"},"children":[""]}]},{"props":{"attributes":{"style":"flex-grow:1; margin: 0 2%"}},"nodeType":"DOM","type":"node","instanceArgs":{"namespace":"html","tag":"div"},"children":[{"props":{"max":20,"min":1,"attributes":{"type":"range","data-bind":"numericValue: value, valueUpdate: 'input', event: {change : function () {this.changes(this.changes()+1)}}"},"step":1,"className":"slider slider is-fullwidth","style":{}},"nodeType":"DOM","type":"node","instanceArgs":{"namespace":"html","tag":"input"},"children":[]}]},{"props":{"attributes":{"style":"width:18%"}},"nodeType":"DOM","type":"node","instanceArgs":{"namespace":"html","tag":"div"},"children":[{"props":{"attributes":{"data-bind":"text: displayedvalue"}},"nodeType":"DOM","type":"node","instanceArgs":{"namespace":"html","tag":"p"},"children":[]}]}]}]}]},{"props":{"className":"field"},"nodeType":"DOM","type":"node","instanceArgs":{"namespace":"html","tag":"div"},"children":[{"props":{},"nodeType":"Scope","type":"node","instanceArgs":{"imports":{"data":[{"name":"knockout","type":"js","url":"/assetserver/d6df0bcbf61025c952fa7d6260c0502952fc6253-knockout.js"},{"name":"knockout_punches","type":"js","url":"/assetserver/76b9e9b6191c21207f614aefd21121e841930334-knockout_punches.js"},{"name":null,"type":"js","url":"/assetserver/aee18abf5b39fa7dbdb49e13ea37aa8617a93fca-all.js"},{"name":null,"type":"css","url":"/assetserver/b8ef71fc8f8c937f705d60a54c85dd170cf7e73f-style.css"},{"name":null,"type":"css","url":"/assetserver/342c1e68f950ec6d9432ff00342c66dae6d08a65-main.css"}],"type":"async_block"},"id":"knockout-component-fc9402c6-44e1-4d5a-bf3a-e94c96d8f62b","handlers":{"_promises":{"importsLoaded":[function (ko, koPunches) {\n", " ko.punches.enableAll();\n", " ko.bindingHandlers.numericValue = {\n", " init : function(element, valueAccessor, allBindings, data, context) {\n", " var stringified = ko.observable(ko.unwrap(valueAccessor()));\n", " stringified.subscribe(function(value) {\n", " var val = parseFloat(value);\n", " if (!isNaN(val)) {\n", " valueAccessor()(val);\n", " }\n", " })\n", " valueAccessor().subscribe(function(value) {\n", " var str = JSON.stringify(value);\n", " if ((str == "0") && (["-0", "-0."].indexOf(stringified()) >= 0))\n", " return;\n", " if (["null", ""].indexOf(str) >= 0)\n", " return;\n", " stringified(str);\n", " })\n", " ko.applyBindingsToNode(element, { value: stringified, valueUpdate: allBindings.get('valueUpdate')}, context);\n", " }\n", " };\n", " var json_data = JSON.parse("{\\"changes\\":0,\\"value\\":-0.1}");\n", " var self = this;\n", " function AppViewModel() {\n", " for (var key in json_data) {\n", " var el = json_data[key];\n", " this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\n", " }\n", " \n", " [this["displayedvalue"]=ko.computed(function () {return this.value().toPrecision(6);},this)]\n", " [this["changes"].subscribe((function (val){!(this.valueFromJulia["changes"]) ? (WebIO.setval({"name":"changes","scope":"knockout-component-fc9402c6-44e1-4d5a-bf3a-e94c96d8f62b","id":"ob_05","type":"observable"},val)) : undefined; return this.valueFromJulia["changes"]=false}),self),this["value"].subscribe((function (val){!(this.valueFromJulia["value"]) ? (WebIO.setval({"name":"value","scope":"knockout-component-fc9402c6-44e1-4d5a-bf3a-e94c96d8f62b","id":"ob_04","type":"observable"},val)) : undefined; return this.valueFromJulia["value"]=false}),self)]\n", " \n", " }\n", " self.model = new AppViewModel();\n", " self.valueFromJulia = {};\n", " for (var key in json_data) {\n", " self.valueFromJulia[key] = false;\n", " }\n", " ko.applyBindings(self.model, self.dom);\n", "}\n", "]},"changes":[(function (val){return (val!=this.model["changes"]()) ? (this.valueFromJulia["changes"]=true, this.model["changes"](val)) : undefined})],"value":[(function (val){return (val!=this.model["value"]()) ? (this.valueFromJulia["value"]=true, this.model["value"](val)) : undefined})]},"systemjs_options":null,"observables":{"changes":{"sync":false,"id":"ob_05","value":0},"value":{"sync":true,"id":"ob_04","value":-0.1}}},"children":[{"props":{"attributes":{"style":"display:flex; justify-content:center; align-items:center;"}},"nodeType":"DOM","type":"node","instanceArgs":{"namespace":"html","tag":"div"},"children":[{"props":{"attributes":{"style":"text-align:right;width:18%"}},"nodeType":"DOM","type":"node","instanceArgs":{"namespace":"html","tag":"div"},"children":[{"props":{"className":"interact ","style":{"padding":"5px 10px 0px 10px"}},"nodeType":"DOM","type":"node","instanceArgs":{"namespace":"html","tag":"label"},"children":[""]}]},{"props":{"attributes":{"style":"flex-grow:1; margin: 0 2%"}},"nodeType":"DOM","type":"node","instanceArgs":{"namespace":"html","tag":"div"},"children":[{"props":{"max":4.0,"min":-4.0,"attributes":{"type":"range","data-bind":"numericValue: value, valueUpdate: 'input', event: {change : function () {this.changes(this.changes()+1)}}"},"step":0.1,"className":"slider slider is-fullwidth","style":{}},"nodeType":"DOM","type":"node","instanceArgs":{"namespace":"html","tag":"input"},"children":[]}]},{"props":{"attributes":{"style":"width:18%"}},"nodeType":"DOM","type":"node","instanceArgs":{"namespace":"html","tag":"div"},"children":[{"props":{"attributes":{"data-bind":"text: displayedvalue"}},"nodeType":"DOM","type":"node","instanceArgs":{"namespace":"html","tag":"p"},"children":[]}]}]}]}]},{"props":{},"nodeType":"Scope","type":"node","instanceArgs":{"imports":{"data":[],"type":"async_block"},"id":"scope-ee0fc108-11f5-4e47-b6de-f9ae775e4e7a","handlers":{"obs-output":[function (updated_htmlstr) {\n", " var el = this.dom.querySelector("#out");\n", " WebIO.propUtils.setInnerHtml(el, updated_htmlstr);\n", "}]},"systemjs_options":null,"observables":{"obs-output":{"sync":false,"id":"ob_09","value":"<div class='display:none'></div><unsafe-script style='display:none'>\\nWebIO.mount(this.previousSibling,{&quot;props&quot;:{&quot;attributes&quot;:{&quot;style&quot;:&quot;display:flex; justify-content:center; align-items:center;&quot;}},&quot;nodeType&quot;:&quot;DOM&quot;,&quot;type&quot;:&quot;node&quot;,&quot;instanceArgs&quot;:{&quot;namespace&quot;:&quot;html&quot;,&quot;tag&quot;:&quot;div&quot;},&quot;children&quot;:[{&quot;props&quot;:{&quot;setInnerHtml&quot;:&quot;&lt;img src=&#39;data:image/png;base64,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&#39;&gt;&lt;/img&gt;&quot;},&quot;nodeType&quot;:&quot;DOM&quot;,&quot;type&quot;:&quot;node&quot;,&quot;instanceArgs&quot;:{&quot;namespace&quot;:&quot;html&quot;,&quot;tag&quot;:&quot;div&quot;},&quot;children&quot;:[]}]})</unsafe-script>"}}},"children":[{"props":{"id":"out","setInnerHtml":"<div class='display:none'></div><unsafe-script style='display:none'>\\nWebIO.mount(this.previousSibling,{&quot;props&quot;:{&quot;attributes&quot;:{&quot;style&quot;:&quot;display:flex; justify-content:center; align-items:center;&quot;}},&quot;nodeType&quot;:&quot;DOM&quot;,&quot;type&quot;:&quot;node&quot;,&quot;instanceArgs&quot;:{&quot;namespace&quot;:&quot;html&quot;,&quot;tag&quot;:&quot;div&quot;},&quot;children&quot;:[{&quot;props&quot;:{&quot;setInnerHtml&quot;:&quot;&lt;img src=&#39;data:image/png;base64,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&#39;&gt;&lt;/img&gt;&quot;},&quot;nodeType&quot;:&quot;DOM&quot;,&quot;type&quot;:&quot;node&quot;,&quot;instanceArgs&quot;:{&quot;namespace&quot;:&quot;html&quot;,&quot;tag&quot;:&quot;div&quot;},&quot;children&quot;:[]}]})</unsafe-script>"},"nodeType":"DOM","type":"node","instanceArgs":{"namespace":"html","tag":"div"},"children":[]}]}]})\n", "
" ], "text/plain": [ "(div\n", " Widgets.Widget{:slider}(DataStructures.OrderedDict{Symbol,Any}(:changes=>Observables.Observable{Int64}(\"ob_02\", 0, Any[WebIO.SyncCallback(WebIO.Scope(\"knockout-component-70c6fe03-d699-4bda-84ae-acaed5a970fd\", WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :label), Any[nothing], Dict{Symbol,Any}(Pair{Symbol,Any}(:className, \"interact \"),Pair{Symbol,Any}(:style, Dict{Any,Any}(Pair{Any,Any}(:padding, \"5px 10px 0px 10px\")))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"text-align:right;width:18%\"))), 2), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :input), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:max, 20),Pair{Symbol,Any}(:min, 1),Pair{Symbol,Any}(:attributes, Dict{Any,Any}(Pair{Any,Any}(:type, \"range\"),Pair{Any,Any}(Symbol(\"data-bind\"), \"numericValue: value, valueUpdate: 'input', event: {change : function () {this.changes(this.changes()+1)}}\"))),Pair{Symbol,Any}(:step, 1),Pair{Symbol,Any}(:className, \"slider slider is-fullwidth\"),Pair{Symbol,Any}(:style, Dict{Any,Any}())), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"flex-grow:1; margin: 0 2%\"))), 1), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :p), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"data-bind\"=>\"text: displayedvalue\"))), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"width:18%\"))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"display:flex; justify-content:center; align-items:center;\"))), 7), Dict{String,Tuple{Observables.Observable,Union{Bool, Void}}}(Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"changes\", (Observables.Observable{Int64}(#= circular reference @-7 =#), nothing)),Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"value\", (Observables.Observable{Int64}(\"ob_01\", 1, Any[WebIO.SyncCallback(WebIO.Scope(#= circular reference @-7 =#), WebIO.SyncCallback(WebIO.Scope(#= circular reference @-8 =#), WebIO.#37)), Observables.g]), nothing))), Set{String}(), nothing, Any[\"knockout\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout.js\", \"knockout_punches\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout_punches.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/all.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/style.css\", \"/Users/stevenj/.julia/v0.6/InteractBulma/src/../assets/main.css\"], Dict{Any,Any}(Pair{Any,Any}(\"_promises\", Dict{Any,Any}(Pair{Any,Any}(\"importsLoaded\", Any[WebIO.JSString(\"function (ko, koPunches) {\\n ko.punches.enableAll();\\n ko.bindingHandlers.numericValue = {\\n init : function(element, valueAccessor, allBindings, data, context) {\\n var stringified = ko.observable(ko.unwrap(valueAccessor()));\\n stringified.subscribe(function(value) {\\n var val = parseFloat(value);\\n if (!isNaN(val)) {\\n valueAccessor()(val);\\n }\\n })\\n valueAccessor().subscribe(function(value) {\\n var str = JSON.stringify(value);\\n if ((str == \\\"0\\\") && ([\\\"-0\\\", \\\"-0.\\\"].indexOf(stringified()) >= 0))\\n return;\\n if ([\\\"null\\\", \\\"\\\"].indexOf(str) >= 0)\\n return;\\n stringified(str);\\n })\\n ko.applyBindingsToNode(element, { value: stringified, valueUpdate: allBindings.get('valueUpdate')}, context);\\n }\\n };\\n var json_data = JSON.parse(\\\"{\\\\\\\"changes\\\\\\\":0,\\\\\\\"value\\\\\\\":1}\\\");\\n var self = this;\\n function AppViewModel() {\\n for (var key in json_data) {\\n var el = json_data[key];\\n this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\\n }\\n \\n [this[\\\"displayedvalue\\\"]=ko.computed(function () {return this.value();},this)]\\n [this[\\\"changes\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"changes\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"changes\\\",\\\"scope\\\":\\\"knockout-component-70c6fe03-d699-4bda-84ae-acaed5a970fd\\\",\\\"id\\\":\\\"ob_02\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"changes\\\"]=false}),self),this[\\\"value\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"value\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"value\\\",\\\"scope\\\":\\\"knockout-component-70c6fe03-d699-4bda-84ae-acaed5a970fd\\\",\\\"id\\\":\\\"ob_01\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"value\\\"]=false}),self)]\\n \\n }\\n self.model = new AppViewModel();\\n self.valueFromJulia = {};\\n for (var key in json_data) {\\n self.valueFromJulia[key] = false;\\n }\\n ko.applyBindings(self.model, self.dom);\\n}\\n\")]))),Pair{Any,Any}(\"changes\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"changes\\\"]()) ? (this.valueFromJulia[\\\"changes\\\"]=true, this.model[\\\"changes\\\"](val)) : undefined})\")]),Pair{Any,Any}(\"value\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"value\\\"]()) ? (this.valueFromJulia[\\\"value\\\"]=true, this.model[\\\"value\\\"](val)) : undefined})\")])), WebIO.ConnectionPool(Channel{Any}(sz_max:9223372036854775807,sz_curr:3), Set{WebIO.AbstractConnection}(), Channel{WebIO.AbstractConnection}(sz_max:32,sz_curr:0))), WebIO.SyncCallback(WebIO.Scope(\"knockout-component-70c6fe03-d699-4bda-84ae-acaed5a970fd\", WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :label), Any[nothing], Dict{Symbol,Any}(Pair{Symbol,Any}(:className, \"interact \"),Pair{Symbol,Any}(:style, Dict{Any,Any}(Pair{Any,Any}(:padding, \"5px 10px 0px 10px\")))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"text-align:right;width:18%\"))), 2), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :input), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:max, 20),Pair{Symbol,Any}(:min, 1),Pair{Symbol,Any}(:attributes, Dict{Any,Any}(Pair{Any,Any}(:type, \"range\"),Pair{Any,Any}(Symbol(\"data-bind\"), \"numericValue: value, valueUpdate: 'input', event: {change : function () {this.changes(this.changes()+1)}}\"))),Pair{Symbol,Any}(:step, 1),Pair{Symbol,Any}(:className, \"slider slider is-fullwidth\"),Pair{Symbol,Any}(:style, Dict{Any,Any}())), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"flex-grow:1; margin: 0 2%\"))), 1), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :p), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"data-bind\"=>\"text: displayedvalue\"))), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"width:18%\"))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"display:flex; justify-content:center; align-items:center;\"))), 7), Dict{String,Tuple{Observables.Observable,Union{Bool, Void}}}(Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"changes\", (Observables.Observable{Int64}(#= circular reference @-8 =#), nothing)),Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"value\", (Observables.Observable{Int64}(\"ob_01\", 1, Any[WebIO.SyncCallback(WebIO.Scope(#= circular reference @-7 =#), WebIO.SyncCallback(WebIO.Scope(#= circular reference @-8 =#), WebIO.#37)), Observables.g]), nothing))), Set{String}(), nothing, Any[\"knockout\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout.js\", \"knockout_punches\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout_punches.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/all.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/style.css\", \"/Users/stevenj/.julia/v0.6/InteractBulma/src/../assets/main.css\"], Dict{Any,Any}(Pair{Any,Any}(\"_promises\", Dict{Any,Any}(Pair{Any,Any}(\"importsLoaded\", Any[WebIO.JSString(\"function (ko, koPunches) {\\n ko.punches.enableAll();\\n ko.bindingHandlers.numericValue = {\\n init : function(element, valueAccessor, allBindings, data, context) {\\n var stringified = ko.observable(ko.unwrap(valueAccessor()));\\n stringified.subscribe(function(value) {\\n var val = parseFloat(value);\\n if (!isNaN(val)) {\\n valueAccessor()(val);\\n }\\n })\\n valueAccessor().subscribe(function(value) {\\n var str = JSON.stringify(value);\\n if ((str == \\\"0\\\") && ([\\\"-0\\\", \\\"-0.\\\"].indexOf(stringified()) >= 0))\\n return;\\n if ([\\\"null\\\", \\\"\\\"].indexOf(str) >= 0)\\n return;\\n stringified(str);\\n })\\n ko.applyBindingsToNode(element, { value: stringified, valueUpdate: allBindings.get('valueUpdate')}, context);\\n }\\n };\\n var json_data = JSON.parse(\\\"{\\\\\\\"changes\\\\\\\":0,\\\\\\\"value\\\\\\\":1}\\\");\\n var self = this;\\n function AppViewModel() {\\n for (var key in json_data) {\\n var el = json_data[key];\\n this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\\n }\\n \\n [this[\\\"displayedvalue\\\"]=ko.computed(function () {return this.value();},this)]\\n [this[\\\"changes\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"changes\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"changes\\\",\\\"scope\\\":\\\"knockout-component-70c6fe03-d699-4bda-84ae-acaed5a970fd\\\",\\\"id\\\":\\\"ob_02\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"changes\\\"]=false}),self),this[\\\"value\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"value\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"value\\\",\\\"scope\\\":\\\"knockout-component-70c6fe03-d699-4bda-84ae-acaed5a970fd\\\",\\\"id\\\":\\\"ob_01\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"value\\\"]=false}),self)]\\n \\n }\\n self.model = new AppViewModel();\\n self.valueFromJulia = {};\\n for (var key in json_data) {\\n self.valueFromJulia[key] = false;\\n }\\n ko.applyBindings(self.model, self.dom);\\n}\\n\")]))),Pair{Any,Any}(\"changes\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"changes\\\"]()) ? (this.valueFromJulia[\\\"changes\\\"]=true, this.model[\\\"changes\\\"](val)) : undefined})\")]),Pair{Any,Any}(\"value\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"value\\\"]()) ? (this.valueFromJulia[\\\"value\\\"]=true, this.model[\\\"value\\\"](val)) : undefined})\")])), WebIO.ConnectionPool(Channel{Any}(sz_max:9223372036854775807,sz_curr:3), Set{WebIO.AbstractConnection}(), Channel{WebIO.AbstractConnection}(sz_max:32,sz_curr:0))), WebIO.#37))]),:value=>Observables.Observable{Int64}(\"ob_01\", 1, Any[WebIO.SyncCallback(WebIO.Scope(\"knockout-component-70c6fe03-d699-4bda-84ae-acaed5a970fd\", WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :label), Any[nothing], Dict{Symbol,Any}(Pair{Symbol,Any}(:className, \"interact \"),Pair{Symbol,Any}(:style, Dict{Any,Any}(Pair{Any,Any}(:padding, \"5px 10px 0px 10px\")))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"text-align:right;width:18%\"))), 2), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :input), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:max, 20),Pair{Symbol,Any}(:min, 1),Pair{Symbol,Any}(:attributes, Dict{Any,Any}(Pair{Any,Any}(:type, \"range\"),Pair{Any,Any}(Symbol(\"data-bind\"), \"numericValue: value, valueUpdate: 'input', event: {change : function () {this.changes(this.changes()+1)}}\"))),Pair{Symbol,Any}(:step, 1),Pair{Symbol,Any}(:className, \"slider slider is-fullwidth\"),Pair{Symbol,Any}(:style, Dict{Any,Any}())), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"flex-grow:1; margin: 0 2%\"))), 1), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :p), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"data-bind\"=>\"text: displayedvalue\"))), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"width:18%\"))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"display:flex; justify-content:center; align-items:center;\"))), 7), Dict{String,Tuple{Observables.Observable,Union{Bool, Void}}}(Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"changes\", (Observables.Observable{Int64}(\"ob_02\", 0, Any[WebIO.SyncCallback(WebIO.Scope(#= circular reference @-7 =#), WebIO.SyncCallback(WebIO.Scope(#= circular reference @-8 =#), WebIO.#37))]), nothing)),Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"value\", (Observables.Observable{Int64}(#= circular reference @-7 =#), nothing))), Set{String}(), nothing, Any[\"knockout\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout.js\", \"knockout_punches\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout_punches.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/all.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/style.css\", \"/Users/stevenj/.julia/v0.6/InteractBulma/src/../assets/main.css\"], Dict{Any,Any}(Pair{Any,Any}(\"_promises\", Dict{Any,Any}(Pair{Any,Any}(\"importsLoaded\", Any[WebIO.JSString(\"function (ko, koPunches) {\\n ko.punches.enableAll();\\n ko.bindingHandlers.numericValue = {\\n init : function(element, valueAccessor, allBindings, data, context) {\\n var stringified = ko.observable(ko.unwrap(valueAccessor()));\\n stringified.subscribe(function(value) {\\n var val = parseFloat(value);\\n if (!isNaN(val)) {\\n valueAccessor()(val);\\n }\\n })\\n valueAccessor().subscribe(function(value) {\\n var str = JSON.stringify(value);\\n if ((str == \\\"0\\\") && ([\\\"-0\\\", \\\"-0.\\\"].indexOf(stringified()) >= 0))\\n return;\\n if ([\\\"null\\\", \\\"\\\"].indexOf(str) >= 0)\\n return;\\n stringified(str);\\n })\\n ko.applyBindingsToNode(element, { value: stringified, valueUpdate: allBindings.get('valueUpdate')}, context);\\n }\\n };\\n var json_data = JSON.parse(\\\"{\\\\\\\"changes\\\\\\\":0,\\\\\\\"value\\\\\\\":1}\\\");\\n var self = this;\\n function AppViewModel() {\\n for (var key in json_data) {\\n var el = json_data[key];\\n this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\\n }\\n \\n [this[\\\"displayedvalue\\\"]=ko.computed(function () {return this.value();},this)]\\n [this[\\\"changes\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"changes\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"changes\\\",\\\"scope\\\":\\\"knockout-component-70c6fe03-d699-4bda-84ae-acaed5a970fd\\\",\\\"id\\\":\\\"ob_02\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"changes\\\"]=false}),self),this[\\\"value\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"value\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"value\\\",\\\"scope\\\":\\\"knockout-component-70c6fe03-d699-4bda-84ae-acaed5a970fd\\\",\\\"id\\\":\\\"ob_01\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"value\\\"]=false}),self)]\\n \\n }\\n self.model = new AppViewModel();\\n self.valueFromJulia = {};\\n for (var key in json_data) {\\n self.valueFromJulia[key] = false;\\n }\\n ko.applyBindings(self.model, self.dom);\\n}\\n\")]))),Pair{Any,Any}(\"changes\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"changes\\\"]()) ? (this.valueFromJulia[\\\"changes\\\"]=true, this.model[\\\"changes\\\"](val)) : undefined})\")]),Pair{Any,Any}(\"value\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"value\\\"]()) ? (this.valueFromJulia[\\\"value\\\"]=true, this.model[\\\"value\\\"](val)) : undefined})\")])), WebIO.ConnectionPool(Channel{Any}(sz_max:9223372036854775807,sz_curr:3), Set{WebIO.AbstractConnection}(), Channel{WebIO.AbstractConnection}(sz_max:32,sz_curr:0))), WebIO.SyncCallback(WebIO.Scope(\"knockout-component-70c6fe03-d699-4bda-84ae-acaed5a970fd\", WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :label), Any[nothing], Dict{Symbol,Any}(Pair{Symbol,Any}(:className, \"interact \"),Pair{Symbol,Any}(:style, Dict{Any,Any}(Pair{Any,Any}(:padding, \"5px 10px 0px 10px\")))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"text-align:right;width:18%\"))), 2), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :input), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:max, 20),Pair{Symbol,Any}(:min, 1),Pair{Symbol,Any}(:attributes, Dict{Any,Any}(Pair{Any,Any}(:type, \"range\"),Pair{Any,Any}(Symbol(\"data-bind\"), \"numericValue: value, valueUpdate: 'input', event: {change : function () {this.changes(this.changes()+1)}}\"))),Pair{Symbol,Any}(:step, 1),Pair{Symbol,Any}(:className, \"slider slider is-fullwidth\"),Pair{Symbol,Any}(:style, Dict{Any,Any}())), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"flex-grow:1; margin: 0 2%\"))), 1), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :p), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"data-bind\"=>\"text: displayedvalue\"))), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"width:18%\"))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"display:flex; justify-content:center; align-items:center;\"))), 7), Dict{String,Tuple{Observables.Observable,Union{Bool, Void}}}(Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"changes\", (Observables.Observable{Int64}(\"ob_02\", 0, Any[WebIO.SyncCallback(WebIO.Scope(#= circular reference @-7 =#), WebIO.SyncCallback(WebIO.Scope(#= circular reference @-8 =#), WebIO.#37))]), nothing)),Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"value\", (Observables.Observable{Int64}(#= circular reference @-8 =#), nothing))), Set{String}(), nothing, Any[\"knockout\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout.js\", \"knockout_punches\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout_punches.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/all.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/style.css\", \"/Users/stevenj/.julia/v0.6/InteractBulma/src/../assets/main.css\"], Dict{Any,Any}(Pair{Any,Any}(\"_promises\", Dict{Any,Any}(Pair{Any,Any}(\"importsLoaded\", Any[WebIO.JSString(\"function (ko, koPunches) {\\n ko.punches.enableAll();\\n ko.bindingHandlers.numericValue = {\\n init : function(element, valueAccessor, allBindings, data, context) {\\n var stringified = ko.observable(ko.unwrap(valueAccessor()));\\n stringified.subscribe(function(value) {\\n var val = parseFloat(value);\\n if (!isNaN(val)) {\\n valueAccessor()(val);\\n }\\n })\\n valueAccessor().subscribe(function(value) {\\n var str = JSON.stringify(value);\\n if ((str == \\\"0\\\") && ([\\\"-0\\\", \\\"-0.\\\"].indexOf(stringified()) >= 0))\\n return;\\n if ([\\\"null\\\", \\\"\\\"].indexOf(str) >= 0)\\n return;\\n stringified(str);\\n })\\n ko.applyBindingsToNode(element, { value: stringified, valueUpdate: allBindings.get('valueUpdate')}, context);\\n }\\n };\\n var json_data = JSON.parse(\\\"{\\\\\\\"changes\\\\\\\":0,\\\\\\\"value\\\\\\\":1}\\\");\\n var self = this;\\n function AppViewModel() {\\n for (var key in json_data) {\\n var el = json_data[key];\\n this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\\n }\\n \\n [this[\\\"displayedvalue\\\"]=ko.computed(function () {return this.value();},this)]\\n [this[\\\"changes\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"changes\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"changes\\\",\\\"scope\\\":\\\"knockout-component-70c6fe03-d699-4bda-84ae-acaed5a970fd\\\",\\\"id\\\":\\\"ob_02\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"changes\\\"]=false}),self),this[\\\"value\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"value\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"value\\\",\\\"scope\\\":\\\"knockout-component-70c6fe03-d699-4bda-84ae-acaed5a970fd\\\",\\\"id\\\":\\\"ob_01\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"value\\\"]=false}),self)]\\n \\n }\\n self.model = new AppViewModel();\\n self.valueFromJulia = {};\\n for (var key in json_data) {\\n self.valueFromJulia[key] = false;\\n }\\n ko.applyBindings(self.model, self.dom);\\n}\\n\")]))),Pair{Any,Any}(\"changes\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"changes\\\"]()) ? (this.valueFromJulia[\\\"changes\\\"]=true, this.model[\\\"changes\\\"](val)) : undefined})\")]),Pair{Any,Any}(\"value\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"value\\\"]()) ? (this.valueFromJulia[\\\"value\\\"]=true, this.model[\\\"value\\\"](val)) : undefined})\")])), WebIO.ConnectionPool(Channel{Any}(sz_max:9223372036854775807,sz_curr:3), Set{WebIO.AbstractConnection}(), Channel{WebIO.AbstractConnection}(sz_max:32,sz_curr:0))), WebIO.#37)), Observables.g])), Observables.Observable{Int64}(\"ob_01\", 1, Any[WebIO.SyncCallback(WebIO.Scope(\"knockout-component-70c6fe03-d699-4bda-84ae-acaed5a970fd\", WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :label), Any[nothing], Dict{Symbol,Any}(Pair{Symbol,Any}(:className, \"interact \"),Pair{Symbol,Any}(:style, Dict{Any,Any}(Pair{Any,Any}(:padding, \"5px 10px 0px 10px\")))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"text-align:right;width:18%\"))), 2), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :input), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:max, 20),Pair{Symbol,Any}(:min, 1),Pair{Symbol,Any}(:attributes, Dict{Any,Any}(Pair{Any,Any}(:type, \"range\"),Pair{Any,Any}(Symbol(\"data-bind\"), \"numericValue: value, valueUpdate: 'input', event: {change : function () {this.changes(this.changes()+1)}}\"))),Pair{Symbol,Any}(:step, 1),Pair{Symbol,Any}(:className, \"slider slider is-fullwidth\"),Pair{Symbol,Any}(:style, Dict{Any,Any}())), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"flex-grow:1; margin: 0 2%\"))), 1), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :p), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"data-bind\"=>\"text: displayedvalue\"))), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"width:18%\"))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"display:flex; justify-content:center; align-items:center;\"))), 7), Dict{String,Tuple{Observables.Observable,Union{Bool, Void}}}(Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"changes\", (Observables.Observable{Int64}(\"ob_02\", 0, Any[WebIO.SyncCallback(WebIO.Scope(#= circular reference @-7 =#), WebIO.SyncCallback(WebIO.Scope(#= circular reference @-8 =#), WebIO.#37))]), nothing)),Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"value\", (Observables.Observable{Int64}(#= circular reference @-7 =#), nothing))), Set{String}(), nothing, Any[\"knockout\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout.js\", \"knockout_punches\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout_punches.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/all.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/style.css\", \"/Users/stevenj/.julia/v0.6/InteractBulma/src/../assets/main.css\"], Dict{Any,Any}(Pair{Any,Any}(\"_promises\", Dict{Any,Any}(Pair{Any,Any}(\"importsLoaded\", Any[WebIO.JSString(\"function (ko, koPunches) {\\n ko.punches.enableAll();\\n ko.bindingHandlers.numericValue = {\\n init : function(element, valueAccessor, allBindings, data, context) {\\n var stringified = ko.observable(ko.unwrap(valueAccessor()));\\n stringified.subscribe(function(value) {\\n var val = parseFloat(value);\\n if (!isNaN(val)) {\\n valueAccessor()(val);\\n }\\n })\\n valueAccessor().subscribe(function(value) {\\n var str = JSON.stringify(value);\\n if ((str == \\\"0\\\") && ([\\\"-0\\\", \\\"-0.\\\"].indexOf(stringified()) >= 0))\\n return;\\n if ([\\\"null\\\", \\\"\\\"].indexOf(str) >= 0)\\n return;\\n stringified(str);\\n })\\n ko.applyBindingsToNode(element, { value: stringified, valueUpdate: allBindings.get('valueUpdate')}, context);\\n }\\n };\\n var json_data = JSON.parse(\\\"{\\\\\\\"changes\\\\\\\":0,\\\\\\\"value\\\\\\\":1}\\\");\\n var self = this;\\n function AppViewModel() {\\n for (var key in json_data) {\\n var el = json_data[key];\\n this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\\n }\\n \\n [this[\\\"displayedvalue\\\"]=ko.computed(function () {return this.value();},this)]\\n [this[\\\"changes\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"changes\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"changes\\\",\\\"scope\\\":\\\"knockout-component-70c6fe03-d699-4bda-84ae-acaed5a970fd\\\",\\\"id\\\":\\\"ob_02\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"changes\\\"]=false}),self),this[\\\"value\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"value\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"value\\\",\\\"scope\\\":\\\"knockout-component-70c6fe03-d699-4bda-84ae-acaed5a970fd\\\",\\\"id\\\":\\\"ob_01\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"value\\\"]=false}),self)]\\n \\n }\\n self.model = new AppViewModel();\\n self.valueFromJulia = {};\\n for (var key in json_data) {\\n self.valueFromJulia[key] = false;\\n }\\n ko.applyBindings(self.model, self.dom);\\n}\\n\")]))),Pair{Any,Any}(\"changes\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"changes\\\"]()) ? (this.valueFromJulia[\\\"changes\\\"]=true, this.model[\\\"changes\\\"](val)) : undefined})\")]),Pair{Any,Any}(\"value\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"value\\\"]()) ? (this.valueFromJulia[\\\"value\\\"]=true, this.model[\\\"value\\\"](val)) : undefined})\")])), WebIO.ConnectionPool(Channel{Any}(sz_max:9223372036854775807,sz_curr:3), Set{WebIO.AbstractConnection}(), Channel{WebIO.AbstractConnection}(sz_max:32,sz_curr:0))), WebIO.SyncCallback(WebIO.Scope(\"knockout-component-70c6fe03-d699-4bda-84ae-acaed5a970fd\", WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :label), Any[nothing], Dict{Symbol,Any}(Pair{Symbol,Any}(:className, \"interact \"),Pair{Symbol,Any}(:style, Dict{Any,Any}(Pair{Any,Any}(:padding, \"5px 10px 0px 10px\")))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"text-align:right;width:18%\"))), 2), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :input), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:max, 20),Pair{Symbol,Any}(:min, 1),Pair{Symbol,Any}(:attributes, Dict{Any,Any}(Pair{Any,Any}(:type, \"range\"),Pair{Any,Any}(Symbol(\"data-bind\"), \"numericValue: value, valueUpdate: 'input', event: {change : function () {this.changes(this.changes()+1)}}\"))),Pair{Symbol,Any}(:step, 1),Pair{Symbol,Any}(:className, \"slider slider is-fullwidth\"),Pair{Symbol,Any}(:style, Dict{Any,Any}())), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"flex-grow:1; margin: 0 2%\"))), 1), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :p), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"data-bind\"=>\"text: displayedvalue\"))), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"width:18%\"))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"display:flex; justify-content:center; align-items:center;\"))), 7), Dict{String,Tuple{Observables.Observable,Union{Bool, Void}}}(Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"changes\", (Observables.Observable{Int64}(\"ob_02\", 0, Any[WebIO.SyncCallback(WebIO.Scope(#= circular reference @-7 =#), WebIO.SyncCallback(WebIO.Scope(#= circular reference @-8 =#), WebIO.#37))]), nothing)),Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"value\", (Observables.Observable{Int64}(#= circular reference @-8 =#), nothing))), Set{String}(), nothing, Any[\"knockout\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout.js\", \"knockout_punches\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout_punches.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/all.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/style.css\", \"/Users/stevenj/.julia/v0.6/InteractBulma/src/../assets/main.css\"], Dict{Any,Any}(Pair{Any,Any}(\"_promises\", Dict{Any,Any}(Pair{Any,Any}(\"importsLoaded\", Any[WebIO.JSString(\"function (ko, koPunches) {\\n ko.punches.enableAll();\\n ko.bindingHandlers.numericValue = {\\n init : function(element, valueAccessor, allBindings, data, context) {\\n var stringified = ko.observable(ko.unwrap(valueAccessor()));\\n stringified.subscribe(function(value) {\\n var val = parseFloat(value);\\n if (!isNaN(val)) {\\n valueAccessor()(val);\\n }\\n })\\n valueAccessor().subscribe(function(value) {\\n var str = JSON.stringify(value);\\n if ((str == \\\"0\\\") && ([\\\"-0\\\", \\\"-0.\\\"].indexOf(stringified()) >= 0))\\n return;\\n if ([\\\"null\\\", \\\"\\\"].indexOf(str) >= 0)\\n return;\\n stringified(str);\\n })\\n ko.applyBindingsToNode(element, { value: stringified, valueUpdate: allBindings.get('valueUpdate')}, context);\\n }\\n };\\n var json_data = JSON.parse(\\\"{\\\\\\\"changes\\\\\\\":0,\\\\\\\"value\\\\\\\":1}\\\");\\n var self = this;\\n function AppViewModel() {\\n for (var key in json_data) {\\n var el = json_data[key];\\n this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\\n }\\n \\n [this[\\\"displayedvalue\\\"]=ko.computed(function () {return this.value();},this)]\\n [this[\\\"changes\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"changes\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"changes\\\",\\\"scope\\\":\\\"knockout-component-70c6fe03-d699-4bda-84ae-acaed5a970fd\\\",\\\"id\\\":\\\"ob_02\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"changes\\\"]=false}),self),this[\\\"value\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"value\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"value\\\",\\\"scope\\\":\\\"knockout-component-70c6fe03-d699-4bda-84ae-acaed5a970fd\\\",\\\"id\\\":\\\"ob_01\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"value\\\"]=false}),self)]\\n \\n }\\n self.model = new AppViewModel();\\n self.valueFromJulia = {};\\n for (var key in json_data) {\\n self.valueFromJulia[key] = false;\\n }\\n ko.applyBindings(self.model, self.dom);\\n}\\n\")]))),Pair{Any,Any}(\"changes\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"changes\\\"]()) ? (this.valueFromJulia[\\\"changes\\\"]=true, this.model[\\\"changes\\\"](val)) : undefined})\")]),Pair{Any,Any}(\"value\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"value\\\"]()) ? (this.valueFromJulia[\\\"value\\\"]=true, this.model[\\\"value\\\"](val)) : undefined})\")])), WebIO.ConnectionPool(Channel{Any}(sz_max:9223372036854775807,sz_curr:3), Set{WebIO.AbstractConnection}(), Channel{WebIO.AbstractConnection}(sz_max:32,sz_curr:0))), WebIO.#37)), Observables.g]), Observables.Observable{Int64}(\"ob_01\", 1, Any[WebIO.SyncCallback(WebIO.Scope(\"knockout-component-70c6fe03-d699-4bda-84ae-acaed5a970fd\", WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :label), Any[nothing], Dict{Symbol,Any}(Pair{Symbol,Any}(:className, \"interact \"),Pair{Symbol,Any}(:style, Dict{Any,Any}(Pair{Any,Any}(:padding, \"5px 10px 0px 10px\")))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"text-align:right;width:18%\"))), 2), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :input), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:max, 20),Pair{Symbol,Any}(:min, 1),Pair{Symbol,Any}(:attributes, Dict{Any,Any}(Pair{Any,Any}(:type, \"range\"),Pair{Any,Any}(Symbol(\"data-bind\"), \"numericValue: value, valueUpdate: 'input', event: {change : function () {this.changes(this.changes()+1)}}\"))),Pair{Symbol,Any}(:step, 1),Pair{Symbol,Any}(:className, \"slider slider is-fullwidth\"),Pair{Symbol,Any}(:style, Dict{Any,Any}())), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"flex-grow:1; margin: 0 2%\"))), 1), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :p), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"data-bind\"=>\"text: displayedvalue\"))), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"width:18%\"))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"display:flex; justify-content:center; align-items:center;\"))), 7), Dict{String,Tuple{Observables.Observable,Union{Bool, Void}}}(Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"changes\", (Observables.Observable{Int64}(\"ob_02\", 0, Any[WebIO.SyncCallback(WebIO.Scope(#= circular reference @-7 =#), WebIO.SyncCallback(WebIO.Scope(#= circular reference @-8 =#), WebIO.#37))]), nothing)),Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"value\", (Observables.Observable{Int64}(#= circular reference @-7 =#), nothing))), Set{String}(), nothing, Any[\"knockout\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout.js\", \"knockout_punches\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout_punches.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/all.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/style.css\", \"/Users/stevenj/.julia/v0.6/InteractBulma/src/../assets/main.css\"], Dict{Any,Any}(Pair{Any,Any}(\"_promises\", Dict{Any,Any}(Pair{Any,Any}(\"importsLoaded\", Any[WebIO.JSString(\"function (ko, koPunches) {\\n ko.punches.enableAll();\\n ko.bindingHandlers.numericValue = {\\n init : function(element, valueAccessor, allBindings, data, context) {\\n var stringified = ko.observable(ko.unwrap(valueAccessor()));\\n stringified.subscribe(function(value) {\\n var val = parseFloat(value);\\n if (!isNaN(val)) {\\n valueAccessor()(val);\\n }\\n })\\n valueAccessor().subscribe(function(value) {\\n var str = JSON.stringify(value);\\n if ((str == \\\"0\\\") && ([\\\"-0\\\", \\\"-0.\\\"].indexOf(stringified()) >= 0))\\n return;\\n if ([\\\"null\\\", \\\"\\\"].indexOf(str) >= 0)\\n return;\\n stringified(str);\\n })\\n ko.applyBindingsToNode(element, { value: stringified, valueUpdate: allBindings.get('valueUpdate')}, context);\\n }\\n };\\n var json_data = JSON.parse(\\\"{\\\\\\\"changes\\\\\\\":0,\\\\\\\"value\\\\\\\":1}\\\");\\n var self = this;\\n function AppViewModel() {\\n for (var key in json_data) {\\n var el = json_data[key];\\n this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\\n }\\n \\n [this[\\\"displayedvalue\\\"]=ko.computed(function () {return this.value();},this)]\\n [this[\\\"changes\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"changes\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"changes\\\",\\\"scope\\\":\\\"knockout-component-70c6fe03-d699-4bda-84ae-acaed5a970fd\\\",\\\"id\\\":\\\"ob_02\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"changes\\\"]=false}),self),this[\\\"value\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"value\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"value\\\",\\\"scope\\\":\\\"knockout-component-70c6fe03-d699-4bda-84ae-acaed5a970fd\\\",\\\"id\\\":\\\"ob_01\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"value\\\"]=false}),self)]\\n \\n }\\n self.model = new AppViewModel();\\n self.valueFromJulia = {};\\n for (var key in json_data) {\\n self.valueFromJulia[key] = false;\\n }\\n ko.applyBindings(self.model, self.dom);\\n}\\n\")]))),Pair{Any,Any}(\"changes\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"changes\\\"]()) ? (this.valueFromJulia[\\\"changes\\\"]=true, this.model[\\\"changes\\\"](val)) : undefined})\")]),Pair{Any,Any}(\"value\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"value\\\"]()) ? (this.valueFromJulia[\\\"value\\\"]=true, this.model[\\\"value\\\"](val)) : undefined})\")])), WebIO.ConnectionPool(Channel{Any}(sz_max:9223372036854775807,sz_curr:3), Set{WebIO.AbstractConnection}(), Channel{WebIO.AbstractConnection}(sz_max:32,sz_curr:0))), WebIO.SyncCallback(WebIO.Scope(\"knockout-component-70c6fe03-d699-4bda-84ae-acaed5a970fd\", WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :label), Any[nothing], Dict{Symbol,Any}(Pair{Symbol,Any}(:className, \"interact \"),Pair{Symbol,Any}(:style, Dict{Any,Any}(Pair{Any,Any}(:padding, \"5px 10px 0px 10px\")))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"text-align:right;width:18%\"))), 2), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :input), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:max, 20),Pair{Symbol,Any}(:min, 1),Pair{Symbol,Any}(:attributes, Dict{Any,Any}(Pair{Any,Any}(:type, \"range\"),Pair{Any,Any}(Symbol(\"data-bind\"), \"numericValue: value, valueUpdate: 'input', event: {change : function () {this.changes(this.changes()+1)}}\"))),Pair{Symbol,Any}(:step, 1),Pair{Symbol,Any}(:className, \"slider slider is-fullwidth\"),Pair{Symbol,Any}(:style, Dict{Any,Any}())), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"flex-grow:1; margin: 0 2%\"))), 1), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :p), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"data-bind\"=>\"text: displayedvalue\"))), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"width:18%\"))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"display:flex; justify-content:center; align-items:center;\"))), 7), Dict{String,Tuple{Observables.Observable,Union{Bool, Void}}}(Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"changes\", (Observables.Observable{Int64}(\"ob_02\", 0, Any[WebIO.SyncCallback(WebIO.Scope(#= circular reference @-7 =#), WebIO.SyncCallback(WebIO.Scope(#= circular reference @-8 =#), WebIO.#37))]), nothing)),Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"value\", (Observables.Observable{Int64}(#= circular reference @-8 =#), nothing))), Set{String}(), nothing, Any[\"knockout\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout.js\", \"knockout_punches\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout_punches.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/all.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/style.css\", \"/Users/stevenj/.julia/v0.6/InteractBulma/src/../assets/main.css\"], Dict{Any,Any}(Pair{Any,Any}(\"_promises\", Dict{Any,Any}(Pair{Any,Any}(\"importsLoaded\", Any[WebIO.JSString(\"function (ko, koPunches) {\\n ko.punches.enableAll();\\n ko.bindingHandlers.numericValue = {\\n init : function(element, valueAccessor, allBindings, data, context) {\\n var stringified = ko.observable(ko.unwrap(valueAccessor()));\\n stringified.subscribe(function(value) {\\n var val = parseFloat(value);\\n if (!isNaN(val)) {\\n valueAccessor()(val);\\n }\\n })\\n valueAccessor().subscribe(function(value) {\\n var str = JSON.stringify(value);\\n if ((str == \\\"0\\\") && ([\\\"-0\\\", \\\"-0.\\\"].indexOf(stringified()) >= 0))\\n return;\\n if ([\\\"null\\\", \\\"\\\"].indexOf(str) >= 0)\\n return;\\n stringified(str);\\n })\\n ko.applyBindingsToNode(element, { value: stringified, valueUpdate: allBindings.get('valueUpdate')}, context);\\n }\\n };\\n var json_data = JSON.parse(\\\"{\\\\\\\"changes\\\\\\\":0,\\\\\\\"value\\\\\\\":1}\\\");\\n var self = this;\\n function AppViewModel() {\\n for (var key in json_data) {\\n var el = json_data[key];\\n this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\\n }\\n \\n [this[\\\"displayedvalue\\\"]=ko.computed(function () {return this.value();},this)]\\n [this[\\\"changes\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"changes\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"changes\\\",\\\"scope\\\":\\\"knockout-component-70c6fe03-d699-4bda-84ae-acaed5a970fd\\\",\\\"id\\\":\\\"ob_02\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"changes\\\"]=false}),self),this[\\\"value\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"value\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"value\\\",\\\"scope\\\":\\\"knockout-component-70c6fe03-d699-4bda-84ae-acaed5a970fd\\\",\\\"id\\\":\\\"ob_01\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"value\\\"]=false}),self)]\\n \\n }\\n self.model = new AppViewModel();\\n self.valueFromJulia = {};\\n for (var key in json_data) {\\n self.valueFromJulia[key] = false;\\n }\\n ko.applyBindings(self.model, self.dom);\\n}\\n\")]))),Pair{Any,Any}(\"changes\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"changes\\\"]()) ? (this.valueFromJulia[\\\"changes\\\"]=true, this.model[\\\"changes\\\"](val)) : undefined})\")]),Pair{Any,Any}(\"value\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"value\\\"]()) ? (this.valueFromJulia[\\\"value\\\"]=true, this.model[\\\"value\\\"](val)) : undefined})\")])), WebIO.ConnectionPool(Channel{Any}(sz_max:9223372036854775807,sz_curr:3), Set{WebIO.AbstractConnection}(), Channel{WebIO.AbstractConnection}(sz_max:32,sz_curr:0))), WebIO.#37)), Observables.g]), WebIO.Scope(\"knockout-component-70c6fe03-d699-4bda-84ae-acaed5a970fd\", WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :label), Any[nothing], Dict{Symbol,Any}(Pair{Symbol,Any}(:className, \"interact \"),Pair{Symbol,Any}(:style, Dict{Any,Any}(Pair{Any,Any}(:padding, \"5px 10px 0px 10px\")))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"text-align:right;width:18%\"))), 2), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :input), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:max, 20),Pair{Symbol,Any}(:min, 1),Pair{Symbol,Any}(:attributes, Dict{Any,Any}(Pair{Any,Any}(:type, \"range\"),Pair{Any,Any}(Symbol(\"data-bind\"), \"numericValue: value, valueUpdate: 'input', event: {change : function () {this.changes(this.changes()+1)}}\"))),Pair{Symbol,Any}(:step, 1),Pair{Symbol,Any}(:className, \"slider slider is-fullwidth\"),Pair{Symbol,Any}(:style, Dict{Any,Any}())), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"flex-grow:1; margin: 0 2%\"))), 1), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :p), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"data-bind\"=>\"text: displayedvalue\"))), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"width:18%\"))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"display:flex; justify-content:center; align-items:center;\"))), 7), Dict{String,Tuple{Observables.Observable,Union{Bool, Void}}}(Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"changes\", (Observables.Observable{Int64}(\"ob_02\", 0, Any[WebIO.SyncCallback(WebIO.Scope(#= circular reference @-7 =#), WebIO.SyncCallback(WebIO.Scope(#= circular reference @-8 =#), WebIO.#37))]), nothing)),Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"value\", (Observables.Observable{Int64}(\"ob_01\", 1, Any[WebIO.SyncCallback(WebIO.Scope(#= circular reference @-7 =#), WebIO.SyncCallback(WebIO.Scope(#= circular reference @-8 =#), WebIO.#37)), Observables.g]), nothing))), Set{String}(), nothing, Any[\"knockout\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout.js\", \"knockout_punches\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout_punches.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/all.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/style.css\", \"/Users/stevenj/.julia/v0.6/InteractBulma/src/../assets/main.css\"], Dict{Any,Any}(Pair{Any,Any}(\"_promises\", Dict{Any,Any}(Pair{Any,Any}(\"importsLoaded\", Any[WebIO.JSString(\"function (ko, koPunches) {\\n ko.punches.enableAll();\\n ko.bindingHandlers.numericValue = {\\n init : function(element, valueAccessor, allBindings, data, context) {\\n var stringified = ko.observable(ko.unwrap(valueAccessor()));\\n stringified.subscribe(function(value) {\\n var val = parseFloat(value);\\n if (!isNaN(val)) {\\n valueAccessor()(val);\\n }\\n })\\n valueAccessor().subscribe(function(value) {\\n var str = JSON.stringify(value);\\n if ((str == \\\"0\\\") && ([\\\"-0\\\", \\\"-0.\\\"].indexOf(stringified()) >= 0))\\n return;\\n if ([\\\"null\\\", \\\"\\\"].indexOf(str) >= 0)\\n return;\\n stringified(str);\\n })\\n ko.applyBindingsToNode(element, { value: stringified, valueUpdate: allBindings.get('valueUpdate')}, context);\\n }\\n };\\n var json_data = JSON.parse(\\\"{\\\\\\\"changes\\\\\\\":0,\\\\\\\"value\\\\\\\":1}\\\");\\n var self = this;\\n function AppViewModel() {\\n for (var key in json_data) {\\n var el = json_data[key];\\n this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\\n }\\n \\n [this[\\\"displayedvalue\\\"]=ko.computed(function () {return this.value();},this)]\\n [this[\\\"changes\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"changes\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"changes\\\",\\\"scope\\\":\\\"knockout-component-70c6fe03-d699-4bda-84ae-acaed5a970fd\\\",\\\"id\\\":\\\"ob_02\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"changes\\\"]=false}),self),this[\\\"value\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"value\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"value\\\",\\\"scope\\\":\\\"knockout-component-70c6fe03-d699-4bda-84ae-acaed5a970fd\\\",\\\"id\\\":\\\"ob_01\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"value\\\"]=false}),self)]\\n \\n }\\n self.model = new AppViewModel();\\n self.valueFromJulia = {};\\n for (var key in json_data) {\\n self.valueFromJulia[key] = false;\\n }\\n ko.applyBindings(self.model, self.dom);\\n}\\n\")]))),Pair{Any,Any}(\"changes\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"changes\\\"]()) ? (this.valueFromJulia[\\\"changes\\\"]=true, this.model[\\\"changes\\\"](val)) : undefined})\")]),Pair{Any,Any}(\"value\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"value\\\"]()) ? (this.valueFromJulia[\\\"value\\\"]=true, this.model[\\\"value\\\"](val)) : undefined})\")])), WebIO.ConnectionPool(Channel{Any}(sz_max:9223372036854775807,sz_curr:3), Set{WebIO.AbstractConnection}(), Channel{WebIO.AbstractConnection}(sz_max:32,sz_curr:0))), Widgets.#4, Base.#55)\n", " Widgets.Widget{:slider}(DataStructures.OrderedDict{Symbol,Any}(:changes=>Observables.Observable{Int64}(\"ob_05\", 0, Any[WebIO.SyncCallback(WebIO.Scope(\"knockout-component-fc9402c6-44e1-4d5a-bf3a-e94c96d8f62b\", WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :label), Any[nothing], Dict{Symbol,Any}(Pair{Symbol,Any}(:className, \"interact \"),Pair{Symbol,Any}(:style, Dict{Any,Any}(Pair{Any,Any}(:padding, \"5px 10px 0px 10px\")))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"text-align:right;width:18%\"))), 2), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :input), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:max, 4.0),Pair{Symbol,Any}(:min, -4.0),Pair{Symbol,Any}(:attributes, Dict{Any,Any}(Pair{Any,Any}(:type, \"range\"),Pair{Any,Any}(Symbol(\"data-bind\"), \"numericValue: value, valueUpdate: 'input', event: {change : function () {this.changes(this.changes()+1)}}\"))),Pair{Symbol,Any}(:step, 0.1),Pair{Symbol,Any}(:className, \"slider slider is-fullwidth\"),Pair{Symbol,Any}(:style, Dict{Any,Any}())), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"flex-grow:1; margin: 0 2%\"))), 1), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :p), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"data-bind\"=>\"text: displayedvalue\"))), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"width:18%\"))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"display:flex; justify-content:center; align-items:center;\"))), 7), Dict{String,Tuple{Observables.Observable,Union{Bool, Void}}}(Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"changes\", (Observables.Observable{Int64}(#= circular reference @-7 =#), nothing)),Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"value\", (Observables.Observable{Float64}(\"ob_04\", -0.1, Any[WebIO.SyncCallback(WebIO.Scope(#= circular reference @-7 =#), WebIO.SyncCallback(WebIO.Scope(#= circular reference @-8 =#), WebIO.#37)), Observables.g]), nothing))), Set{String}(), nothing, Any[\"knockout\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout.js\", \"knockout_punches\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout_punches.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/all.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/style.css\", \"/Users/stevenj/.julia/v0.6/InteractBulma/src/../assets/main.css\"], Dict{Any,Any}(Pair{Any,Any}(\"_promises\", Dict{Any,Any}(Pair{Any,Any}(\"importsLoaded\", Any[WebIO.JSString(\"function (ko, koPunches) {\\n ko.punches.enableAll();\\n ko.bindingHandlers.numericValue = {\\n init : function(element, valueAccessor, allBindings, data, context) {\\n var stringified = ko.observable(ko.unwrap(valueAccessor()));\\n stringified.subscribe(function(value) {\\n var val = parseFloat(value);\\n if (!isNaN(val)) {\\n valueAccessor()(val);\\n }\\n })\\n valueAccessor().subscribe(function(value) {\\n var str = JSON.stringify(value);\\n if ((str == \\\"0\\\") && ([\\\"-0\\\", \\\"-0.\\\"].indexOf(stringified()) >= 0))\\n return;\\n if ([\\\"null\\\", \\\"\\\"].indexOf(str) >= 0)\\n return;\\n stringified(str);\\n })\\n ko.applyBindingsToNode(element, { value: stringified, valueUpdate: allBindings.get('valueUpdate')}, context);\\n }\\n };\\n var json_data = JSON.parse(\\\"{\\\\\\\"changes\\\\\\\":0,\\\\\\\"value\\\\\\\":-0.1}\\\");\\n var self = this;\\n function AppViewModel() {\\n for (var key in json_data) {\\n var el = json_data[key];\\n this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\\n }\\n \\n [this[\\\"displayedvalue\\\"]=ko.computed(function () {return this.value().toPrecision(6);},this)]\\n [this[\\\"changes\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"changes\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"changes\\\",\\\"scope\\\":\\\"knockout-component-fc9402c6-44e1-4d5a-bf3a-e94c96d8f62b\\\",\\\"id\\\":\\\"ob_05\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"changes\\\"]=false}),self),this[\\\"value\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"value\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"value\\\",\\\"scope\\\":\\\"knockout-component-fc9402c6-44e1-4d5a-bf3a-e94c96d8f62b\\\",\\\"id\\\":\\\"ob_04\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"value\\\"]=false}),self)]\\n \\n }\\n self.model = new AppViewModel();\\n self.valueFromJulia = {};\\n for (var key in json_data) {\\n self.valueFromJulia[key] = false;\\n }\\n ko.applyBindings(self.model, self.dom);\\n}\\n\")]))),Pair{Any,Any}(\"changes\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"changes\\\"]()) ? (this.valueFromJulia[\\\"changes\\\"]=true, this.model[\\\"changes\\\"](val)) : undefined})\")]),Pair{Any,Any}(\"value\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"value\\\"]()) ? (this.valueFromJulia[\\\"value\\\"]=true, this.model[\\\"value\\\"](val)) : undefined})\")])), WebIO.ConnectionPool(Channel{Any}(sz_max:9223372036854775807,sz_curr:3), Set{WebIO.AbstractConnection}(), Channel{WebIO.AbstractConnection}(sz_max:32,sz_curr:0))), WebIO.SyncCallback(WebIO.Scope(\"knockout-component-fc9402c6-44e1-4d5a-bf3a-e94c96d8f62b\", WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :label), Any[nothing], Dict{Symbol,Any}(Pair{Symbol,Any}(:className, \"interact \"),Pair{Symbol,Any}(:style, Dict{Any,Any}(Pair{Any,Any}(:padding, \"5px 10px 0px 10px\")))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"text-align:right;width:18%\"))), 2), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :input), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:max, 4.0),Pair{Symbol,Any}(:min, -4.0),Pair{Symbol,Any}(:attributes, Dict{Any,Any}(Pair{Any,Any}(:type, \"range\"),Pair{Any,Any}(Symbol(\"data-bind\"), \"numericValue: value, valueUpdate: 'input', event: {change : function () {this.changes(this.changes()+1)}}\"))),Pair{Symbol,Any}(:step, 0.1),Pair{Symbol,Any}(:className, \"slider slider is-fullwidth\"),Pair{Symbol,Any}(:style, Dict{Any,Any}())), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"flex-grow:1; margin: 0 2%\"))), 1), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :p), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"data-bind\"=>\"text: displayedvalue\"))), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"width:18%\"))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"display:flex; justify-content:center; align-items:center;\"))), 7), Dict{String,Tuple{Observables.Observable,Union{Bool, Void}}}(Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"changes\", (Observables.Observable{Int64}(#= circular reference @-8 =#), nothing)),Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"value\", (Observables.Observable{Float64}(\"ob_04\", -0.1, Any[WebIO.SyncCallback(WebIO.Scope(#= circular reference @-7 =#), WebIO.SyncCallback(WebIO.Scope(#= circular reference @-8 =#), WebIO.#37)), Observables.g]), nothing))), Set{String}(), nothing, Any[\"knockout\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout.js\", \"knockout_punches\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout_punches.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/all.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/style.css\", \"/Users/stevenj/.julia/v0.6/InteractBulma/src/../assets/main.css\"], Dict{Any,Any}(Pair{Any,Any}(\"_promises\", Dict{Any,Any}(Pair{Any,Any}(\"importsLoaded\", Any[WebIO.JSString(\"function (ko, koPunches) {\\n ko.punches.enableAll();\\n ko.bindingHandlers.numericValue = {\\n init : function(element, valueAccessor, allBindings, data, context) {\\n var stringified = ko.observable(ko.unwrap(valueAccessor()));\\n stringified.subscribe(function(value) {\\n var val = parseFloat(value);\\n if (!isNaN(val)) {\\n valueAccessor()(val);\\n }\\n })\\n valueAccessor().subscribe(function(value) {\\n var str = JSON.stringify(value);\\n if ((str == \\\"0\\\") && ([\\\"-0\\\", \\\"-0.\\\"].indexOf(stringified()) >= 0))\\n return;\\n if ([\\\"null\\\", \\\"\\\"].indexOf(str) >= 0)\\n return;\\n stringified(str);\\n })\\n ko.applyBindingsToNode(element, { value: stringified, valueUpdate: allBindings.get('valueUpdate')}, context);\\n }\\n };\\n var json_data = JSON.parse(\\\"{\\\\\\\"changes\\\\\\\":0,\\\\\\\"value\\\\\\\":-0.1}\\\");\\n var self = this;\\n function AppViewModel() {\\n for (var key in json_data) {\\n var el = json_data[key];\\n this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\\n }\\n \\n [this[\\\"displayedvalue\\\"]=ko.computed(function () {return this.value().toPrecision(6);},this)]\\n [this[\\\"changes\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"changes\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"changes\\\",\\\"scope\\\":\\\"knockout-component-fc9402c6-44e1-4d5a-bf3a-e94c96d8f62b\\\",\\\"id\\\":\\\"ob_05\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"changes\\\"]=false}),self),this[\\\"value\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"value\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"value\\\",\\\"scope\\\":\\\"knockout-component-fc9402c6-44e1-4d5a-bf3a-e94c96d8f62b\\\",\\\"id\\\":\\\"ob_04\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"value\\\"]=false}),self)]\\n \\n }\\n self.model = new AppViewModel();\\n self.valueFromJulia = {};\\n for (var key in json_data) {\\n self.valueFromJulia[key] = false;\\n }\\n ko.applyBindings(self.model, self.dom);\\n}\\n\")]))),Pair{Any,Any}(\"changes\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"changes\\\"]()) ? (this.valueFromJulia[\\\"changes\\\"]=true, this.model[\\\"changes\\\"](val)) : undefined})\")]),Pair{Any,Any}(\"value\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"value\\\"]()) ? (this.valueFromJulia[\\\"value\\\"]=true, this.model[\\\"value\\\"](val)) : undefined})\")])), WebIO.ConnectionPool(Channel{Any}(sz_max:9223372036854775807,sz_curr:3), Set{WebIO.AbstractConnection}(), Channel{WebIO.AbstractConnection}(sz_max:32,sz_curr:0))), WebIO.#37))]),:value=>Observables.Observable{Float64}(\"ob_04\", -0.1, Any[WebIO.SyncCallback(WebIO.Scope(\"knockout-component-fc9402c6-44e1-4d5a-bf3a-e94c96d8f62b\", WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :label), Any[nothing], Dict{Symbol,Any}(Pair{Symbol,Any}(:className, \"interact \"),Pair{Symbol,Any}(:style, Dict{Any,Any}(Pair{Any,Any}(:padding, \"5px 10px 0px 10px\")))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"text-align:right;width:18%\"))), 2), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :input), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:max, 4.0),Pair{Symbol,Any}(:min, -4.0),Pair{Symbol,Any}(:attributes, Dict{Any,Any}(Pair{Any,Any}(:type, \"range\"),Pair{Any,Any}(Symbol(\"data-bind\"), \"numericValue: value, valueUpdate: 'input', event: {change : function () {this.changes(this.changes()+1)}}\"))),Pair{Symbol,Any}(:step, 0.1),Pair{Symbol,Any}(:className, \"slider slider is-fullwidth\"),Pair{Symbol,Any}(:style, Dict{Any,Any}())), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"flex-grow:1; margin: 0 2%\"))), 1), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :p), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"data-bind\"=>\"text: displayedvalue\"))), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"width:18%\"))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"display:flex; justify-content:center; align-items:center;\"))), 7), Dict{String,Tuple{Observables.Observable,Union{Bool, Void}}}(Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"changes\", (Observables.Observable{Int64}(\"ob_05\", 0, Any[WebIO.SyncCallback(WebIO.Scope(#= circular reference @-7 =#), WebIO.SyncCallback(WebIO.Scope(#= circular reference @-8 =#), WebIO.#37))]), nothing)),Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"value\", (Observables.Observable{Float64}(#= circular reference @-7 =#), nothing))), Set{String}(), nothing, Any[\"knockout\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout.js\", \"knockout_punches\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout_punches.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/all.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/style.css\", \"/Users/stevenj/.julia/v0.6/InteractBulma/src/../assets/main.css\"], Dict{Any,Any}(Pair{Any,Any}(\"_promises\", Dict{Any,Any}(Pair{Any,Any}(\"importsLoaded\", Any[WebIO.JSString(\"function (ko, koPunches) {\\n ko.punches.enableAll();\\n ko.bindingHandlers.numericValue = {\\n init : function(element, valueAccessor, allBindings, data, context) {\\n var stringified = ko.observable(ko.unwrap(valueAccessor()));\\n stringified.subscribe(function(value) {\\n var val = parseFloat(value);\\n if (!isNaN(val)) {\\n valueAccessor()(val);\\n }\\n })\\n valueAccessor().subscribe(function(value) {\\n var str = JSON.stringify(value);\\n if ((str == \\\"0\\\") && ([\\\"-0\\\", \\\"-0.\\\"].indexOf(stringified()) >= 0))\\n return;\\n if ([\\\"null\\\", \\\"\\\"].indexOf(str) >= 0)\\n return;\\n stringified(str);\\n })\\n ko.applyBindingsToNode(element, { value: stringified, valueUpdate: allBindings.get('valueUpdate')}, context);\\n }\\n };\\n var json_data = JSON.parse(\\\"{\\\\\\\"changes\\\\\\\":0,\\\\\\\"value\\\\\\\":-0.1}\\\");\\n var self = this;\\n function AppViewModel() {\\n for (var key in json_data) {\\n var el = json_data[key];\\n this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\\n }\\n \\n [this[\\\"displayedvalue\\\"]=ko.computed(function () {return this.value().toPrecision(6);},this)]\\n [this[\\\"changes\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"changes\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"changes\\\",\\\"scope\\\":\\\"knockout-component-fc9402c6-44e1-4d5a-bf3a-e94c96d8f62b\\\",\\\"id\\\":\\\"ob_05\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"changes\\\"]=false}),self),this[\\\"value\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"value\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"value\\\",\\\"scope\\\":\\\"knockout-component-fc9402c6-44e1-4d5a-bf3a-e94c96d8f62b\\\",\\\"id\\\":\\\"ob_04\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"value\\\"]=false}),self)]\\n \\n }\\n self.model = new AppViewModel();\\n self.valueFromJulia = {};\\n for (var key in json_data) {\\n self.valueFromJulia[key] = false;\\n }\\n ko.applyBindings(self.model, self.dom);\\n}\\n\")]))),Pair{Any,Any}(\"changes\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"changes\\\"]()) ? (this.valueFromJulia[\\\"changes\\\"]=true, this.model[\\\"changes\\\"](val)) : undefined})\")]),Pair{Any,Any}(\"value\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"value\\\"]()) ? (this.valueFromJulia[\\\"value\\\"]=true, this.model[\\\"value\\\"](val)) : undefined})\")])), WebIO.ConnectionPool(Channel{Any}(sz_max:9223372036854775807,sz_curr:3), Set{WebIO.AbstractConnection}(), Channel{WebIO.AbstractConnection}(sz_max:32,sz_curr:0))), WebIO.SyncCallback(WebIO.Scope(\"knockout-component-fc9402c6-44e1-4d5a-bf3a-e94c96d8f62b\", WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :label), Any[nothing], Dict{Symbol,Any}(Pair{Symbol,Any}(:className, \"interact \"),Pair{Symbol,Any}(:style, Dict{Any,Any}(Pair{Any,Any}(:padding, \"5px 10px 0px 10px\")))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"text-align:right;width:18%\"))), 2), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :input), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:max, 4.0),Pair{Symbol,Any}(:min, -4.0),Pair{Symbol,Any}(:attributes, Dict{Any,Any}(Pair{Any,Any}(:type, \"range\"),Pair{Any,Any}(Symbol(\"data-bind\"), \"numericValue: value, valueUpdate: 'input', event: {change : function () {this.changes(this.changes()+1)}}\"))),Pair{Symbol,Any}(:step, 0.1),Pair{Symbol,Any}(:className, \"slider slider is-fullwidth\"),Pair{Symbol,Any}(:style, Dict{Any,Any}())), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"flex-grow:1; margin: 0 2%\"))), 1), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :p), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"data-bind\"=>\"text: displayedvalue\"))), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"width:18%\"))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"display:flex; justify-content:center; align-items:center;\"))), 7), Dict{String,Tuple{Observables.Observable,Union{Bool, Void}}}(Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"changes\", (Observables.Observable{Int64}(\"ob_05\", 0, Any[WebIO.SyncCallback(WebIO.Scope(#= circular reference @-7 =#), WebIO.SyncCallback(WebIO.Scope(#= circular reference @-8 =#), WebIO.#37))]), nothing)),Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"value\", (Observables.Observable{Float64}(#= circular reference @-8 =#), nothing))), Set{String}(), nothing, Any[\"knockout\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout.js\", \"knockout_punches\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout_punches.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/all.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/style.css\", \"/Users/stevenj/.julia/v0.6/InteractBulma/src/../assets/main.css\"], Dict{Any,Any}(Pair{Any,Any}(\"_promises\", Dict{Any,Any}(Pair{Any,Any}(\"importsLoaded\", Any[WebIO.JSString(\"function (ko, koPunches) {\\n ko.punches.enableAll();\\n ko.bindingHandlers.numericValue = {\\n init : function(element, valueAccessor, allBindings, data, context) {\\n var stringified = ko.observable(ko.unwrap(valueAccessor()));\\n stringified.subscribe(function(value) {\\n var val = parseFloat(value);\\n if (!isNaN(val)) {\\n valueAccessor()(val);\\n }\\n })\\n valueAccessor().subscribe(function(value) {\\n var str = JSON.stringify(value);\\n if ((str == \\\"0\\\") && ([\\\"-0\\\", \\\"-0.\\\"].indexOf(stringified()) >= 0))\\n return;\\n if ([\\\"null\\\", \\\"\\\"].indexOf(str) >= 0)\\n return;\\n stringified(str);\\n })\\n ko.applyBindingsToNode(element, { value: stringified, valueUpdate: allBindings.get('valueUpdate')}, context);\\n }\\n };\\n var json_data = JSON.parse(\\\"{\\\\\\\"changes\\\\\\\":0,\\\\\\\"value\\\\\\\":-0.1}\\\");\\n var self = this;\\n function AppViewModel() {\\n for (var key in json_data) {\\n var el = json_data[key];\\n this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\\n }\\n \\n [this[\\\"displayedvalue\\\"]=ko.computed(function () {return this.value().toPrecision(6);},this)]\\n [this[\\\"changes\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"changes\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"changes\\\",\\\"scope\\\":\\\"knockout-component-fc9402c6-44e1-4d5a-bf3a-e94c96d8f62b\\\",\\\"id\\\":\\\"ob_05\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"changes\\\"]=false}),self),this[\\\"value\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"value\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"value\\\",\\\"scope\\\":\\\"knockout-component-fc9402c6-44e1-4d5a-bf3a-e94c96d8f62b\\\",\\\"id\\\":\\\"ob_04\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"value\\\"]=false}),self)]\\n \\n }\\n self.model = new AppViewModel();\\n self.valueFromJulia = {};\\n for (var key in json_data) {\\n self.valueFromJulia[key] = false;\\n }\\n ko.applyBindings(self.model, self.dom);\\n}\\n\")]))),Pair{Any,Any}(\"changes\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"changes\\\"]()) ? (this.valueFromJulia[\\\"changes\\\"]=true, this.model[\\\"changes\\\"](val)) : undefined})\")]),Pair{Any,Any}(\"value\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"value\\\"]()) ? (this.valueFromJulia[\\\"value\\\"]=true, this.model[\\\"value\\\"](val)) : undefined})\")])), WebIO.ConnectionPool(Channel{Any}(sz_max:9223372036854775807,sz_curr:3), Set{WebIO.AbstractConnection}(), Channel{WebIO.AbstractConnection}(sz_max:32,sz_curr:0))), WebIO.#37)), Observables.g])), Observables.Observable{Float64}(\"ob_04\", -0.1, Any[WebIO.SyncCallback(WebIO.Scope(\"knockout-component-fc9402c6-44e1-4d5a-bf3a-e94c96d8f62b\", WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :label), Any[nothing], Dict{Symbol,Any}(Pair{Symbol,Any}(:className, \"interact \"),Pair{Symbol,Any}(:style, Dict{Any,Any}(Pair{Any,Any}(:padding, \"5px 10px 0px 10px\")))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"text-align:right;width:18%\"))), 2), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :input), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:max, 4.0),Pair{Symbol,Any}(:min, -4.0),Pair{Symbol,Any}(:attributes, Dict{Any,Any}(Pair{Any,Any}(:type, \"range\"),Pair{Any,Any}(Symbol(\"data-bind\"), \"numericValue: value, valueUpdate: 'input', event: {change : function () {this.changes(this.changes()+1)}}\"))),Pair{Symbol,Any}(:step, 0.1),Pair{Symbol,Any}(:className, \"slider slider is-fullwidth\"),Pair{Symbol,Any}(:style, Dict{Any,Any}())), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"flex-grow:1; margin: 0 2%\"))), 1), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :p), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"data-bind\"=>\"text: displayedvalue\"))), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"width:18%\"))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"display:flex; justify-content:center; align-items:center;\"))), 7), Dict{String,Tuple{Observables.Observable,Union{Bool, Void}}}(Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"changes\", (Observables.Observable{Int64}(\"ob_05\", 0, Any[WebIO.SyncCallback(WebIO.Scope(#= circular reference @-7 =#), WebIO.SyncCallback(WebIO.Scope(#= circular reference @-8 =#), WebIO.#37))]), nothing)),Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"value\", (Observables.Observable{Float64}(#= circular reference @-7 =#), nothing))), Set{String}(), nothing, Any[\"knockout\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout.js\", \"knockout_punches\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout_punches.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/all.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/style.css\", \"/Users/stevenj/.julia/v0.6/InteractBulma/src/../assets/main.css\"], Dict{Any,Any}(Pair{Any,Any}(\"_promises\", Dict{Any,Any}(Pair{Any,Any}(\"importsLoaded\", Any[WebIO.JSString(\"function (ko, koPunches) {\\n ko.punches.enableAll();\\n ko.bindingHandlers.numericValue = {\\n init : function(element, valueAccessor, allBindings, data, context) {\\n var stringified = ko.observable(ko.unwrap(valueAccessor()));\\n stringified.subscribe(function(value) {\\n var val = parseFloat(value);\\n if (!isNaN(val)) {\\n valueAccessor()(val);\\n }\\n })\\n valueAccessor().subscribe(function(value) {\\n var str = JSON.stringify(value);\\n if ((str == \\\"0\\\") && ([\\\"-0\\\", \\\"-0.\\\"].indexOf(stringified()) >= 0))\\n return;\\n if ([\\\"null\\\", \\\"\\\"].indexOf(str) >= 0)\\n return;\\n stringified(str);\\n })\\n ko.applyBindingsToNode(element, { value: stringified, valueUpdate: allBindings.get('valueUpdate')}, context);\\n }\\n };\\n var json_data = JSON.parse(\\\"{\\\\\\\"changes\\\\\\\":0,\\\\\\\"value\\\\\\\":-0.1}\\\");\\n var self = this;\\n function AppViewModel() {\\n for (var key in json_data) {\\n var el = json_data[key];\\n this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\\n }\\n \\n [this[\\\"displayedvalue\\\"]=ko.computed(function () {return this.value().toPrecision(6);},this)]\\n [this[\\\"changes\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"changes\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"changes\\\",\\\"scope\\\":\\\"knockout-component-fc9402c6-44e1-4d5a-bf3a-e94c96d8f62b\\\",\\\"id\\\":\\\"ob_05\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"changes\\\"]=false}),self),this[\\\"value\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"value\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"value\\\",\\\"scope\\\":\\\"knockout-component-fc9402c6-44e1-4d5a-bf3a-e94c96d8f62b\\\",\\\"id\\\":\\\"ob_04\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"value\\\"]=false}),self)]\\n \\n }\\n self.model = new AppViewModel();\\n self.valueFromJulia = {};\\n for (var key in json_data) {\\n self.valueFromJulia[key] = false;\\n }\\n ko.applyBindings(self.model, self.dom);\\n}\\n\")]))),Pair{Any,Any}(\"changes\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"changes\\\"]()) ? (this.valueFromJulia[\\\"changes\\\"]=true, this.model[\\\"changes\\\"](val)) : undefined})\")]),Pair{Any,Any}(\"value\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"value\\\"]()) ? (this.valueFromJulia[\\\"value\\\"]=true, this.model[\\\"value\\\"](val)) : undefined})\")])), WebIO.ConnectionPool(Channel{Any}(sz_max:9223372036854775807,sz_curr:3), Set{WebIO.AbstractConnection}(), Channel{WebIO.AbstractConnection}(sz_max:32,sz_curr:0))), WebIO.SyncCallback(WebIO.Scope(\"knockout-component-fc9402c6-44e1-4d5a-bf3a-e94c96d8f62b\", WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :label), Any[nothing], Dict{Symbol,Any}(Pair{Symbol,Any}(:className, \"interact \"),Pair{Symbol,Any}(:style, Dict{Any,Any}(Pair{Any,Any}(:padding, \"5px 10px 0px 10px\")))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"text-align:right;width:18%\"))), 2), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :input), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:max, 4.0),Pair{Symbol,Any}(:min, -4.0),Pair{Symbol,Any}(:attributes, Dict{Any,Any}(Pair{Any,Any}(:type, \"range\"),Pair{Any,Any}(Symbol(\"data-bind\"), \"numericValue: value, valueUpdate: 'input', event: {change : function () {this.changes(this.changes()+1)}}\"))),Pair{Symbol,Any}(:step, 0.1),Pair{Symbol,Any}(:className, \"slider slider is-fullwidth\"),Pair{Symbol,Any}(:style, Dict{Any,Any}())), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"flex-grow:1; margin: 0 2%\"))), 1), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :p), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"data-bind\"=>\"text: displayedvalue\"))), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"width:18%\"))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"display:flex; justify-content:center; align-items:center;\"))), 7), Dict{String,Tuple{Observables.Observable,Union{Bool, Void}}}(Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"changes\", (Observables.Observable{Int64}(\"ob_05\", 0, Any[WebIO.SyncCallback(WebIO.Scope(#= circular reference @-7 =#), WebIO.SyncCallback(WebIO.Scope(#= circular reference @-8 =#), WebIO.#37))]), nothing)),Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"value\", (Observables.Observable{Float64}(#= circular reference @-8 =#), nothing))), Set{String}(), nothing, Any[\"knockout\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout.js\", \"knockout_punches\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout_punches.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/all.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/style.css\", \"/Users/stevenj/.julia/v0.6/InteractBulma/src/../assets/main.css\"], Dict{Any,Any}(Pair{Any,Any}(\"_promises\", Dict{Any,Any}(Pair{Any,Any}(\"importsLoaded\", Any[WebIO.JSString(\"function (ko, koPunches) {\\n ko.punches.enableAll();\\n ko.bindingHandlers.numericValue = {\\n init : function(element, valueAccessor, allBindings, data, context) {\\n var stringified = ko.observable(ko.unwrap(valueAccessor()));\\n stringified.subscribe(function(value) {\\n var val = parseFloat(value);\\n if (!isNaN(val)) {\\n valueAccessor()(val);\\n }\\n })\\n valueAccessor().subscribe(function(value) {\\n var str = JSON.stringify(value);\\n if ((str == \\\"0\\\") && ([\\\"-0\\\", \\\"-0.\\\"].indexOf(stringified()) >= 0))\\n return;\\n if ([\\\"null\\\", \\\"\\\"].indexOf(str) >= 0)\\n return;\\n stringified(str);\\n })\\n ko.applyBindingsToNode(element, { value: stringified, valueUpdate: allBindings.get('valueUpdate')}, context);\\n }\\n };\\n var json_data = JSON.parse(\\\"{\\\\\\\"changes\\\\\\\":0,\\\\\\\"value\\\\\\\":-0.1}\\\");\\n var self = this;\\n function AppViewModel() {\\n for (var key in json_data) {\\n var el = json_data[key];\\n this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\\n }\\n \\n [this[\\\"displayedvalue\\\"]=ko.computed(function () {return this.value().toPrecision(6);},this)]\\n [this[\\\"changes\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"changes\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"changes\\\",\\\"scope\\\":\\\"knockout-component-fc9402c6-44e1-4d5a-bf3a-e94c96d8f62b\\\",\\\"id\\\":\\\"ob_05\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"changes\\\"]=false}),self),this[\\\"value\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"value\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"value\\\",\\\"scope\\\":\\\"knockout-component-fc9402c6-44e1-4d5a-bf3a-e94c96d8f62b\\\",\\\"id\\\":\\\"ob_04\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"value\\\"]=false}),self)]\\n \\n }\\n self.model = new AppViewModel();\\n self.valueFromJulia = {};\\n for (var key in json_data) {\\n self.valueFromJulia[key] = false;\\n }\\n ko.applyBindings(self.model, self.dom);\\n}\\n\")]))),Pair{Any,Any}(\"changes\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"changes\\\"]()) ? (this.valueFromJulia[\\\"changes\\\"]=true, this.model[\\\"changes\\\"](val)) : undefined})\")]),Pair{Any,Any}(\"value\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"value\\\"]()) ? (this.valueFromJulia[\\\"value\\\"]=true, this.model[\\\"value\\\"](val)) : undefined})\")])), WebIO.ConnectionPool(Channel{Any}(sz_max:9223372036854775807,sz_curr:3), Set{WebIO.AbstractConnection}(), Channel{WebIO.AbstractConnection}(sz_max:32,sz_curr:0))), WebIO.#37)), Observables.g]), Observables.Observable{Float64}(\"ob_04\", -0.1, Any[WebIO.SyncCallback(WebIO.Scope(\"knockout-component-fc9402c6-44e1-4d5a-bf3a-e94c96d8f62b\", WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :label), Any[nothing], Dict{Symbol,Any}(Pair{Symbol,Any}(:className, \"interact \"),Pair{Symbol,Any}(:style, Dict{Any,Any}(Pair{Any,Any}(:padding, \"5px 10px 0px 10px\")))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"text-align:right;width:18%\"))), 2), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :input), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:max, 4.0),Pair{Symbol,Any}(:min, -4.0),Pair{Symbol,Any}(:attributes, Dict{Any,Any}(Pair{Any,Any}(:type, \"range\"),Pair{Any,Any}(Symbol(\"data-bind\"), \"numericValue: value, valueUpdate: 'input', event: {change : function () {this.changes(this.changes()+1)}}\"))),Pair{Symbol,Any}(:step, 0.1),Pair{Symbol,Any}(:className, \"slider slider is-fullwidth\"),Pair{Symbol,Any}(:style, Dict{Any,Any}())), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"flex-grow:1; margin: 0 2%\"))), 1), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :p), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"data-bind\"=>\"text: displayedvalue\"))), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"width:18%\"))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"display:flex; justify-content:center; align-items:center;\"))), 7), Dict{String,Tuple{Observables.Observable,Union{Bool, Void}}}(Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"changes\", (Observables.Observable{Int64}(\"ob_05\", 0, Any[WebIO.SyncCallback(WebIO.Scope(#= circular reference @-7 =#), WebIO.SyncCallback(WebIO.Scope(#= circular reference @-8 =#), WebIO.#37))]), nothing)),Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"value\", (Observables.Observable{Float64}(#= circular reference @-7 =#), nothing))), Set{String}(), nothing, Any[\"knockout\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout.js\", \"knockout_punches\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout_punches.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/all.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/style.css\", \"/Users/stevenj/.julia/v0.6/InteractBulma/src/../assets/main.css\"], Dict{Any,Any}(Pair{Any,Any}(\"_promises\", Dict{Any,Any}(Pair{Any,Any}(\"importsLoaded\", Any[WebIO.JSString(\"function (ko, koPunches) {\\n ko.punches.enableAll();\\n ko.bindingHandlers.numericValue = {\\n init : function(element, valueAccessor, allBindings, data, context) {\\n var stringified = ko.observable(ko.unwrap(valueAccessor()));\\n stringified.subscribe(function(value) {\\n var val = parseFloat(value);\\n if (!isNaN(val)) {\\n valueAccessor()(val);\\n }\\n })\\n valueAccessor().subscribe(function(value) {\\n var str = JSON.stringify(value);\\n if ((str == \\\"0\\\") && ([\\\"-0\\\", \\\"-0.\\\"].indexOf(stringified()) >= 0))\\n return;\\n if ([\\\"null\\\", \\\"\\\"].indexOf(str) >= 0)\\n return;\\n stringified(str);\\n })\\n ko.applyBindingsToNode(element, { value: stringified, valueUpdate: allBindings.get('valueUpdate')}, context);\\n }\\n };\\n var json_data = JSON.parse(\\\"{\\\\\\\"changes\\\\\\\":0,\\\\\\\"value\\\\\\\":-0.1}\\\");\\n var self = this;\\n function AppViewModel() {\\n for (var key in json_data) {\\n var el = json_data[key];\\n this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\\n }\\n \\n [this[\\\"displayedvalue\\\"]=ko.computed(function () {return this.value().toPrecision(6);},this)]\\n [this[\\\"changes\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"changes\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"changes\\\",\\\"scope\\\":\\\"knockout-component-fc9402c6-44e1-4d5a-bf3a-e94c96d8f62b\\\",\\\"id\\\":\\\"ob_05\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"changes\\\"]=false}),self),this[\\\"value\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"value\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"value\\\",\\\"scope\\\":\\\"knockout-component-fc9402c6-44e1-4d5a-bf3a-e94c96d8f62b\\\",\\\"id\\\":\\\"ob_04\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"value\\\"]=false}),self)]\\n \\n }\\n self.model = new AppViewModel();\\n self.valueFromJulia = {};\\n for (var key in json_data) {\\n self.valueFromJulia[key] = false;\\n }\\n ko.applyBindings(self.model, self.dom);\\n}\\n\")]))),Pair{Any,Any}(\"changes\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"changes\\\"]()) ? (this.valueFromJulia[\\\"changes\\\"]=true, this.model[\\\"changes\\\"](val)) : undefined})\")]),Pair{Any,Any}(\"value\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"value\\\"]()) ? (this.valueFromJulia[\\\"value\\\"]=true, this.model[\\\"value\\\"](val)) : undefined})\")])), WebIO.ConnectionPool(Channel{Any}(sz_max:9223372036854775807,sz_curr:3), Set{WebIO.AbstractConnection}(), Channel{WebIO.AbstractConnection}(sz_max:32,sz_curr:0))), WebIO.SyncCallback(WebIO.Scope(\"knockout-component-fc9402c6-44e1-4d5a-bf3a-e94c96d8f62b\", WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :label), Any[nothing], Dict{Symbol,Any}(Pair{Symbol,Any}(:className, \"interact \"),Pair{Symbol,Any}(:style, Dict{Any,Any}(Pair{Any,Any}(:padding, \"5px 10px 0px 10px\")))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"text-align:right;width:18%\"))), 2), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :input), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:max, 4.0),Pair{Symbol,Any}(:min, -4.0),Pair{Symbol,Any}(:attributes, Dict{Any,Any}(Pair{Any,Any}(:type, \"range\"),Pair{Any,Any}(Symbol(\"data-bind\"), \"numericValue: value, valueUpdate: 'input', event: {change : function () {this.changes(this.changes()+1)}}\"))),Pair{Symbol,Any}(:step, 0.1),Pair{Symbol,Any}(:className, \"slider slider is-fullwidth\"),Pair{Symbol,Any}(:style, Dict{Any,Any}())), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"flex-grow:1; margin: 0 2%\"))), 1), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :p), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"data-bind\"=>\"text: displayedvalue\"))), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"width:18%\"))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"display:flex; justify-content:center; align-items:center;\"))), 7), Dict{String,Tuple{Observables.Observable,Union{Bool, Void}}}(Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"changes\", (Observables.Observable{Int64}(\"ob_05\", 0, Any[WebIO.SyncCallback(WebIO.Scope(#= circular reference @-7 =#), WebIO.SyncCallback(WebIO.Scope(#= circular reference @-8 =#), WebIO.#37))]), nothing)),Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"value\", (Observables.Observable{Float64}(#= circular reference @-8 =#), nothing))), Set{String}(), nothing, Any[\"knockout\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout.js\", \"knockout_punches\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout_punches.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/all.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/style.css\", \"/Users/stevenj/.julia/v0.6/InteractBulma/src/../assets/main.css\"], Dict{Any,Any}(Pair{Any,Any}(\"_promises\", Dict{Any,Any}(Pair{Any,Any}(\"importsLoaded\", Any[WebIO.JSString(\"function (ko, koPunches) {\\n ko.punches.enableAll();\\n ko.bindingHandlers.numericValue = {\\n init : function(element, valueAccessor, allBindings, data, context) {\\n var stringified = ko.observable(ko.unwrap(valueAccessor()));\\n stringified.subscribe(function(value) {\\n var val = parseFloat(value);\\n if (!isNaN(val)) {\\n valueAccessor()(val);\\n }\\n })\\n valueAccessor().subscribe(function(value) {\\n var str = JSON.stringify(value);\\n if ((str == \\\"0\\\") && ([\\\"-0\\\", \\\"-0.\\\"].indexOf(stringified()) >= 0))\\n return;\\n if ([\\\"null\\\", \\\"\\\"].indexOf(str) >= 0)\\n return;\\n stringified(str);\\n })\\n ko.applyBindingsToNode(element, { value: stringified, valueUpdate: allBindings.get('valueUpdate')}, context);\\n }\\n };\\n var json_data = JSON.parse(\\\"{\\\\\\\"changes\\\\\\\":0,\\\\\\\"value\\\\\\\":-0.1}\\\");\\n var self = this;\\n function AppViewModel() {\\n for (var key in json_data) {\\n var el = json_data[key];\\n this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\\n }\\n \\n [this[\\\"displayedvalue\\\"]=ko.computed(function () {return this.value().toPrecision(6);},this)]\\n [this[\\\"changes\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"changes\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"changes\\\",\\\"scope\\\":\\\"knockout-component-fc9402c6-44e1-4d5a-bf3a-e94c96d8f62b\\\",\\\"id\\\":\\\"ob_05\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"changes\\\"]=false}),self),this[\\\"value\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"value\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"value\\\",\\\"scope\\\":\\\"knockout-component-fc9402c6-44e1-4d5a-bf3a-e94c96d8f62b\\\",\\\"id\\\":\\\"ob_04\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"value\\\"]=false}),self)]\\n \\n }\\n self.model = new AppViewModel();\\n self.valueFromJulia = {};\\n for (var key in json_data) {\\n self.valueFromJulia[key] = false;\\n }\\n ko.applyBindings(self.model, self.dom);\\n}\\n\")]))),Pair{Any,Any}(\"changes\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"changes\\\"]()) ? (this.valueFromJulia[\\\"changes\\\"]=true, this.model[\\\"changes\\\"](val)) : undefined})\")]),Pair{Any,Any}(\"value\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"value\\\"]()) ? (this.valueFromJulia[\\\"value\\\"]=true, this.model[\\\"value\\\"](val)) : undefined})\")])), WebIO.ConnectionPool(Channel{Any}(sz_max:9223372036854775807,sz_curr:3), Set{WebIO.AbstractConnection}(), Channel{WebIO.AbstractConnection}(sz_max:32,sz_curr:0))), WebIO.#37)), Observables.g]), WebIO.Scope(\"knockout-component-fc9402c6-44e1-4d5a-bf3a-e94c96d8f62b\", WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :label), Any[nothing], Dict{Symbol,Any}(Pair{Symbol,Any}(:className, \"interact \"),Pair{Symbol,Any}(:style, Dict{Any,Any}(Pair{Any,Any}(:padding, \"5px 10px 0px 10px\")))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"text-align:right;width:18%\"))), 2), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :input), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:max, 4.0),Pair{Symbol,Any}(:min, -4.0),Pair{Symbol,Any}(:attributes, Dict{Any,Any}(Pair{Any,Any}(:type, \"range\"),Pair{Any,Any}(Symbol(\"data-bind\"), \"numericValue: value, valueUpdate: 'input', event: {change : function () {this.changes(this.changes()+1)}}\"))),Pair{Symbol,Any}(:step, 0.1),Pair{Symbol,Any}(:className, \"slider slider is-fullwidth\"),Pair{Symbol,Any}(:style, Dict{Any,Any}())), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"flex-grow:1; margin: 0 2%\"))), 1), WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :p), Any[], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"data-bind\"=>\"text: displayedvalue\"))), 0)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"width:18%\"))), 1)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"display:flex; justify-content:center; align-items:center;\"))), 7), Dict{String,Tuple{Observables.Observable,Union{Bool, Void}}}(Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"changes\", (Observables.Observable{Int64}(\"ob_05\", 0, Any[WebIO.SyncCallback(WebIO.Scope(#= circular reference @-7 =#), WebIO.SyncCallback(WebIO.Scope(#= circular reference @-8 =#), WebIO.#37))]), nothing)),Pair{String,Tuple{Observables.Observable,Union{Bool, Void}}}(\"value\", (Observables.Observable{Float64}(\"ob_04\", -0.1, Any[WebIO.SyncCallback(WebIO.Scope(#= circular reference @-7 =#), WebIO.SyncCallback(WebIO.Scope(#= circular reference @-8 =#), WebIO.#37)), Observables.g]), nothing))), Set{String}(), nothing, Any[\"knockout\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout.js\", \"knockout_punches\"=>\"/Users/stevenj/.julia/v0.6/Knockout/src/../assets/knockout_punches.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/all.js\", \"/Users/stevenj/.julia/v0.6/InteractBase/src/../assets/style.css\", \"/Users/stevenj/.julia/v0.6/InteractBulma/src/../assets/main.css\"], Dict{Any,Any}(Pair{Any,Any}(\"_promises\", Dict{Any,Any}(Pair{Any,Any}(\"importsLoaded\", Any[WebIO.JSString(\"function (ko, koPunches) {\\n ko.punches.enableAll();\\n ko.bindingHandlers.numericValue = {\\n init : function(element, valueAccessor, allBindings, data, context) {\\n var stringified = ko.observable(ko.unwrap(valueAccessor()));\\n stringified.subscribe(function(value) {\\n var val = parseFloat(value);\\n if (!isNaN(val)) {\\n valueAccessor()(val);\\n }\\n })\\n valueAccessor().subscribe(function(value) {\\n var str = JSON.stringify(value);\\n if ((str == \\\"0\\\") && ([\\\"-0\\\", \\\"-0.\\\"].indexOf(stringified()) >= 0))\\n return;\\n if ([\\\"null\\\", \\\"\\\"].indexOf(str) >= 0)\\n return;\\n stringified(str);\\n })\\n ko.applyBindingsToNode(element, { value: stringified, valueUpdate: allBindings.get('valueUpdate')}, context);\\n }\\n };\\n var json_data = JSON.parse(\\\"{\\\\\\\"changes\\\\\\\":0,\\\\\\\"value\\\\\\\":-0.1}\\\");\\n var self = this;\\n function AppViewModel() {\\n for (var key in json_data) {\\n var el = json_data[key];\\n this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\\n }\\n \\n [this[\\\"displayedvalue\\\"]=ko.computed(function () {return this.value().toPrecision(6);},this)]\\n [this[\\\"changes\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"changes\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"changes\\\",\\\"scope\\\":\\\"knockout-component-fc9402c6-44e1-4d5a-bf3a-e94c96d8f62b\\\",\\\"id\\\":\\\"ob_05\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"changes\\\"]=false}),self),this[\\\"value\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"value\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"value\\\",\\\"scope\\\":\\\"knockout-component-fc9402c6-44e1-4d5a-bf3a-e94c96d8f62b\\\",\\\"id\\\":\\\"ob_04\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"value\\\"]=false}),self)]\\n \\n }\\n self.model = new AppViewModel();\\n self.valueFromJulia = {};\\n for (var key in json_data) {\\n self.valueFromJulia[key] = false;\\n }\\n ko.applyBindings(self.model, self.dom);\\n}\\n\")]))),Pair{Any,Any}(\"changes\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"changes\\\"]()) ? (this.valueFromJulia[\\\"changes\\\"]=true, this.model[\\\"changes\\\"](val)) : undefined})\")]),Pair{Any,Any}(\"value\", Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"value\\\"]()) ? (this.valueFromJulia[\\\"value\\\"]=true, this.model[\\\"value\\\"](val)) : undefined})\")])), WebIO.ConnectionPool(Channel{Any}(sz_max:9223372036854775807,sz_curr:3), Set{WebIO.AbstractConnection}(), Channel{WebIO.AbstractConnection}(sz_max:32,sz_curr:0))), Widgets.#4, Base.#55)\n", " Observables.Observable{Any}(\"ob_08\", WebIO.Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[PyPlot.Figure(PyObject
)], Dict{Symbol,Any}(Pair{Symbol,Any}(:attributes, Dict(\"style\"=>\"display:flex; justify-content:center; align-items:center;\"))), 1), Any[]))" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fig = figure()\n", "xs = linspace(-5,5,1000)\n", "@manipulate for step in slider(1:20, value=1), start in slider(-4:0.1:4, value=-0.1)\n", " withfig(fig) do\n", " x = start\n", " local xprev, f, f′\n", " for i = 1:step\n", " xprev = x\n", " f = 2cos(x) - x + x^2/10\n", " f′ = -2sin(x) - 1 + 2x/10\n", " x = x - f/f′\n", " end\n", " plot(xs, 0*xs, \"k-\")\n", " plot(xs, 2cos.(xs) - xs + xs.^2/10, \"b-\")\n", " newf = 2cos(x) - x + x^2/10\n", " plot([xprev, x], [f, 0.0], \"ro\")\n", " plot(x, newf, \"bo\")\n", " plot(xs, f + f′ * (xs - xprev), \"r--\")\n", " plot([x, x], [0, newf], \"k--\")\n", " xlim(minimum(xs), maximum(xs))\n", " ylim(-5,4)\n", " title(\"Newton step $step: f($x) = $newf\")\n", " end\n", "end" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you start it anywhere near a root of $f(x)$, Newton’s method can converge extremely quickly: **asymptotically, it doubles the number of accurate digits on each step**.\n", "\n", "However, if you start it far from a root, the convergence can be hard to predict, and it may not even converge at all (it can oscillate forever around a local minimum).\n", "\n", "Still, in many practical applications, there are ways to get a good initial guess for Newton, and then it is an extremely effective way to solve nonlinear equations to high accuracy." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## General Multidimensional Newton\n", "\n", "The general case of the multidimensional Newton algorithm is as follows. We are solving:\n", "\n", "$$\n", "\\begin{pmatrix}\n", "f_1(x_1, \\ldots, x_n) \\\\\n", "f_2(x_1, \\ldots, x_n) \\\\\n", "\\vdots \\\\\n", "f_n(x_1, \\ldots, x_n)\n", "\\end{pmatrix}\n", "= f(x) = 0\n", "$$\n", "\n", "for $x \\in \\mathbb{R}^n$ and $f(x) \\in \\mathbb{R}^n$: $n$ (possibly nonlinear but differentiable) equations in $n$ unknowns.\n", "\n", "Given a guess $x$, we want to find an improved guess $x + \\delta$ for $\\delta \\in \\mathbb{R}^n$. We do this by Taylor-expanding $f$ around $x$ to first order (linear):\n", "\n", "$$\n", "f(x + \\delta) \\approx f(x) + J(x) \\, \\delta = 0\n", "$$\n", "\n", "where $J$ is the $n \\times n$ Jacobian matrix with entries $\\boxed{ J_{ij} = \\partial f_i / \\partial x_j }$, i.e.\n", "\n", "$$\n", "J = \\begin{pmatrix}\n", "\\frac{\\partial f_1}{\\partial x_1} & \\frac{\\partial f_1}{\\partial x_2} & \\cdots \\\\\n", "\\frac{\\partial f_2}{\\partial x_1} & \\frac{\\partial f_2}{\\partial x_2} & \\cdots \\\\\n", "\\vdots & \\vdots & \\ddots\n", "\\end{pmatrix} \\; .\n", "$$\n", "\n", "Hence, we solve the *linear* equation\n", "\n", "$$\n", "J(x) \\, \\delta = -f(x)\n", "$$\n", "\n", "for the Newton step $\\delta$, obtaining (if $J$ is invertible):\n", "\n", "$$\n", "\\boxed{ x + \\delta = x - J(x)^{-1} f(x) }\n", "$$\n", "\n", "Some things to remember:\n", "\n", "* Newton converts $n$ *nonlinear* equations into repeated solution of $n \\times n$ *linear* equations.\n", "\n", "* When solving nonlinear equations, coming up with a good initial guess is a bit of an art, that often requires some problem-specific understanding. A typical trick is to solve a related problem, e.g. a linear problem. Or to start with a linear problem and to \"turn on\" the nonlinearity gradually, using the solution of each nonlinear problem as the starting guess for the next one.\n", "\n", "* If you start too far from a root, Newton’s method can sometimes take a large step, far outside the validity of the Taylor approximation, and this can actually make the guess *worse*. Sophisticated implementations use a variety of techniques to make the convergence more robust, such as a [backtracking line search](https://en.wikipedia.org/wiki/Backtracking_line_search) or a [trust region](https://en.wikipedia.org/wiki/Trust_region). These techniques are outside the scope of 18.06, though!\n", "\n", "* There are other methods related to Newton that don't require you to compute $J(x)$ at all. You only supply $f(x)$ and they either approximate the Jacobian for you directly (e.g. [Broyden’s method](https://en.wikipedia.org/wiki/Broyden's_method)) or implicitly (e.g. [Anderson acceleration](http://epubs.siam.org/doi/abs/10.1137/10078356X)). There is a rich mathematical literature on solution methods for nonlinear systems of equations, but essentially all the methods have one thing in common: *linear* algebra plays a key role." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Automatic differentiation\n", "\n", "Computing the Jacobian, while in principle is a simple 18.02 exercise, is often tedious and error prone for large systems of equations.\n", "\n", "Instead, the Jacobian matrix can often be *automatically* computed from $f(x)$ by the computer using [automatic differentiation](https://en.wikipedia.org/wiki/Automatic_differentiation) tools, saving you from the tedious (and error-prone) task of writing out $J(x)$ manually. (How this works, involving [dual numbers](https://en.wikipedia.org/wiki/Dual_number), is [really cool](https://arxiv.org/abs/1607.07892), but somewhat outside the scope of 18.06.)\n", "\n", "In Julia, there are packages [ForwardDiff](https://github.com/JuliaDiff/ForwardDiff.jl) and [ReverseDiff](https://github.com/JuliaDiff/ReverseDiff.jl) to do this for you.\n", "\n", "For example, let's compute the Jacobian for $$f_\\mathrm{ex}(x) = \\begin{pmatrix} \\sin(x_1 x_2) - 0.5 \\\\ x_1^2 - x_2^2 \\end{pmatrix},$$ which should give $$J_\\mathrm{ex}(x) = \\begin{pmatrix} x_2 \\cos(x_1 x_2) & x_1 \\cos(x_1 x_2) \\\\ 2x_1 & -2x_2 \\end{pmatrix}:$$" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Jₑₓ (generic function with 1 method)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fₑₓ(x) = [ sin(x[1]*x[2]) - 0.5\n", " x[1]^2 - x[2]^2 ]\n", "\n", "# manual Jacobian\n", "Jₑₓ(x) = [ x[2]*cos(x[1]*x[2]) x[1]*cos(x[1]*x[2])\n", " 2x[1] -2x[2] ]" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2-element Array{Float64,1}:\n", " -0.779415\n", " -5.0 " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fₑₓ([2,3])" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2×2 Array{Float64,2}:\n", " 2.88051 1.92034\n", " 4.0 -6.0 " ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Jₑₓ([2,3]) # manual Jacobian" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "using ForwardDiff" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2×2 Array{Float64,2}:\n", " 2.88051 1.92034\n", " 4.0 -6.0 " ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ForwardDiff.jacobian(fₑₓ, [2,3]) # automatic Jacobian" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2×2 Array{Float64,2}:\n", " 0.0 0.0\n", " 0.0 0.0" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ForwardDiff.jacobian(fₑₓ, [2,3]) - Jₑₓ([2,3])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Multidimensional root finding example\n", "\n", "As a simple example, let's find a root of our test function\n", "$$f_\\mathrm{ex}(x) = \\begin{pmatrix} \\sin(x_1 x_2) - 0.5 \\\\ x_1^2 - x_2^2 \\end{pmatrix}$$\n", "from above.\n", "\n", "We can actually solve this analytically. $f_\\mathrm{ex}(x) = 0$ immediately tells us $x_1 = \\pm x_2$ from $x_1^2 - x_2^2 = 0$. If we let $x = x_1 = x_2$, then $\\sin(x^2) - 0.5$ has its first root at $x = \\sqrt{\\pi/6}$. We can also see these roots graphically by plotting:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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3GYVVgdJ2fwvgogEElA1FCdGcvLz85GSkoK9e/eG5O3ZsweAPnqVn58Pl8uF/fv3h5Tbt2+f5fude+65mD9/foh1Y/v27QAQsmaU09dbIScnB127dg1Ja9CgQUh6uHzzzTeoqKgIskD5/X5cdtlluOGGG/Dmm2/im2++wYABA3Duueeibdu2ePjhhzFy5Eh8/PHHGDFiBJ566qmAeAKMRxntjDCajSASBEEQznHs2DH069cP119/Pdq0aYOcnBxs2rQpMO84Uvr27QsA+Oyzz4IE1E8//YQBAwagdevWeOutt5CWlobHH38c7du3x2OPPYa//e1vtu7j9/vxn//8B6NGjYq4zSoqKytx++2346OPPsKxY8fQtm1bPPPMM+jVq1fU7knUXiiIBKGkbt266N69O95+++2AvzSg/yH897//jebNm+Pss89G3bp10bVrV7zzzjuorq4OlDtx4oSttYuuuuoqnDhxAm+99VZQ+rx589C0aVN07949qtcnCmyhWV5Abdq0CeXl5fi///s/pKWloUOHDhgyZAjefvttAMDdd9+NjIwMnH/++WjZsmXIpFl+lJGHH2FctWoVrrjiChQXFwetE8IT7RFEgiAI4hSZmZno3r07/vWvf2HYsGEYNGgQZs+ejYkTJ1r2MjGisLAQvXv3xrvvvhtI27t3LwYMGIBGjRrhvffeQ506dQDo/0duvvlmzJgxI2jNKSuUlJTg2LFjGDZsWMRtVuH1etGqVSusW7cOR48exZgxY3D55ZfT4r1EdNAI4jdeeeUVDYC2c+fOQFpJSYmWlpamde/eXVu0aJH27rvvahdeeKHmcrm0BQsWBMp98MEHWkpKita3b19t8eLF2ptvvql1795da9GiheZyuYLuc+ONN2otWrSQtmHgwIFafn6+9tJLL2mffPKJdsstt2gAtH//+99B5UpKSjS3261Nnjw5rOs1TdOWLVumLVq0SHv55Zc1ANqQIUO0RYsWaYsWLdLKy8stf259+vTRbrzxRsvlNU3TWrRooT3yyCPazp07NQDaqlWrAnl33HGHVq9evaDyCxcu1FJTU7W8vLzAVrduXW3cuHGBMnPnztUAaCtXrgy5X2lpqQZAe/HFFwNpO3fu1Jo3b6717t1bq6io0DRN07755hvN7XZr999/f0gdPp9Py8vL0yZMmGDreRjs/dq0aZPp50MQBEHEhjfffFNzu93azz//HLV73HDDDVqvXr2iVr+K/Px8bdu2bTG/L1HzIQFFBJAJKE3TtLVr12r9+/fX6tatq9WpU0fr0aOHtnTp0pDrFy9erJ177rlaenq6dvrpp2uPP/64dtddd2n5+flB5YwE1PHjx7W77rpLa9KkiZaenq516NBBmz9/fki5VatWaQC0Rx55JKzrNU3v9AOQbuJnYITTAqpnz55a//79g8qvW7dOa9++vbK+w4cPa82aNdNuvPFGrVOnTlp1dXVImd69e2sXX3yxpmmatmfPHu3MM8/UOnfurB07diyo3C233KJlZGSEfAYff/yxBkDbvHmzredhkIAiCIJIPPx+v9ajR4+gATkn+eGHH7S0tDRt7dq1UalfxTfffKNlZmZqx48fj+l9idqBS9NoNh0RHTweDzp27IhmzZphxYoVgfSRI0eipKQEP/zwA1wuV61cIZy52Y0cORKtWrXCqlWrAr7oMrxeLzp37oxRo0bh9ttvR0pKCrZt24bc3Fy0bt0aw4YNQ7169fD888+jqKgIF1xwAYqLi4PqeOuttzB06FDs2rULzZo1s93m4cOH43//+5904rLR82i/hX5/9dVXMWrUKGzatMmx+WIEQRBE5Hz55ZeB6H78YutOsGrVKnz//fe49dZbHa3XiIqKCvTp0wdXXnll0ILwBOEUFESCcIxRo0Zh4MCBKCgowL59+/DPf/4T33zzjXQ9oV27diEtLQ3t2rVLmgVu40lqairef/993HPPPXjsscfg8Xhw3nnnYcaMGVi8eDE+++wz/Pe//4XL5cLLL7+MTp064fLLLw9a92nw4MHo1q0bpk2bhueff97W/X/88UcsXLgQn3zyie22v/vuu7jqqqtsX0cQBEHEhvbt2zsSaElGv379LC+r4gQejwfXXnst2rZtiwcffDBm9yVqFySgCMc4fvw47r33Xvz6669IS0tD586dsWzZMgwYMCCoXHFxMe644w4ACExOJcwpLCzEm2++GZLeoUOHIIFSWFiIgwcPhpRzuVyYNWsWlixZAr/fb2uUsbS0FM8//zx+//vf22533759g0K/UxAKgiAIIhr4/X6MGDECbrcbc+bMcWT9R4KQQQKKcIw33njDUrmWLVuGvcAsERnhjjJGMoJYr149ctkjCIIgos5tt92GvXv3Yvny5bTYOxFVkmoO1MyZ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CHdMmAAUFzvPg/roIyeJAZFeOjuBDz5wtsmBMpJVAuqrr77C9u3bk/sffPABmpqaMGDAABx11FGu+zOJJ5lIkh2nasfX2dTLCGN9lM3kyo3IciNsTGFxuv7clrs9zhTCp1oDpdtWCShVdj3ZGidZWnO+nh3PJtrxeLzX/cmLIl4oAeo1UKLgUGXi49vYCCx+n23z77L2MmzOo8PU1lYwqcReNrFixYqU/QcffBC1tbXYuHEjzmK/DBNEpvHUU8ATTzgPyl2+3HXWsM8//xyHHXaY69P+4Ac/wKBBg/Bv//ZvABwn62c/+xmef/55dHR04Pjjj8f999+P0aNHu+47b6msBMaOBdasccL4SECln+3bgZ4eoKoKGDgw6tFkPFkloF577TWcc845yf25c+cCAL7//e9j+fLlrvoyiSBVPd9G1k7Vn6xOVS9rFyZuRJrt2GX1fkVUkOumwhJPOgHFO0Uq8cREEYAU4SQ+34nV83329PQknSedu6RKU86344WAKnmETkDxZarxuHGf/AokL66TqVy3HyR+HCgxcY7KlRdpbW0FAAwYMMDVeQkibXzyyaG1Mjfe6Ey+XbB//370ahCmhgAAIABJREFU69fP9Wl7enrw5z//Gc888wwAYO/evZg8eTLOOeccPP/886itrcV7772H/v37u+477znrrEMC6nvfi3o0+Qe//imEH+9zjawSUFOmTAlloiITS35D+PyG9snahYWbzzSoMXkRUW4FlI140vVpElEqsSQrEwWU6WG6AFIekCs+KJfVM7HV09OD7u7ulNTj7F3lLskcJlFw8fVuBJRKCPFjE8vFsrBEiY2Y8loWBn4EVF1dXUr5/PnzscAQ5pRIJDB37lycccYZGDlypKvzEkRa6OlxJth79zrCaf581128+OKLmDp1akrZCSecoFz795//+Z+47rrr8Oqrr6KwsBDjD661+tWvfoW6ujo8+OCDybb15J5446yzgF/9yhFQRPqh9U+uyOkkEgRBENmOScDqxOvHH3+ckkhn3rx5xvPNmTMHmzdvxhNPPBH2pRGEN/7jP5yMbZWVwGOPASUl2ubd3d3YuHFjStk777yD448/PqXs6aefBgC89NJL2LVrF5qbm1FcXIwnn3wSVx5MVPHMM8/gW9/6VvLHq2eeeQZjxozBxRdfjNraWowaNQrLli0L6krzi0mTHOfj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3TptwoQJ2uDBg7XW1lavzTPl0KFD2pAhQ7SLLrpIO3jwoHb48OHwJxX48ssvtfr6em3x4sVacXGxVl9fr9XX12snTpzw2rQuvPTSS1pubq72zDPPaF988YV26623akVFRdq+ffu8Ns2UEydOhL9XANrDDz+s1dfXa19++aXXplly0003aSUlJdqGDRsiju1Tp055bZold911l7Zx40Zt79692meffaYtWrRIy87O1mpra702jaQ4Vv9F1dXVEdHr3n//fS0nJ0e7//77tf/93//V7r//fs3n82lbtmzxqgtdcNqnmpoa7Z133tH27Nmj1dfXa9dee63m8/m0Dz/80KsudMHqv3fhwoVadXV1uPw//vEPrbCwUFuwYIH2xRdfaM8884yWm5ur/fGPf/SqC0qc9uuRRx7RVq9erf3f//2ftn37dm3hwoUaAG3VqlVedSECO9eZVDynoulXsp9XVtdVL3+njBRQn332mVZVVaWVlpZqeXl52sCBA7V58+ZpBw8e9No0S1asWKEBUH5SgWuuuUZp+/r16702Tcnjjz+uVVRUaH6/Xxs1alRKhNPWQ8jKn2uuucZr0ywxOrZXrFjhtWmWXHfddeFj5Uc/+pE2adIkiifiGmb/RRdeeGGX8/vVV1/Vhg4dquXm5mrDhg1LmptXESd9uvXWW7UBAwaEz6/Jkydrmzdv9sBqY6z+e6+55hrtwgsvjNhnw4YN2siRIzW/368NHDhQe+KJJxJvuAVO+/XAAw9ogwcP1vLz87WePXtqEyZM0N566y1vjFdg5zqTiudUNP1K9vPK6rrq5e+UpWkeRU0ghBBCCCGEkBQjraLwEUIIIYQQQkg8oYAihBBCCCGEEJtQQBFCCCGEEEKITSigCCGEEEIIIcQmFFCEEEIIIYQQYhMKKEIIIYQQQgixCQUUIYQQQgghhNiEAooQQgghhBBCbEIBRQghhBBCCCE2oYAi5HtefPFF5Ofn49ChQ+G0G264Aeeccw6am5s9tIwQQgjpSiKuW15fG71unxAVFFCEfM/s2bMxdOhQLFmyBACwePFirF27Fm+//TZKSko8to4QQgiJxMl16z//8z9RXFxs+tm0aVNMbZjhdfuEuInPawMISRaysrJw3333YcaMGejbty8effRRbNq0CaeffjoAYPr06diwYQMmTZqEP/7xjx5bSwghJNOxum6JzJs3D7NmzTKtT7WfW9fGeLR/4MABVFdX48iRI/D5fLj77rsxc+ZM0zYIcYMsTdM0r40gJJkYNWoUPv/8c9TW1uLCCy8Mp69fvx4nT57Es88+SwFFCCEkaTC6biWijURdG1XtHz58GF999RVGjBiBI0eOYNSoUdi5cyeKioriZgchAIfwERLB2rVrsWPHDnR0dKB3794ReVVVVejWrZtHlhFCCCFdMbtuiUQ7hM6qDbvXxni0X15ejhEjRgAATjvtNJSWlqKpqcnSFkJihR4oQr7nk08+wcSJE/H444/jpZdeQmFhIV599dWIMhs2bMBjjz1GDxQhhBDPsXPd0mlqarIUF6effjoKCgoct2Hn2hjP9gFg69atmDNnDrZv327aBiFuwDlQhADYt28fLr30UixcuBDV1dUYPnw4xo4di23btmH06NFem0cIIYRE4PS6VVpaitLS0ri2YUY82z927BiuvvpqPP30047qJyRa6IEiGU9TUxPOO+88XHDBBVi+fHk4/fLLL0dbWxveeeedcBo9UIQQQrzGyXUrEW3E49pot/22tjZcfPHFmDt3Lqqrq11rnxAzKKAIcQAFFCGEEBKJV9dGTdNw5ZVXYujQoaipqUlo2ySzoYAixCZTpkzBJ598gpaWFpSWlmL16tUYO3as12YRQgghnuHltfG9997DBRdcgHPOOSec9txzz+Hss89OSPskc6GAIoQQQgghhBCbMIw5IYQQQgghhNiEAooQQgghhBBCbEIBRQghhBBCCCE2oYAihBBCCCGEEJtQQBFCCCGEEEKITSigCCGEEEIIIcQmFFCEEEIIIYQQYhMKKEIIIYQQQgixCQUUIYQQQgghhNiEAooQQgghhBBCbEIBRQghhBBCCCE2oYAihBBCCCGEEJv8f0aSUrFJTmIpAAAAAElFTkSuQmCC", "text/plain": [ "PyPlot.Figure(PyObject
)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "figure(figsize=(10,4))\n", "\n", "subplot(1,2,1)\n", "X = linspace(-3,3,250)\n", "pcolor(X', X, [-log(0.01 + norm(fₑₓ([x,y]))) for y in X, x in X], cmap=\"gray\")\n", "xlabel(L\"x_1\")\n", "ylabel(L\"x_2\")\n", "title(L\"-\\log [ 0.01 + \\Vert f_\\mathrm{ex}(x) \\Vert]\")\n", "colorbar()\n", "\n", "subplot(1,2,2)\n", "x = linspace(0,3,200)\n", "plot(x, sin.(x.^2) .- 0.5, \"r-\")\n", "plot(x, 0*x, \"k-\")\n", "plot([sqrt(pi/6), sqrt(5pi/6), sqrt(13pi/6)], [0,0,0], \"ro\", markersize=8)\n", "text(0.65, -0.23, L\"\\sqrt{\\pi/6}\")\n", "title(L\"\\sin(x^2) - \\frac{1}{2}\")\n", "xlabel(L\"x = x_1 = x_2\")\n", "grid()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here is the coordinate of our first root:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.7236012545582676" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sqrt(π/6)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's print out the progress after varying numbers of Newton steps starting at a crude initial guess $x = \\begin{pmatrix} 0.5 \\\\ 0.8 \\end{pmatrix}$:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1 Newton steps: x = [0.717469, 0.692168], f(x) = [-0.0235532, 0.0356649]\n", "2 Newton steps: x = [0.723253, 0.723927], f(x) = [-1.46811e-5, -0.000975152]\n", "3 Newton steps: x = [0.723601, 0.723601], f(x) = [-9.82632e-8, 1.55751e-8]\n", "4 Newton steps: x = [0.723601, 0.723601], f(x) = [2.10942e-15, -1.55431e-15]\n", "5 Newton steps: x = [0.723601, 0.723601], f(x) = [-5.55112e-17, 0.0]\n", "6 Newton steps: x = [0.723601, 0.723601], f(x) = [-5.55112e-17, 0.0]\n", "7 Newton steps: x = [0.723601, 0.723601], f(x) = [-5.55112e-17, 0.0]\n", "8 Newton steps: x = [0.723601, 0.723601], f(x) = [-5.55112e-17, 0.0]\n", "9 Newton steps: x = [0.723601, 0.723601], f(x) = [-5.55112e-17, 0.0]\n", "10 Newton steps: x = [0.723601, 0.723601], f(x) = [-5.55112e-17, 0.0]\n" ] } ], "source": [ "x = [0.5, 0.8]\n", "for i = 1:10\n", " x = x - Jₑₓ(x) \\ fₑₓ(x) # Newton step\n", " println(\"$i Newton steps: x = $x, f(x) = \", fₑₓ(x))\n", "end" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As usual, super fast convergence: **15 decimal places in only four steps!**" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "## A nonlinear circuit problem\n", "\n", "Consider the nonlinear circuit graph from the [graphs and networks lecture](http://nbviewer.jupyter.org/github/stevengj/1806-spring17/blob/master/lectures/Graphs-Networks.ipynb):\n", "\n", "\n", "\n", "The incidence matrix $A$ of this graph is:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "8×6 Array{Int64,2}:\n", " -1 0 0 1 0 0\n", " 0 0 0 -1 1 0\n", " 0 0 0 0 -1 1\n", " 0 0 1 0 0 -1\n", " 0 1 -1 0 0 0\n", " 1 -1 0 0 0 0\n", " 0 -1 0 0 0 1\n", " 0 0 0 -1 0 1" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A = [ -1 0 0 1 0 0\n", " 0 0 0 -1 1 0\n", " 0 0 0 0 -1 1\n", " 0 0 1 0 0 -1\n", " 0 1 -1 0 0 0\n", " 1 -1 0 0 0 0\n", " 0 -1 0 0 0 1\n", " 0 0 0 -1 0 1 ]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Review: (Linear) circuit equations\n", "\n", "Recall that if we associate a vector $v$ of voltages with the 6 nodes, then $d = Av$ gives the **voltage rise** across each edge, and $i = -YAv$ gives the **current** through each edge, where $Y$ is a diagonal matrix of admittances (= 1/resistance)\n", "\n", "$$\n", "Y = \\begin{pmatrix} Y_1 & & & \\\\\n", " & Y_2 & & \\\\\n", " & & \\ddots & \\\\\n", " & & & Y_8 \\\\\n", " \\end{pmatrix}\n", "$$\n", "\n", "This is simply an expression of Ohm's law.\n", "\n", "Furthermore, we showed that Kirchhoff’s current law is just the statement $A^T i = 0$. Putting it all together, and including a current source term $s$ (an external current flowing out of each node), we obtained the equations:\n", "\n", "$$\n", "A^T Y A v = s\n", "$$\n", "\n", "where to have a solution ($A^T Y A$ is singular) we had to have $s \\perp N(A)$, or equivalently $\\sum_i s_i = 0$: the net current flowing in/out of the circuit must be zero." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Nonlinear Ohm’s law\n", "\n", "A key physical foundation of the equations above was Ohm’s law: $i_j = -d_j/R_j = - Y_j d_j$, which is the statement that the **current is proportional to the voltage drop** $-d_j$.\n", "\n", "However, this is only an approximation. In reality, as the voltage and current increase, the resistance changes. For example, the resistor heats up (and eventually melts!) due to the dissipated power $i_j^2 / Y_j = Y_j d_j^2$, and resistance depends on temperature.\n", "\n", "Let's try a **simple model** of a voltage-dependent resistance. Suppose that we modify Ohm’s law to:\n", "\n", "$$\n", "i_j = - \\underbrace{ \\frac{Y_j }{1 + \\alpha_j d_j^2} }_{\\tilde{Y}_j(d_j)} d_j\n", "$$\n", "\n", "where $\\tilde{Y}_j(d_j) = Y_j / (1 + \\alpha_j d_j^2)$ corresponds to a resistance that increases quadratically with the voltage rise $d_j$. This model is not unrealistic! For a real resistor, you could measure the voltage dependence of $Y$, and *fit* it to an equation of this form, and it would be valid for sufficiently small $d_j$! (The admittance will normally only depend on $d^2$, not on $d$, because with most materials it will not depend on the sign of the voltage drop or current.)\n", "\n", "The problem, of course, is that with this nonlinear Ohm’s law, the whole problem becomes a **nonlinear system of equations**. How can we solve such a system of equations? At first glance, the methods of 18.06 don't work — they are only for *linear* systems.\n", "\n", "But, we can apply Newton's method as described above, with automatic differentiation via `ForwardDiff`, to solve this by a sequence of linear problems." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Example\n", "\n", "For an example, let's just set $Y_k = 1$ and $\\alpha_k = 0.5$ for $k=1,\\ldots,6$, and use $s = (1,-1,0,0,0,0)$ as in the previous lecture (current injected into node 2 and extracted out from node 1).\n", "\n", "What should we use as our initial guess? How about the solution to the *linear* problem with $\\tilde{Y}(0) = Y$? That's often a good guess, since in many real problems the nonlinear solution will be very close to the solution of a simplified linear problem.\n", "\n", "Let's write some code to compute $f(v)$ and $J(v)$:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "J (generic function with 1 method)" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Yₖ = 1\n", "αₖ = 0.5\n", "Ỹₖ(d) = Yₖ / (1 + αₖ * d^2)\n", "\n", "f(v) = A' * (diagm(Ỹₖ.(A*v)) * (A*v)) - [1,-1,0,0,0,0]\n", "J(v) = ForwardDiff.jacobian(f, v)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's implement the Newton step $v - J(v)^{-1} f(v)$.\n", "\n", "I'd ideally like to use `v - J(v) \\ f(v)` in Julia,\n", "but the ``` \\ ``` function will complain that `J` is singular, even though `f` is in the column space as discussed below. There are various ways to do this properly numerically, but for simplicity I will \"cheat\" and use and advanced tool called the [pseudo-inverse](https://en.wikipedia.org/wiki/Moore%E2%80%93Penrose_pseudoinverse), computed in julia by `pinv(J)`, which (for a right-hand-side in the column space) will give us a particular solution similar to what we would get from the elimination technique we learned in class. (We will cover the pseudo-inverse much later in 18.06.) There are other ways to proceed here that are even more efficient, but `pinv` is the simplest." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "newtonstep (generic function with 1 method)" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "newtonstep(v) = v - pinv(J(v)) * f(v)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, let's see what happens. We'll start by just plotting the voltages as a function of the Newton step, to see how (and whether) it is converging:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "newton (generic function with 2 methods)" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "function newton(v, nsteps)\n", " for i = 1:nsteps\n", " v = newtonstep(v)\n", " end\n", " return v\n", "end\n", "newton(v, nsteps::AbstractVector) = map(n -> newton(v,n), nsteps)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkYAAAHHCAYAAABa2ZeMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3XlcVPX+P/DXmRmYAdllXyRETRDcQE3LW+5L1/VaprlVSlldNW5603Ittf3qr9JcMr0Zpt4WrW+aaK6ZqLiUoEVkIsquMiqyzMz5/cEwMjLAjM6cYeD1fDzmAfM5n3POiwmbN5/POZ8RRFEUQURERESQ2TsAERERUUPBwoiIiIhIj4URERERkR4LIyIiIiI9FkZEREREeiyMiIiIiPRYGBERERHpsTAiIiIi0mNhRERERKTHwoiIiIhIj4URERERkR4LIyIJrV+/HoIgQKVS4cKFCzW2P/LII4iJiZEsz+HDh7FgwQJcu3ZNsnNayhEyAsDmzZvRrl07uLi4QBAEnDp1yt6RbOrGjRuYMWMGgoODoVKp0LFjR3zxxRdm7btv3z4IgmDyceTIERsnJ6obCyMiOygrK8Nrr71m7xg4fPgwFi5c2KCLDkfIWFBQgPHjxyMyMhI7d+7Ezz//jDZt2tg7lk2NHDkSGzZswPz587Fjxw506dIFY8aMQVJSktnHWLJkCX7++Wejh5R/GBCZorB3AKKmaODAgUhKSsLLL7+MDh062DsO3aPff/8dFRUVGDduHB5++GGrHbekpASurq5WO561fP/990hOTkZSUhLGjBkDAOjVqxcuXLiAmTNnYvTo0ZDL5fUep3Xr1njggQdsHZfIIhwxIrKDWbNmoXnz5vj3v/9db9+MjAyMHTsW/v7+UCqViIqKwkcffWTYnpaWBkEQsHXrVkNbamoqBEFAu3btjI41dOhQxMXFAQAWLFiAmTNnAgAiIiIMUxn79u0DABw6dAh9+vSBu7s7XF1d0aNHD/zf//1fjXwLFiyAIAhIS0vDmDFj4OnpiYCAADz99NMoLi6u82crKChAQkICwsLCoFQq4efnhwcffBC7d+82K6M5r0/1jCdPnsTIkSPh4eEBT09PjBs3DgUFBWbnMWXSpEl46KGHAACjR4+GIAh45JFHDNstfR1PnDiBUaNGwdvbG5GRkXW+fqIo4uOPP0ZsbCxUKhVatWqF//3vf9DpdIiJicGSJUvq3P9uff3113Bzc8Njjz1m1P7UU0/h8uXLSElJscl5iaTAwojIDtzd3fHaa6/hhx9+wI8//lhrv/T0dHTp0gVnzpzBe++9h++++w6PPvoopk2bhoULFwIA2rVrh6CgIKM37927d8PFxQXp6em4fPkyAECj0WD//v3o27cvAGDy5Mn45z//CQD46quvDFMZnTt3xv79+9G7d28UFxfjk08+waZNm+Du7o4hQ4Zg8+bNJrP+4x//QJs2bfDll1/ilVdeQVJSEl566aU6X4fx48fjm2++wbx587Br1y6sXbsWffv2RVFRUb0ZzX19qhsxYoSheFiwYAG++eYbDBgwABUVFWblMWXu3LmGQqxqamjFihUAcFev48iRI9GqVSts3boVH3/8ca3nFUURo0ePRmJiIiZMmIDvvvsOERERmDRpEtavX4+rV69ixowZJvfTaDRmPWpz5swZREVFQaEwnnRo3769Ybs5XnjhBSgUCnh4eGDAgAE4dOiQWfsR2ZRIRJL59NNPRQDisWPHxLKyMrFly5ZifHy8qNPpRFEUxYcfflhs166dof+AAQPE0NBQsbi42Og4L774oqhSqcQrV66IoiiK48aNE1u2bGnY3rdvX3HKlCmit7e3uGHDBlEURfGnn34SAYi7du0y9HvnnXdEAOL58+eNjv/AAw+I/v7+4vXr1w1tGo1GjImJEUNDQw15RVEU58+fLwIQ3377baNjPP/886JKpTLqeyc3NzdxxowZdb5mtWUURfNfn6qML730klG/zz//XAQgbty40ew8puzdu1cEIG7dutWo/W5ex3nz5pl1znXr1okAxM8//9zQduDAARGA6O3tLa5Zs6bOrOY8TL3moiiKrVu3FgcMGFCj/fLlyyIAccmSJXVmP3HihDh9+nTx66+/Fg8cOCCuW7dOjIqKEuVyubhz506zfn4iW+GIEZGdODs744033sDx48exZcuWGttLS0uxZ88ejBgxAq6urkZ/yQ8ePBilpaWGO3j69OmDP//8E+fPn0dpaSkOHTqEgQMHolevXkhOTgZQOYqkVCoN0z61uXnzJlJSUjBq1Ci4ubkZ2uVyOcaPH4/s7Gz89ttvNfYbOnSo0fP27dujtLQU+fn5tZ6ra9euWL9+Pd544w0cOXLEMHJjDktenypP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", "text/plain": [ "PyPlot.Figure(PyObject
)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "PyObject Text(0.5,1,'Newton steps for $\\\\alpha = 0.5$')" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "M₀ = A' * diagm(Ỹₖ.(zeros(8))) * A # matrix AᵀYA for zero voltage drops (i.e. linear problem)\n", "v₀ = pinv(M₀) * [1,-1,0,0,0,0] # initial guess = solution to linear problem\n", "vsteps = newton(v₀, 0:10)\n", "plot([vsteps[i][j] for i=1:length(vsteps), j=1:6], \"o-\")\n", "xlabel(\"Newton steps\")\n", "ylabel(\"node voltages\")\n", "legend([L\"v_1\", L\"v_2\", L\"v_3\", L\"v_4\", L\"v_5\", L\"v_6\"], loc=\"upper right\")\n", "title(L\"Newton steps for $\\alpha = 0.5$\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Clearly, it is converging pretty rapidly. Another way to see this is to plot the convergence of the length (norm) of the $f(v)$ vector, $\\Vert f(v) \\Vert = \\sqrt{f(v)^T f(v)}$:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlAAAAHHCAYAAABwaWYjAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3X1cVGX+//HXiALegXjHCqLQja6Kt2iaRokmhqarprm1W2pZP2t3DUkr110rW6Oy1DbDNDPr253Zqm2FKZUKieZN0pZaq480UFHzJhBMRDi/P84yioAOMHDm5v18PObBzHWuOeczs7a8Oec612UzDMNARERERBxWx+oCRERERNyNApSIiIhIJSlAiYiIiFSSApSIiIhIJSlAiYiIiFSSApSIiIhIJSlAiYiIiFSSApSIiIhIJSlAiYiIiFSSApSIiIhIJSlAiYiIiFSSApRIBZYtW4bNZsPf35+ffvqpzPb+/fsTGRlZa/Wkp6fzxBNP8Msvv9TaMcXzLF++nE6dOlG/fn1sNhsZGRlWl1Sj8vLyiI+PJyQkBH9/f7p168Z7773n0Hs3bNiAzWYr97Fly5YarlxcnQKUyBUUFBTwt7/9zeoySE9P58knn1SAkir7+eefueuuu7j66qv59NNP2bx5M+3atbO6rBo1atQo3njjDR5//HHWrFlDr169uOOOO3jnnXcc3sfTTz/N5s2bSz1q848ncU11rS5AxNXdcsstvPPOO0ydOpWuXbtaXY7UgDNnztCgQQOry6hx//3vfyksLOSPf/wjN910k9P266rfX3JyMikpKbzzzjvccccdAMTExPDTTz8xbdo0xo4di4+PzxX3c+2119KnT5+aLlfcjM5AiVzBI488QrNmzXj00Uev2Hfv3r3ceeedtGzZEj8/Pzp06MDLL79s375r1y5sNhsrVqywt+3YsQObzUanTp1K7Wv48OFERUUB8MQTTzBt2jQAIiIi7JcRNmzYAMCXX37JwIEDady4MQ0aNKBv37588sknZep74oknsNls7Nq1izvuuIPAwECCg4O55557yMnJueLn+/7777njjjsIDg7Gz8+PNm3acPfdd1NQUFCqnyP1OFLL6tWrsdlsfP7552VqWbhwITabjf/85z8Of/8XH/frr79m9OjRBAUFcfXVV9u3f/jhh3Tp0gU/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", "text/plain": [ "PyPlot.Figure(PyObject
)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "PyObject Text(0.5,1,'Newton convergence for $\\\\alpha = 0.5$')" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "xlabel(\"Newton steps\")\n", "ylabel(L\"\\Vert f(v) \\Vert\")\n", "semilogy(norm.(f.(vsteps)), \"bo-\")\n", "title(L\"Newton convergence for $\\alpha = 0.5$\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It converges **faster than exponentially** with the step. Once it is close to the solution, Newton roughly **doubles the number of digits in each step**.\n", "\n", "Eventually, it stops getting better: the accuracy is **limited by roundoff errors** once the error reaches $\\approx 10^{-16}$, related to the fact that the computer is only doing arithmetic to about 16 digits of accuracy." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Computing the Jacobian manually\n", "\n", "It might be nice to look more explicitly at the Jacobian matrix to understand why it is singular in this problem, and why that is okay here (i.e. why a solution exists). In really large computational problems, people often compute Jacobians more explicitly in order to extract computational savings (by exploiting any special forms of the matrices in the analytical result).\n", "\n", "It is also, unfortunatey, a lot messier and more error prone to compute the Jacobian manually. I often like to think of the Jacobian in terms of Taylor expanding: if you **Taylor expand everything to first order**, throwing away higher-order terms, then the **Jacobian matrix is the coefficient of the 1st-order term** in the final result.\n", "\n", "The admittance is written in terms of the voltage rise $d = Av$. If we change $v$ to $v+\\delta$, then we get $d + A\\delta$. Let's denote $\\hat{\\delta} = A\\delta$. Then the formula for each component of our current $i$ becomes:\n", "\n", "$$\n", "i_j = -\\tilde{Y}_j(d_j +\\hat{\\delta}_j) \\, (d_j +\\hat{\\delta}_j) \\approx -\\tilde{Y}_j(d_j) d_j - (\\tilde{Y}_j(d_j) + \\tilde{Y}_j'(d_j) d_j) \\hat{\\delta}_j\n", "$$\n", "\n", "where we have just Taylor-expanded around $\\hat{\\delta}_j = 0$, and $\\tilde{Y}_j'(d_j) = -2 \\alpha_j d_j Y_j / (1 + \\alpha_j d_j^2)^2$. Let $K_j(d_j) = \\tilde{Y}_j(d_j) + \\tilde{Y}_j'(d_j) d_j$, and then we have:\n", "\n", "$$\n", "i_j \\approx - \\left[ \\tilde{Y}_j(d_j) d_j + K_j(d_j) \\hat{\\delta}_j \\right]\n", "$$\n", "\n", "Plugging this into $f(v+\\delta)$, we get\n", "\n", "$$\n", "f(v+\\delta) \\approx \\underbrace{A^T Y(Av) Av - s}_{f(v)} + \\underbrace{A^T K(Av) A}_{J(v)} \\delta\n", "$$\n", "\n", "and hence\n", "\n", "$$\n", "J(v) = A^T K(Av) A\n", "$$\n", "\n", "where\n", "\n", "$$\n", "K(d) = \\begin{pmatrix} K_1(d_1) & & & \\\\\n", " & K_2(d_2) & & \\\\\n", " & & \\ddots & \\\\\n", " & & & K_8(d_8) \\\\\n", " \\end{pmatrix}\n", "$$\n", "\n", "There is one slight problem here: $J$ is a singular matrix even if all $K_j \\neq 0$, because of $N(A) \\ne \\{0\\}$. Just as with $s$, $J(v) y = f(v)$ only has a solution if $f(v) \\in C(J) \\subseteq C(A^T)$. Fortunately, $f(v) = A^T Y A - s$ is *always* in $C(A^T)$ as long as $s \\in C(A^T) = N(A)^\\perp$, which was required *anyway* (from above) if we are to have a solution in the *linear* case.\n", "\n", "(We can still run into a singular $J$ for \"unlucky\" $K_j$, but that is a typical hazard of Newton's method, just like we can run into $f'(x)=0$ for unlucky $x$ values. The important thing is that it doesn't happen \"generically\", i.e. singularities only occur at isolated points.)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "J_manual (generic function with 1 method)" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Ỹₖ′(d) = -2αₖ*d*Yₖ / (1 + αₖ * d^2)^2\n", "Kₖ(d) = Ỹₖ(d) + Ỹₖ′(d)*d\n", "J_manual(v) = A' * diagm(Kₖ.(A*v)) * A" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's check this against our automatic Jacobian:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "6×6 Array{Float64,2}:\n", " 0.0990134 -0.153337 0.0 0.0543237 0.0 0.0 \n", " -0.153337 0.72329 0.121405 0.0 0.0 -0.691358 \n", " 0.0 0.121405 -0.243995 0.0 0.0 0.12259 \n", " 0.0543237 0.0 0.0 -0.167821 0.0484289 0.0650683\n", " 0.0 0.0 0.0 0.0484289 0.173793 -0.222222 \n", " 0.0 -0.691358 0.12259 0.0650683 -0.222222 0.725922 " ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "v = [0.1,1.2,3.4,5.6,-0.3,0.7] # a \"random\" vector\n", "ForwardDiff.jacobian(f, v)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "6×6 Array{Float64,2}:\n", " 0.0990134 -0.153337 0.0 0.0543237 0.0 0.0 \n", " -0.153337 0.72329 0.121405 0.0 0.0 -0.691358 \n", " 0.0 0.121405 -0.243995 0.0 0.0 0.12259 \n", " 0.0543237 0.0 0.0 -0.167821 0.0484289 0.0650683\n", " 0.0 0.0 0.0 0.0484289 0.173793 -0.222222 \n", " 0.0 -0.691358 0.12259 0.0650683 -0.222222 0.725922 " ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "J_manual(v)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "6×6 Array{Float64,2}:\n", " 5.55112e-17 -5.55112e-17 0.0 … 0.0 0.0 \n", " -5.55112e-17 0.0 0.0 0.0 0.0 \n", " 0.0 0.0 -5.55112e-17 0.0 5.55112e-17\n", " 0.0 0.0 0.0 -2.77556e-17 2.77556e-17\n", " 0.0 0.0 0.0 2.77556e-17 0.0 \n", " 0.0 0.0 5.55112e-17 … 0.0 -1.11022e-16" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ForwardDiff.jacobian(f, v) - J_manual(v)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Yup, it computed our Jacobian automatically and perfectly accurately (up to the machine-precision rounding errors).\n", "\n", "[How ForwardDiff works](https://arxiv.org/abs/1607.07892), based on [dual numbers](https://en.wikipedia.org/wiki/Dual_number), is outside the scope of 18.06, but there is a nice [tutorial notebook](http://nbviewer.jupyter.org/github/stevengj/18S096-iap17/blob/master/lecture8/Automatic%20differentiation%20and%20applications.ipynb) by [David Sanders](http://sistemas.fciencias.unam.mx/~dsanders/)." ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Julia 0.6.3", "language": "julia", "name": "julia-0.6" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "0.6.3" }, "widgets": { "state": { "0256c79a-4ea4-4bc5-8716-6f0859951218": { "views": [ { "cell_index": 4 } ] }, "51575b3a-dace-4a85-aece-92e117ab0b40": { "views": [ { "cell_index": 4 } ] }, "a0358c2f-65a4-47b3-9058-fc314b5937ca": { "views": [ { "cell_index": 4 } ] }, "ab41f0e8-652b-49ec-8056-5a0b11e728d8": { "views": [ { "cell_index": 4 } ] } }, "version": "1.2.0" } }, "nbformat": 4, "nbformat_minor": 2 }