Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente bannato
    Registrato dal
    Dec 2005
    Messaggi
    19

    javascript: CODICE DIFETTOSO

    salve vi allego questo programmino che calcola l'integrale definito di sen(x) tra b e a. Il codice funzionava fin quando non ho aggiunto l'unico if, dove sbaglio? qualcuno può spegarmelo? Un ringraziamento anticipato a chiunque risolva il problema P.S. come si fa ad allegare del codice in modo che voi lo visualizziate indetato?


    <html>
    <head>
    <script type="text/javascript">
    function calcolo() {
    //acquisizione estremi [a,b] e numero intervalli n
    //conversione da stringa a reale con parseFloat
    var b = parseFloat(document.getElementById('estremB').valu e, 10);
    var a = parseFloat(document.getElementById('estremA').valu e, 10);
    var n = parseFloat(document.getElementById('intervN').valu e, 10);
    var h = (b-a)/n; //10
    var integ=0,x1,x2,x3,comodo=0,segno=1;

    if (b<a) {
    segno=-1;
    comodo=b;
    b=a;
    a=comodo;
    }
    //20
    //metodo dei rettangoli
    for (x=a; x<b; x=x+h)
    integ=integ+(h*Math.sin(x));
    integ=integ*segno;
    //imposta il valore della textbox "risultato" al valore dell'integrale calcolato,
    //visualizzando così il risultato
    document.mioForm.risultRet.value = integ;
    integ=0; //30

    //metodo dei trapezi
    for (x2=a+h; x2<b; x2=x2+h) {
    x1=x2-h;
    integ=integ+(((Math.sin(x1)+Math.sin(x2))*h)/2);
    }
    integ=integ*segno;
    document.mioForm.risultTrap.value = integ;
    integ=0;
    //40
    //metodo di Cavalieri-Simpson o delle parabole
    for (x3=a+(2*h); x3<b; x3=x3+h) {
    x2=x3-h;
    x1=x2-h;
    integ=integ+(((Math.sin(x1)+Math.sin(x2)+Math.sin( x3))*h)/3);
    }
    integ=integ*segno;
    document.mioForm.risultParab.value = integ;
    }
    </script> //50
    </head>



    <body bgcolor=cyan>

    <center>
    <form align=center name=mioForm>
    <table border="0" cellspacing="30">
    <td> b: <input type="text" id="estremB" size="10">
    <td> a: <input type="text" id="estremA" size="10">
    <td> n: <input type="text" id="intervN" size="10">
    </table>
    <input type="button" name="calcola" value="CALCOLA" onClick="calcolo();">





    <FONT color="red"> <pre> <h4> METODO DEI RETTANGOLI: <input type="text" name="risultRet" size="40"> </h4> </pre> </FONT>




    <FONT color="yellow"> <pre> <h4> METODO DEI TRAPEZI: <input type="text" name="risultTrap" size="40"> </h4> </pre> </FONT>




    <FONT color="green"> <pre> <h4> METODO DI Cavalieri-Simpson: <input type="text" name="risultParab" size="40"> </h4> </pre> </FONT>
    </form>
    </center>
    </body>
    </html>

  2. #2
    il codice neanche l'ho letto.... adesso lo copio e vedo, ma intanto prova a dichiarare le due variabili che hai aggiunto nel tuo if non presenti e non dichiarate nello script

    var segno;
    var comodo;

  3. #3

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    a me funziona perfettamente anche senza 'if' e cmq potevi continuare la discussione originaria...


    che errore ti dà senza if? Con quali browser e/o valori di a,b, e n?

    Ora vado a casa... a domani
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    Utente bannato
    Registrato dal
    Dec 2005
    Messaggi
    19

    risp

    no, l'errore lo da con l'if, va in loop e mi esce un msg nel quale explorer mi avvisa che uno script lo sta rallentando e per tanto mi consiglia di terminare tale script.....ma.....

  6. #6
    errore lo da se b è maggiore di a, quindi il controllo if ci vuole...

    solo che credo sia non corretto questo segno=-1;

    ora vediamo...

  7. #7
    Utente bannato
    Registrato dal
    Dec 2005
    Messaggi
    19

    ti spiego...

    in pratica dovresti ricordare un po' di calcolo integrale.....o meglio la semplice relazione per cui integale f(x)(tra b e a)= - integrale f(x)(tra a e b) (1). Quindi nel caso in cui b>a scambio i valori tra a e b, svolgo normalmentea l'integrale con i tre metodi e moltiplico ciascun risultato per -1 in modo da verificare la relazione sovrastante la (1)



    chiaro + o -??????

  8. #8
    alert(2+(-3));

    quanto fara' ? ... 5 o -1 ?
    e facendo -1 ... come possono quei cilci for uscirsene illesi ?


    x1 = 1; x1 < 2; x1 = x1 + (-qualcosa)

    dove meno qualcosa sarà h ... e quindi sara'

    x1 = 1; x1 < 2; x1 = x1 - qualcosa ... e quando c'arriva a 2 se sottrai ?




    P.S. cos'e' il calcolo integrale ? ... non sto' scherzando
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  9. #9
    Utente bannato
    Registrato dal
    Dec 2005
    Messaggi
    19

    ma..........

    in che senso cambiare l'h????????

  10. #10
    ti sto' rispondendo in pvt ... te l'ho detto, non capisco niente di integrali, ma questo in programmazione


    for(a = 0; a < 2; a = a -1)


    è sbagliatissimo ... ed andrà sempre in loop infinito

    se h è negativo ( quindi al posto del -1 mettigli il valore che ti pare negativo ... ) non uscirai mai dai tuoi cilci for ... quindi o cambi segno ad h, oppure addio funzione .


    concludo, poiche' il problema e' solo ed esclusivamente questo:
    non posso darti la soluzione, ti ho detto dove il codice non puo' andare, sta' a te correggere l'errore





    [edit]
    ultimo esempio, ce la faro' ???

    date queste variabili:
    var a;
    var b = 2;
    var h = -0.00000023;


    faccio un for cosi'
    for(a = 0; a < b; a = a + h)
    // errore, a viene decrementato non sara' mai >= b, questo for è inutile


    faccio cosi'
    for(a = 0; a < b; a += h)
    // errore, idem come sopra


    faccio cosi'
    for(a = 0; a < b; a = a + (h))
    // sempre li siamo ... numero positivo piu' numero negativo e' uguale alla sottrazione del negativo dal positivo e non viceversa




    ... e dire che se uno calcola gli integrali a questo dovrebbe pensarci da quando ha il biberon

    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.