Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026

    Errori con il seno in java

    Buon giorno a tutti.
    Mi stò cimentando nel calcolare il seno di un angolo per costruire un metodo che calcoli poi anche il lato e l' ipotenusa.
    Ho usato il metodo
    codice:
    Math.sin(b);
    Questo è il listato
    codice:
    import java.io.*;
    import java.lang.*; // predefinita
    class ProvaSeno{
    	public static void main (String[]args){
    		double catetoa, b;
    		b = 5 ;
    		catetoa = Math.sin(b);
    		System.out.println("Questo e' il seno di 5: " + catetoa);
    	}
    }
    ma come risultato su un valore di 5 ho ottenuto questo : -0.9589242746631385
    mentre con la calcolatrice di windows ho ottenuto sempre sul valore di 5 : 0.0871557427476581.
    Qualcuno sà dirmi il perchè di questo errore? Forse devo fare qualche trasformazione?
    Grazie di un qualsiasi suggerimento.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Errori con il seno in java

    Originariamente inviato da Ironmax
    Qualcuno sà dirmi il perchè di questo errore?
    L'argomento è in radianti ... non gradi (e Math.toRadians() aiuta )
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    Grazie per il suggerimento andbin.
    Devo dire che come valore si avvicina a quello che mi dà la calcolatrice windows quando il grado che inserisco e basso ad esempio 5 come valore ma l'errore aumenta con l'aumentare del valore ad esempio con un grado di 80 e sfora oltre il valore uno che a 90 gradi deve essere il seno.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Ironmax
    Grazie per il suggerimento andbin.
    Devo dire che come valore si avvicina a quello che mi dà la calcolatrice windows quando il grado che inserisco e basso ad esempio 5 come valore ma l'errore aumenta con l'aumentare del valore ad esempio con un grado di 80 e sfora oltre il valore uno che a 90 gradi deve essere il seno.
    Cioè??

    System.out.println(Math.sin(Math.toRadians(80)));
    = 0.984807753012208

    Calcolatrice di Windows, seno di 80:
    = 0,98480775301220805936674302458952

    A parte la ovvia differenza nel numero di cifre significative .... cosa non ti quadra?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    Ok adesso va bene, non avevo fatto ciò che mi hai fatto vedere adesso è cioè di mettere i radianti all' interno del seno (Math.sin(Math.toRadians(80))), mentre io facevo direttamente in radianti quindi solo con il metodo Math.toRadians(80);

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Ironmax
    solo con il metodo Math.toRadians(80);
    Aspetta ... fammi capire. Usavi solo toRadians() e pensavi di avere già il seno??? VVoVe:
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    Si supponevo proprio così, pensavo che bastasse solamente il metodo toRadians() ed inserire dentro il parametro, mentre invece come mi hai fatto vedere bisognava che il toRadians() doveva essere contenuto nel sin().

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Ironmax
    il toRadians() doveva essere contenuto nel sin().
    Io lo davo per scontato .....cioè mi pare ovvio.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    Ho bisogno ancora di una mano.
    Praticamente quando divido un lato con l'ipotenusa ad esempio lato 40 ipotenusa 50
    40/50=0,8 di questo 0,8 devo ancora fare il seno inverso ed ottengo 53.1301023541...dalla calcolatrice di windows.
    Ho provato in diverse maniere tipo:
    sinmen = Math.sin(0.8);
    sinmen = Math.asin(0.8);
    sinmen = Math.toRadians(Math.asin(0.8));
    ec...
    Ma non sono riuscito ad ottenere il seno inverso e quindi i gradi dell' angolo in questione.
    Continuo ad ottenere sempre numeri che partono da 0,.... e non i gradi 53.1301023541...

  10. #10
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Ironmax
    Ma non sono riuscito ad ottenere il seno inverso e quindi i gradi dell' angolo in questione.
    Continuo ad ottenere sempre numeri che partono da 0,.... e non i gradi 53.1301023541...
    Guarda che il valore di ritorno di asin è sempre in radianti Per avere i gradi usa toDegrees.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

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.