// -------------------- Etude de fonctions -------------------- var etudeX = new Array() var etudeY = new Array() var etudeD = new Array() var limGauche = new Array() var limDroite = new Array() var listeIndefini = new Array() var listeZeros = new Array() var intervalEtudeGauche = -50 var intervalEtudeDroite = 50 var precisionEtude = 0.001 function etudier(fct){ if(check(fct)){ prepareEtude(fct) pariteFct() signeFct(fct) asymptotes() courbure() ensembleDefinition() } } // Préparation à l'étude de fonction function prepareEtude(fct){ listeIndefini = new Array() var f = function(x){ return eval(fct) } // Calcul de tous les points de la fonction var i = 0 for(var x=intervalEtudeGauche; x<=intervalEtudeDroite; x+=precisionEtude){ etudeX[i] = x etudeY[i] = Math.round(f(x)*10000)/10000 etudeD[i] = Math.round(1000000*(f(x+0.0001)-f(x-0.0001))/(2*0.0001))/1000000 i++ } // Calcul des extrémités de la fonction var x = -100000 limGauche[0] = f(x) x = -10000 limGauche[1] = f(x) x = 100000 limDroite[0] = f(x) x = 10000 limDroite[1] = f(x) } // Recherche de l'ensemble de définition function ensembleDefinition(){ var fctDefinie = false var dejaDefinie = false var EDF = "" if(!isNaN(limGauche[0])){ fctDefinie = true dejaDefinie = true EDF += "]-∞;" } if(!isNaN(limGauche[1]) && !fctDefinie){ fctDefinie = true dejaDefinie = true EDF += "]-∞;" } for(var i=0; i0){ positif = Math.floor(etudeY[posZero+i]) } else{ positif = Math.ceil(etudeY[posZero+i]) } if(etudeY[posZero-i]>0){ negatif = Math.floor(etudeY[posZero-i]) } else{ negatif = Math.ceil(etudeY[posZero-i]) } if(positif<25000 && positif>-25000){ if(positif != negatif){ paire = false //alert(i+" ; "+posZero+" ; "+etudeX.length+" ; "+positif+" ; "+negatif) } if(positif != (-negatif)){ impaire = false } } } if(paire){ document.getElementById("etudeParite").innerHTML = sankoreLang[lang].ev; } else if(impaire){ document.getElementById("etudeParite").innerHTML = sankoreLang[lang].unev; } else{ document.getElementById("etudeParite").innerHTML = sankoreLang[lang].na; } } function zeroFct(){ listeZeros = new Array() var listeZerosArr = new Array() var precZeros = 5 for(var i=0; i0){ signe[0] = "+" signePlus[0] = limGauche[1] signeMoins[0] = limGauche[0] } else{ signe[0] = "-" signePlus[0] = limGauche[1] signeMoins[0] = limGauche[0] } for(var i=0; i0){ dernier = i } } if(signe[signe.length-1]=="-"){ if(etudeY[i]>0){ signe.push("+") signePlus.push(etudeX[i]) signeMoins.push(etudeX[dernier]) //alert(signe+" ; "+signePlus+'\n'+etudeY[i+1]+" ; "+etudeY[i]+" ; "+etudeY[i-1]+" ; "+etudeY[i-2]+'\n'+etudeX[i+1]+" ; "+etudeX[i]+" ; "+etudeX[i-1]+" ; "+etudeX[i-2]) } else if(etudeY[i]<0){ dernier = i } } } var valeurPlus, valeurMoins, millieu, precisionZero listeZeros = new Array() for(var i=1; i0){ x = millieu if(eval(fct)>0){ valeurPlus=millieu } else if(eval(fct)<0){ valeurMoins=millieu } else{ break } } else if(eval(fct)<0){ x = millieu if(eval(fct)<0){ valeurPlus=millieu } else if(eval(fct)>0){ valeurMoins=millieu } else{ break } } else{ millieu = valeurPlus break } x = valeurPlus precisionZero = eval(fct) x = valeurMoins precisionZero -= eval(fct) if(precisionZero>0.0001){ break } } listeZeros.push(Math.round(millieu*100)/100) } var texteZeros = "" if(listeZeros==""){ zeroFct() texteZeros = "~ " } var texte = sankoreLang[lang].signe; var aSupprimer = new Array() for(var i=0; i" if(listeZeros[i]!=undefined){ x = listeZeros[i] if(isFinite(eval(fct))){ texte += ""+listeZeros[i]+"" } else{ texte += ""+listeZeros[i]+"" listeIndefini.push(listeZeros[i]) aSupprimer.push(i) } } } document.getElementById("etudeSigne").innerHTML = texte for(var i=0; i" + sankoreLang[lang].curve_higher + "" } else if(limGauche[0]>limRound){ document.getElementById("etudeAHG").innerHTML = "y = "+limRound +" " + sankoreLang[lang].curve_lower + "" } else{ document.getElementById("etudeAHG").innerHTML = "y = "+limRound } } else{ document.getElementById("etudeAHG").innerHTML = sankoreLang[lang].na; } if(Math.abs(limDroite[0])<1000){ var limRound = Math.round(limDroite[0]*100)/100 if(limDroite[0]" + sankoreLang[lang].curve_lower + "" } else if(limDroite[0]>limRound){ document.getElementById("etudeAHD").innerHTML = "y = "+limRound +" " + sankoreLang[lang].curve_higher + "" } else{ document.getElementById("etudeAHD").innerHTML = "y = "+limRound } } else{ document.getElementById("etudeAHD").innerHTML = sankoreLang[lang].na; } // Verticales var texteAV = "" for(var i=0; i" } document.getElementById("etudeAV").innerHTML = texteAV } function courbure(){ var texteMin = ""; var texteMax = ""; var texteI = ""; var nbrI = 0; var i; for(i=0; i0){ texteMin += "
" + sankoreLang[lang].min + "("+Math.round(etudeX[i]*10000)/10000+";"+etudeY[i]+")"; } else if(etudeD[i-1]>0 && etudeD[i+1]<0){ texteMax += "
" + sankoreLang[lang].max + "("+Math.round(etudeX[i]*10000)/10000+";"+etudeY[i]+")"; } else{ nbrI++; texteI += '
I'+nbrI+"("+Math.round(etudeX[i]*10000)/10000+";"+etudeY[i]+")"; } } } if(texteMin==""){ texteMin = "
" + sankoreLang[lang].no_min; } if(texteMax==""){ texteMax = "
" + sankoreLang[lang].no_max; } if(texteI==""){ texteI = "
Aucun I"; } document.getElementById("etudeMin").innerHTML = texteMin; document.getElementById("etudeMax").innerHTML = texteMax; }