//variabili globali var kn,epsn; //funz(x): calcolo dei valori della funzione corrispondenti all'argomento x function funz(x) { return Math.cos(x)-kn*x; } function funz0(k,x) { k=parseFloat(k); x=parseFloat(x); return Math.cos(x)-k*x; } //bisezione(x1,x2) è la funzione che implementa l'algoritmo. function bisezione(x1,x2) { //Le variabili f1,f2,xm, fm sono locali: possono venir dichiarate ed inizializzate quando servono. f1 = funz(x1); f2 = funz(x2); //Condizioni di fine dell'algoritmo if (f1==0) return x1; if (f2==0) return x2; xm = (x1+x2)/2; fm = funz(xm); if (fm==0) return xm; if ((x2-x1)<epsn) return xm; //Questa è la condizione usuale di fine dell'algoritmo. //Ricorsione: la funzione invoca sé stessa ma su un intervallo dimezzato if (f1*fm<0) return bisezione(x1,xm) else return bisezione(xm,x2); } /* La funzione approssimaZero(x1,x2) è l'interfaccia tra HTML e Javascript: -inizializza le variabili globali; -controlla la validità dell'intervallo di ricerca; -avvia l'algoritmo di bisezione. */ function arrotonda(x) { return Math.floor(x*1/epsn)*epsn; } function approssimaZero(ks,as,bs,epss) { kn=parseFloat(ks); epsn=parseFloat(epss); an=parseFloat(as); bn=parseFloat(bs); if (bn<an>0) { alert("Cambiare gli estremi dell'intervallo."); return; } else return bisezione(an,bn); } function mostraJS(nomefilejs) { jsWindow = window.open(); jsWindow.document.open("text/plain") jsWindow.location = nomefilejs; }