Показать сообщение отдельно
  #1 (permalink)  
Старый 22.12.2016, 02:25
Новичок на форуме
Отправить личное сообщение для Agromira Посмотреть профиль Найти все сообщения от Agromira
 
Регистрация: 20.12.2016
Сообщений: 2

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>
Ответить с цитированием