Nan при вычислении элемента массива
Возникла следующая проблема: пользователь вводит U и V, далее эти значения(с индексом 0) записываются в массив. Но при вычислении элемента другого массива (с использованием значений U и V) появляется Nan. При этом если определить первые значения в массивах U, V самостоятельно ошибки нет.
Заранее извиняюсь за ужасный код, первая программа :) var kU=[]; var kV=[]; var Ui=[2]; var Vi=[2]; function init() { var Button=document.getElementById("chetButton"); Button.onclick=chet; } window.onload=init; function poiskn() { var UInput=document.getElementById("tn"); var tn=UInput.value; var VInput=document.getElementById("chag"); h=VInput.value; n=(tn-0)/h; return n; } //function UV0() //var UInput=document.getElementById("Ui"); //var u=UInput.value; //var VInput=document.getElementById("Vi"); //var v=VInput.value; // Ui[0]=u; // Vi[0]=v; // return Ui, Vi; //} function lookUV ( ku, kv, u0, v0) { u=u0[u0.length-1]+((ku[0]+2*ku[1]+2*ku[2]+ku[3])/6); v=v0[v0.length-1]+((kv[0]+2*kv[1]+2*kv[2]+kv[3])/6); u0.push(u); v0.push(v); return u0, v0; } function lookK(ku, kv, u0, v0) { var aInput=document.getElementById("victim"); var a=aInput.value; var bInput=document.getElementById("predator"); var b=bInput.value; var cInput=document.getElementById("deadPredator"); var c=cInput.value; var dInput=document.getElementById("deadVictim"); var d=dInput.value; var U=u0[u0.length-1]; var V=v0[u0.length-1]; ku[0]=h*(a*U-b*U*V); //тут считается нормально kv[0]=h*(c*U*V-d*V); ku[1]=h*(a*(U+ku[0]/2)-b*(U+ku[0]/2)*(V+kv[0]/2)); //появляется ошибка в вычислении kv[1]=h*(c*(U+ku[0]/2)*(V+kv[0]/2)-d*(V+kv[0]/2)); ku[2]=h*(a*(U+ku[1]/2)-b*(U+ku[1]/2)*(V+kv[1]/2)); //отсюда уже началось Nan kv[2]=h*(c*(U+ku[1]/2)*(V+kv[1]/2)-d*(V+kv[1]/2)); ku[3]=h*(a*(U+ku[2])-b*(U+ku[2])*(V+kv[2])); kv[3]=h*(c*(U+ku[2])*(V+kv[2])-d*(V+kv[2])); return ku, kv; } function chet (){ // UV0(); poiskn() for (var i=0; i<=n; i++){ lookK(kU, kV, Ui, Vi); lookUV(kU, kV, Ui, Vi); console.log("k_u="+ kU); console.log( "U"+ Ui); console.log("k_v="+ kV); console.log( "V"+ Vi); } } <p> A: <input type="number" id="victim"></p> <p> B: <input type="number" id="predator" ></p> <p> C: <input type="number" id="deadPredator"></p> <p> D: <input type="number" id="deadVictim"></p> <p> tn: <input type="number" id="tn"></p> <p> h: <input type="number" id="chag" ></p> <p> U(t): <input type="number" id="Ui"></p> <p> V(t): <input type="number" id="Vi" ></p> |
Agromira,
в инпутах значение это строка а не число ... поэтому + добавьте везде var a= +aInput.value; |
Спасибо Вам большое! :)
|
Часовой пояс GMT +3, время: 14:39. |