Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    [c] Piano cartesiano e distriduzione normale

    Ciao a tutti dovrei realizzare il seguente programma:
    "Realizzare un programma che dato in input media e varianza sia in grado di disegnare sul piano cartesiano il grafico di una distribuzione normale";
    x calcolare la normale ho scritto la formula e funziona ora il problema è come faccio a fare il grafico dato che il risultato della funzione è sempre un numero tio 0.00457?

    il grafico dovrebbe essere una cosa del genere:



    P.S. Come compilatore uso turbo c++ della borland
    grazie
    ciao

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Lo scali, moltiplicandolo per una costante ...

  3. #3
    Il problema è per quanto moltiplico?
    perchè il risultato potrebbe essere 0,00394
    oopure 0,010859
    la risoluzione di turbo c è 640 x480
    come potrei fare x trovarmi i punti?
    grazie

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Puoi calcolare la funzione due volte.

    La prima volta trovi il massimo e determini la costante.

    La seconda volta utilizzi la costante in modo da essere sicuro che ci stia tutta.

  5. #5
    Originariamente inviato da oregon
    Puoi calcolare la funzione due volte.

    La prima volta trovi il massimo e determini la costante.

    La seconda volta utilizzi la costante in modo da essere sicuro che ci stia tutta.
    scusami sono abbastanza niubbo del c potresti spiegarmi meglio nn ho capito cosa intendi?
    grazie

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Con quale codice vorresti visualizzare la funzione?

  7. #7
    Il codice C che ho sritto finora è questo:
    #include<conio.h>
    #include<iostream.h>
    #include<graphics.h>
    #include<math.h>

    void main()

    {
    double e=2.71828;
    double p,x,m,var,sca,appo;
    clrscr();
    //Dati programma
    x=16;
    m=7;
    var=12;



    sca= sqrt(var);
    appo=-(pow(x-m,2)/(2*var));
    p=(1/(sca*sqrt(2*M_PI)))*pow(e,appo);
    cout<<"Risultato: "<<p;
    getch();
    //Fine Dati programma

    int d=DETECT,t;

    initgraph(&d,&t,"c:\\tc\\bgi");
    setbkcolor(GREEN);
    cleardevice();

    getch();
    closegraph();

    }
    Della grafica come vedi ho messo solo l'inizializzazione perchè non so come proseguire...
    P.S. Il p c'è il risultato; per disegnare il grafico dovrei trovare un po di punti modificando il valore della x e ricalcolado ogni volta p...
    grazie
    ciao

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da frizzo28
    per disegnare il grafico dovrei trovare un po di punti modificando il valore della x e ricalcolado ogni volta p...
    Esatto ... lo farai in un ciclo in cui cambiera' il valore di x.

    Questo ciclo lo esegui due volte.

    Una prima volta trovi il valore massimo di p tra tutti quelli restituiti e alla fine trovi la costante con cui moltiplicare i vari p per farli stare tutti nel grafico.

    La seconda volta utilizzi la costante per scalare correttamente tutti i p ...

  9. #9
    Finora ho fatto così:
    #include<conio.h>
    #include<iostream.h>
    #include<graphics.h>
    #include<math.h>

    double normale(int x,int m,int var);

    void main()

    {

    double ris,max=0.0;
    int x,m,var;
    clrscr();
    //Dati programma

    m=7;
    var=12;
    //Fine Dati programma

    //Ciclo per vedere il valore massimo
    for(x=0;x<100;x++)
    {
    ris=normale(x,m,var);
    if(ris>max)max=ris;
    }
    cout<<ris;
    getch();
    /*
    int d=DETECT,t;

    initgraph(&d,&t,"c:\\tc\\bgi");
    setbkcolor(GREEN);
    cleardevice();

    getch();
    closegraph();
    */
    }



    double normale(int x,int m,int var)
    {
    double e=2.71828;
    double sca,appo,p;
    sca= sqrt(var);
    appo=-(pow(x-m,2)/(2*var));
    p=(1/(sca*sqrt(2*M_PI)))*pow(e,appo);
    return p;
    }
    Solo che come numero max mi restituisce 7.947585e-155
    come faccio a trovare la costante ora?
    grazie ciao

    P.S. dovrebbe venire una cosa tipo questa : http://www.stattucino.com/berrie/dsl/index.html

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Mi sembra troppo piccolo come valore massimo .. ne sei sicuro?

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 © 2024 vBulletin Solutions, Inc. All rights reserved.