Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html>
- <title>Web-based solver example</title>
- <meta name="Description" content="Web-based nonlinear Hammerstein fuzzy functional integral equations solver" />
- <meta name="Keywords" content="fuzzy integral equation, Hammerstein, solver, numerical method, approximate method" />
- <meta name="Author" content="Svetoslav Enkov. Atanaska Georgieva, Renato Nikolla" />
- <meta charset="UTF-8" />
- <head>
- <link href="solver.css" type="text/css" rel="stylesheet">
- </head>
- <body>
- <p align="center" style="font-size: 150%">Solver for nonlinear Hammerstein fuzzy
- functional integral equations</p>
- <form name="EvalForm" id="EvalCalc" action="" method="post" novalidate="novalidate" scrolling="yes">
- <div id="Formulaes">
- <p> g<sub>-</sub>(t,r) = <input name="glfunc" value="" type="text" size=115></p>
- <p> g<sub>+</sub>(t,r) = <input name="gufunc" value="" type="text" size=115></p>
- <p> k(t,s) = <input name="kfunc" value="" type="text" size=115></p>
- <p>H<sub>-</sub>(t,x,r) = <input name="Hlfunc" value="" type="text" size=115></p>
- <p>H<sub>+</sub>(t,x,r) = <input name="Hufunc" value="" type="text" size=115></p>
- <p>f<sub>-</sub>(t,x,r) = <input name="flfunc" value="" type="text" size=115></p>
- <p>f<sub>+</sub>(t,x,r) = <input name="fufunc" value="" type="text" size=115></p>
- <p> x*<sub>-</sub>(t,r) = <input name="xlfunc" value="" type="text" size=115></p>
- <p> x*<sub>+</sub>(t,r) = <input name="xufunc" value="" type="text" size=115></p>
- <p>
-
- a = <input name="avalue" value="" type="text" size=6>
- b = <input name="bvalue" value="" type="text" size=6>
- ε' = <input name="epsvalue" value="" type="text" size=10>
- n = <input name="nvalue" value="" type="text" size=4>
- r = <input name="rvalue" value="" type="text" size=6>
- </p>
- </div>
- <p><span align='left'> <input name = "CalcButton" value="Calculate" type="button" title="Evaluates the expression!" onclick="StartCalc();"> <span id="ErrorLabel">
- </span>
- <p align='right'>
- <input name = "SampleButton" value="Load sample" type="button" title="Loads Sample!" onclick="Sample();">
- <input name = "PlotButton" value="Plot results" type="button" title="Plot of the results!" onclick="PlotGraph();"> </p>
- <div id="animated-result" class="animated fadeInLeft" align="center" style="display:none">
- <span id="ResultLabel1"></span><br>
- <span id="ResultLabel2"></span>
- <table id="ResultsErrors" class="ResultTable"></table><br>
- <table id="ResultsValues" class="ResultTable"></table><br>
- </div>
- <div style='font-family: "Times New Roman", Times, serif;'>Note: use E instead of e, PI instead of π, ^ for power, etc...</div>
- <div align="center" class="center-block">
- <br><span id="resultsplot"></span>
- <br><span id="plotlegend" style="display:none; font-size: 75%">
- Colors: Red - upper optimal, Blue - lower optimal, Black - upper exact, Brown - lower exact, Magenta - upper trapezoid, Pink - lower trapezoid.<br>Use zoom with mouse wheel to see in detail.
- </span>
- </div>
- <div><a href=
- "Numerical%20Solution%20of%20Nonlinear%20Hammerstein%20Fuzzy%20Functional%20Integral%20Equations%20-%20Enkov%20Georgieva%20Nikolla.pdf" target="_blank"><img src="pdf-download-icon.png" alt="Read entire article in PDF" style="width:291px;height:92px;border:0;">
- </a>
- </div>
- </form>
- <script src="lib/parser.js" type="text/javascript"></script>
- <script src="https://d3js.org/d3.v3.min.js" charset="utf-8"></script>
- <script src="https://wzrd.in/standalone/function-plot@1.17.0"></script>
- <script type="text/javascript">
- // Copyright (c)2015 Matthew Crumley, Math Parser library, https://silentmatt.com/javascript-expression-evaluator/
- // - please use old version, not new ECMAScript 6 version
- // Copyright (c)2016 Maurizio Poppe, Function Plot plotting library, http://maurizzzio.github.io/function-plot/ 1.17.0
- //
- // Copyright (c)2016 Algorithm realisation by Svetoslav Enkov, Atanaska Georgieva, Renato Nikolla, freeware, public domain
- // University of Plovdiv, FMI, 236 Bulgaria Blvd., Plovdiv, Bulgaria. enkov@uni-plovdiv.bg
- // published at http://enkov.com/solver
- // https://pastebin.com/aTR7rYZ8
- //
- // Algorithm is based on the presentation at APPLICATIONS OF MATHEMATICS IN ENGINEERING AND ECONOMICS (AMEE’16): Proceedings of the 42nd International Conference on Applications of Mathematics in Engineering and Economics
- // article "Numerical solution of nonlinear Hammerstein fuzzy functional integral equations", DOI 10.1063/1.4968452
- var d3 = window.d3;
- var functionPlot = window.functionPlot;
- var sFormElements = document.forms["EvalForm"].elements;
- var Calculated = false;
- // forward definitions (global) to be seen in the plotting function too
- var n; var m; var mo; var t; var to;
- var xml; var xmu; var xoml; var xomu; var xl; var xu;
- var a; var b;
- function PlotGraph()
- {
- if (!Calculated) {
- alert("You haven't calculated nothing yet!");
- return;
- }
- document.getElementById('plotlegend').style.display = ''; // show the legend
- var pointsTL = [];
- var pointsEL = [];
- var pointsOL = [];
- var pointsTU = [];
- var pointsEU = [];
- var pointsOU = [];
- var minY = xml[m][0];
- var maxY = xml[m][0];
- for (var i=0; i<=n; i++) {
- pointsTL.push([t[i],xml[m][i]]); // trapezoid
- minY = Math.min(minY, xml[m][i]);
- maxY = Math.max(maxY, xml[m][i]);
- pointsEL.push([t[i],xl[i]]); // exact
- minY = Math.min(minY, xl[i]);
- maxY = Math.max(maxY, xl[i]);
- if (i > 0) {
- pointsOL.push([t[i],xoml[mo][i]]); // optimal
- minY = Math.min(minY, xoml[mo][i]);
- maxY = Math.max(maxY, xoml[mo][i]);
- }
- pointsTU.push([t[i],xmu[m][i]]); // trapezoid
- minY = Math.min(minY, xmu[m][i]);
- maxY = Math.max(maxY, xmu[m][i]);
- pointsEU.push([t[i],xu[i]]); // exact
- minY = Math.min(minY, xu[i]);
- maxY = Math.max(maxY, xu[i]);
- if (i > 0) {
- pointsOU.push([t[i],xomu[mo][i]]); // optimal
- minY = Math.min(minY, xomu[mo][i]);
- maxY = Math.max(maxY, xomu[mo][i]);
- }
- }
- // plot the results
- functionPlot({
- title: 'Graphics (drag and zoom with mouse)',
- target: '#resultsplot',
- xAxis: {
- domain: [a-Math.abs(b-a)*0.1, b+Math.abs(b-a)*0.1]
- },
- yAxis: {
- domain: [minY-Math.abs(maxY-minY)*0.1, maxY+Math.abs(maxY-minY)*0.1]
- },
- data: [{
- points: pointsEU,
- fnType: 'points',
- graphType: 'polyline',
- color: 'black'
- }, {
- points: pointsTU,
- fnType: 'points',
- graphType: 'polyline',
- color: 'magenta'
- }, {
- points: pointsOU,
- fnType: 'points',
- graphType: 'polyline',
- color: 'red'
- },{
- points: pointsEL,
- fnType: 'points',
- graphType: 'polyline',
- color: 'brown'
- }, {
- points: pointsTL,
- fnType: 'points',
- graphType: 'polyline',
- color: 'pink'
- }, {
- points: pointsOL,
- fnType: 'points',
- graphType: 'polyline',
- color: 'blue'
- }]
- });
- }
- function Sample()
- { sFormElements["glfunc"].value = '-t/12+(3*t/54)*(1-r)-(1-r)/8';
- sFormElements["gufunc"].value = '-t/12-(3*t/54)*(1-r)+(1-r)/8';
- sFormElements["kfunc"].value = 't*s/3';
- sFormElements["Hlfunc"].value = 'x*x';
- sFormElements["Hufunc"].value = 'x*x';
- sFormElements["flfunc"].value = 'x/4-(t/216)*(1-r)*(1-r)-(t/54)*(1-r)+3*t/4';
- sFormElements["fufunc"].value = 'x/4-(t/216)*(1-r)*(1-r)+(t/54)*(1-r)+3*t/4';
- sFormElements["xlfunc"].value = 't-(1-r)/6';
- sFormElements["xufunc"].value = 't+(1-r)/6';
- sFormElements["avalue"].value = '0';
- sFormElements["bvalue"].value = '1';
- sFormElements["epsvalue"].value = '1e-15';
- sFormElements["nvalue"].value = '10';
- sFormElements["rvalue"].value = '0.5';
- document.getElementById("ErrorLabel").textContent = 'Loaded article sample function...';
- document.getElementById("ResultLabel1").innerHTML = '';
- document.getElementById("ResultTable").innerHTML = '';
- }
- function myFixed(p1, p2){
- if (Math.trunc(p1)==p1)
- { return p1; }
- else
- { return p1.toFixed(p2); }
- }
- function StartCalc()
- {
- document.getElementById("ErrorLabel").textContent = 'Calculating...';
- document.getElementById('animated-result').style.display = 'none'; // hide result
- window.setTimeout(Calc, 100);
- }
- function Calc()
- {try {
- // Get the initial values from the user's input
- document.getElementById("ErrorLabel").textContent = ''; // clear error
- document.getElementById('animated-result').style.display = 'none'; // hide result
- Calculated = false;
- var glx = sFormElements['glfunc'].value;
- var gux = sFormElements['gufunc'].value;
- var kx = sFormElements['kfunc'].value;
- var Hlx = sFormElements['Hlfunc'].value;
- var Hux = sFormElements['Hufunc'].value;
- var flx = sFormElements['flfunc'].value;
- var fux = sFormElements['fufunc'].value;
- var xlx = sFormElements['xlfunc'].value;
- var xux = sFormElements['xufunc'].value;
- if (glx == '') { document.getElementById("ErrorLabel").textContent = 'Function g- can not be empty!'; return; }
- if (gux == '') { document.getElementById("ErrorLabel").textContent = 'Function g+ can not be empty!'; return; }
- if (kx == '') { document.getElementById("ErrorLabel").textContent = 'Function k can not be empty!'; return; }
- if (Hlx == '') { document.getElementById("ErrorLabel").textContent = 'Function H- can not be empty!'; return; }
- if (Hux == '') { document.getElementById("ErrorLabel").textContent = 'Function H+ can not be empty!'; return; }
- if (flx == '') { document.getElementById("ErrorLabel").textContent = 'Function f- can not be empty!'; return; }
- if (fux == '') { document.getElementById("ErrorLabel").textContent = 'Function f+ can not be empty!'; return; }
- if (xlx == '') { document.getElementById("ErrorLabel").textContent = 'Function x*- can not be empty!'; return; }
- if (xux == '') { document.getElementById("ErrorLabel").textContent = 'Function x*+ can not be empty!'; return; }
- a = (sFormElements['avalue'].value != '') ? parseFloat(sFormElements['avalue'].value) : 0.0;
- b = (sFormElements['bvalue'].value != '') ? parseFloat(sFormElements['bvalue'].value) : 0.0;
- var eps = (sFormElements['epsvalue'].value != '') ? parseFloat(sFormElements['epsvalue'].value) : 0.0;
- n = (sFormElements['nvalue'].value != '') ? parseInt(sFormElements['nvalue'].value) : 0;
- var r = (sFormElements['rvalue'].value != '') ? parseFloat(sFormElements['rvalue'].value) : 0.0;
- if (isNaN(a)) { document.getElementById("ErrorLabel").textContent = 'a value error!'; return; }
- if (isNaN(b)) { document.getElementById("ErrorLabel").textContent = 'b value error!'; return; }
- if (isNaN(eps)) { document.getElementById("ErrorLabel").textContent = 'eps value error!'; return; }
- if (isNaN(n)) { document.getElementById("ErrorLabel").textContent = 'n value error!'; return; }
- if (isNaN(r)) { document.getElementById("ErrorLabel").textContent = 'r value error!'; return; }
- if ( a >= b) { document.getElementById("ErrorLabel").textContent = 'a is not less than b error!'; return; }
- if ( eps <= 0) { document.getElementById("ErrorLabel").textContent = 'eps must be greater than 0 error!'; return; }
- if ( n <= 2) { document.getElementById("ErrorLabel").textContent = 'n must be greater than 2 error!'; return; }
- if ( r < 0 || r > 1) { document.getElementById("ErrorLabel").textContent = 'r must be between 0 and 1 error!'; return; }
- document.getElementById("ErrorLabel").textContent = 'Calculating...';
- // Step 0 - set variables
- var MaxIterations = 500; // m = 500 points at least with results
- var h = (b-a)/n; // step for points
- var D = 0; // initial false distance (max dist of all points)
- xl = new Array(n+1); // x*- exact
- xu = new Array(n+1); // x*+ exact
- // for trapezoid
- t = new Array(n+1); // t(i)
- xml = new Array(MaxIterations+1); // xml[0..m][0..n] - lower
- for (var i = 0; i <= MaxIterations; i++) { xml[i] = new Array(n+1); }
- xmu = new Array(MaxIterations+1); // xmu[0..m][0..n] - upper
- for (var i = 0; i <= MaxIterations; i++) { xmu[i] = new Array(n+1); }
- var el = new Array(n+1); // err- approx - exact
- var eu = new Array(n+1); // err+ approx - exact
- // for optimal (middle rectangle)
- to = new Array(n+1); // to(i)
- xoml = new Array(MaxIterations+1); // xoml[0..m][0..n] - lower
- for (var i = 0; i <= MaxIterations; i++) { xoml[i] = new Array(n+1); }
- xomu = new Array(MaxIterations+1); // xomu[0..m][0..n] - upper
- for (var i = 0; i <= MaxIterations; i++) { xomu[i] = new Array(n+1); }
- var eol = new Array(n+1); // err- approx - exact for opt
- var eou = new Array(n+1); // err+ approx - exact for opt
- var xtoml = new Array(MaxIterations+1); // xtoml[0..m][0..n] - lower
- for (var i = 0; i <= MaxIterations; i++) { xtoml[i] = new Array(n+1); }
- var xtomu = new Array(MaxIterations+1); // xtomu[0..m][0..n] - upper
- for (var i = 0; i <= MaxIterations; i++) { xtomu[i] = new Array(n+1); }
- // initial values
- for (var i = 0; i <= n; i++) { t[i] = a + i*h; }
- for (var i = 1; i <= n; i++) { to[i] = a + (2*i-1)*(h/2); }
- m = 0; // keep m < MaxIterations
- mo = 0; // keep mo < MaxIterations
- // parse functions once, outside of the loops
- var Pglx = Parser.parse(glx);
- var Pgux = Parser.parse(gux);
- var Pkx = Parser.parse(kx);
- var PHlx = Parser.parse(Hlx);
- var PHux = Parser.parse(Hux);
- var Pflx = Parser.parse(flx);
- var Pfux = Parser.parse(fux);
- var Pxlx = Parser.parse(xlx);
- var Pxux = Parser.parse(xux);
- // Step 1 - x0(ti) m=0
- for (var i = 0; i <= n; i++) { // trapezoid
- xml[0][i] = Pglx.evaluate({t: t[i], r: r});
- xoml[0][i] = xml[0][i];
- xmu[0][i] = Pgux.evaluate({t: t[i], r: r});
- xomu[0][i] = xmu[0][i];
- }
- for (var i=1; i <= n; i++) { // optimal (middle finger)
- xtoml[0][i] = Pglx.evaluate({t: to[i], r: r});
- xtomu[0][i] = Pgux.evaluate({t: to[i], r: r});
- }
- // Step 2 (the first iterative step)
- // trapezoid
- m = 1;
- for (var i = 0; i <= n; i++) {
- var sl = 0; var su = 0;
- for(var j = 1; j <= n; j++) {
- sl = sl +
- Pkx.evaluate({t: t[i], s: t[j-1]})
- *
- PHlx.evaluate({t: t[j-1], x: xml[m-1][j-1], r: r})
- +
- Pkx.evaluate({t: t[i], s: t[j]})
- *
- PHlx.evaluate({t: t[j], x: xml[m-1][j], r: r});
- su = su +
- Pkx.evaluate({t: t[i], s: t[j-1]})
- *
- PHux.evaluate({t: t[j-1], x: xmu[m-1][j-1], r: r})
- +
- Pkx.evaluate({t: t[i], s: t[j]})
- *
- PHux.evaluate({t: t[j], x: xmu[m-1][j], r: r});
- }
- xml[m][i] = xml[0][i] + Pflx.evaluate({t: t[i], x: xml[m-1][i], r: r}) + (h/2)*sl;
- xmu[m][i] = xmu[0][i] + Pfux.evaluate({t: t[i], x: xmu[m-1][i], r: r}) + (h/2)*su;
- }
- // optimal
- mo = 1;
- for (var i = 0; i <= n; i++) {
- var sl = 0; var su = 0;
- var stl = 0; var stu = 0;
- for(var j = 1; j <= n; j++) {
- sl = sl +
- Pkx.evaluate({t: t[i], s: to[j]})
- *
- PHlx.evaluate({t: to[j], x: xtoml[mo-1][j], r: r});
- stl = stl +
- Pkx.evaluate({t: to[i], s: to[j]})
- *
- PHlx.evaluate({t: to[j], x: xtoml[mo-1][j], r: r});
- su = su +
- Pkx.evaluate({t: t[i], s: to[j]})
- *
- PHux.evaluate({t: to[j], x: xtomu[mo-1][j], r: r});
- stu = stu +
- Pkx.evaluate({t: to[i], s: to[j]})
- *
- PHux.evaluate({t: to[j], x: xtomu[mo-1][j], r: r});
- }
- xoml[mo][i] = xoml[0][i] + Pflx.evaluate({t: t[i], x: xoml[mo-1][i], r: r}) + h*sl;
- xomu[mo][i] = xomu[0][i] + Pfux.evaluate({t: t[i], x: xomu[mo-1][i], r: r}) + h*su;
- if (i > 0) { xtoml[mo][i] = xtoml[0][i] + Pflx.evaluate({t: to[i], x: xtoml[mo-1][i], r: r}) + h*stl; }
- if (i > 0) { xtomu[mo][i] = xtomu[0][i] + Pfux.evaluate({t: to[i], x: xtomu[mo-1][i], r: r}) + h*stu; }
- }
- // Steps 3-4 (the generic iterative step)
- // trapezoid
- do {
- m = m+1; // next iteration
- if ( m > MaxIterations ) {
- alert("Iterations exceeded "+MaxIterations+"! Stopped!"); return;
- }
- for (var i = 0; i <= n; i++) {
- var sl = 0; var su = 0;
- for(var j = 1; j <= n; j++) {
- sl = sl +
- Pkx.evaluate({t: t[i], s: t[j-1]})
- *
- PHlx.evaluate({t: t[j-1], x: xml[m-1][j-1], r: r})
- +
- Pkx.evaluate({t: t[i], s: t[j]})
- *
- PHlx.evaluate({t: t[j], x: xml[m-1][j], r: r});
- su = su +
- Pkx.evaluate({t: t[i], s: t[j-1]})
- *
- PHux.evaluate({t: t[j-1], x: xmu[m-1][j-1], r: r})
- +
- Pkx.evaluate({t: t[i], s: t[j]})
- *
- PHux.evaluate({t: t[j], x: xmu[m-1][j], r: r});
- }
- xml[m][i] = xml[0][i] + Pflx.evaluate({t: t[i], x: xml[m-1][i], r: r}) + (h/2)*sl;
- xmu[m][i] = xmu[0][i] + Pfux.evaluate({t: t[i], x: xmu[m-1][i], r: r}) + (h/2)*su;
- }
- // calculate D as max(D(x(m,t(i)), x(m-1,t(i))) for i = 0..n
- D = 0;
- for (var i = 0; i <= n; i++) {
- var Di = Math.max(Math.abs(xml[m][i] - xml[m-1][i]), Math.abs(xmu[m][i] - xmu[m-1][i]));
- if ( Di > D ) { D = Di };
- }
- } while ( (D >= eps) && (m < MaxIterations) );
- // possible also check m is reasonable to avoid endless looping if no convergence
- if ( m >= MaxIterations)
- {
- alert("Endless loop detected (>"+MaxIterations+" iterations) in trapezoid!");
- return;
- }
- // optimal (middle rectangle)
- do {
- mo = mo+1; // next iteration
- if ( mo >= MaxIterations ) {
- alert("Iterations exceeded "+MaxIterations+"! Stopped!"); return;
- }
- for (var i = 0; i <= n; i++) {
- var sl = 0; var su = 0;
- var stl = 0; var stu = 0;
- for(var j = 1; j <= n; j++) {
- sl = sl +
- Pkx.evaluate({t: t[i], s: to[j]})
- *
- PHlx.evaluate({t: to[j], x: xtoml[mo-1][j], r: r});
- stl = stl +
- Pkx.evaluate({t: to[i], s: to[j]})
- *
- PHlx.evaluate({t: to[j], x: xtoml[mo-1][j], r: r});
- su = su +
- Pkx.evaluate({t: t[i], s: to[j]})
- *
- PHux.evaluate({t: to[j], x: xtomu[mo-1][j], r: r});
- stu = stu +
- Pkx.evaluate({t: to[i], s: to[j]})
- *
- PHux.evaluate({t: to[j], x: xtomu[mo-1][j], r: r});
- }
- xoml[mo][i] = xoml[0][i] + Pflx.evaluate({t: t[i], x: xoml[mo-1][i], r: r}) + h*sl;
- xomu[mo][i] = xomu[0][i] + Pfux.evaluate({t: t[i], x: xomu[mo-1][i], r: r}) + h*su;
- if (i > 0) xtoml[mo][i] = xtoml[0][i] + Pflx.evaluate({t: to[i], x: xtoml[mo-1][i], r: r}) + h*stl;
- if (i > 0) xtomu[mo][i] = xtomu[0][i] + Pfux.evaluate({t: to[i], x: xtomu[mo-1][i], r: r}) + h*stu;
- }
- // calculate D
- D = 0;
- for (var i = 0; i <= n; i++) {
- var Di = Math.max(Math.abs(xoml[mo][i] - xoml[mo-1][i]), Math.abs(xomu[mo][i] - xomu[mo-1][i]));
- if ( Di > D ) { D = Di };
- }
- } while ( (D >= eps) && (mo < MaxIterations) );
- // possible also check m is reasonable to avoid endless looping if no convergence
- if ( mo >= MaxIterations)
- {
- alert("Endless loop detected (>"+MaxIterations+" iterations) in optimal formula!");
- return;
- }
- Calculated = m > 0; // flag for the graphics plot
- // calculate the exact solution
- for (var i = 0; i <= n; i++) {
- xl[i] = Pxlx.evaluate({t: t[i], r: r});
- el[i] = Math.abs(xl[i] - xml[m][i]);
- eol[i] = Math.abs(xl[i] - xoml[mo][i]);
- xu[i] = Pxux.evaluate({t: t[i], r: r});
- eu[i] = Math.abs(xu[i] - xmu[m][i]);
- eou[i] = Math.abs(xu[i] - xomu[mo][i]);
- }
- // draw a table and plot a graphics
- document.getElementById("ErrorLabel").textContent = 'Done calculation...';
- var errors ='<caption>Errors</caption><tr><th>t<sub>i</sub></th><th>e<sub>i-</sub></th><th>eo<sub>i-</sub></th><th>e<sub>i+</sub></th><th>eo<sub>i+</sub></th></tr>';
- for (var i = 0; i <= n; i++) {
- errors+='<tr><td>'+myFixed(t[i],2)+'</td><td>'+el[i].toFixed(6)+'</td><td>'+eol[i].toFixed(6)+'</td><td>'+eu[i].toFixed(6)+'</td><td>'+eou[i].toFixed(6)+'</td></tr>';
- }
- var values ='<caption>Values</caption><tr><th>t<sub>i</sub></th><th>x<sub>i-</sub></th><th>xc<sub>i-</sub></th><th>xo<sub>i-</sub></th><th>x<sub>i+</sub></th><th>xc<sub>i+</sub></th><th>xo<sub>i+</sub></th></tr>';
- for (var i = 0; i <= n; i++) {
- values+='<tr><td>'+myFixed(t[i],2)+'</td><td>'+xl[i].toFixed(6)+'</td><td>'+xml[m][i].toFixed(6)+'</td><td>'+xoml[mo][i].toFixed(6)+'</td><td>'+xu[i].toFixed(6)+'</td><td>'+xmu[m][i].toFixed(6)+'</td><td>'+xomu[mo][i].toFixed(6)+'</td></tr>';
- }
- document.getElementById("ResultLabel1").innerHTML = '<center>Numerical results for n='+n+', r='+r.toFixed(2)+' (iterations: '+m+' classical, '+mo+' optimal)</center>';
- document.getElementById("ResultsErrors").innerHTML = errors;
- document.getElementById("ResultsValues").innerHTML = values;
- document.getElementById("ResultLabel2").innerHTML = '';
- document.getElementById('animated-result').style.display = ''; // show the result
- } // catch the error and show the eror message
- catch(err) {
- var vDebug = "";
- for (var prop in err)
- {
- vDebug += "property: "+ prop+ " ["+ err[prop]+ "], ";
- }
- vDebug += "[" + err.toString() + "]";
- document.getElementById('animated-result').style.display = 'none'; // hide result
- document.getElementById("ErrorLabel").textContent = 'Error: ' + err.message +
- ' ' + vDebug;}
- }
- </script>
- </p>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement