Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [C++] Funzione per calcolo minimo e massimo

    Salve, sono nuovo nel forum.Sono uno studente di ingegneria, vi scrivo perché ho un problema con un esercizio, riguardante la ricerca del minimo e massimo di una funzione in un intervallo. Questo è il testo:
    Scrivere un programma C++ che utilizzando la libreria cmath:
    a) Implementi la seguente funzione (definita tra valori reali a doppia precisione): 푓(푥) = 푥^(2) − 푥 − 1 b) Una volta in esecuzione, chieda all’utente di inserire i valori 푥0,푥푓 e 푠푡푒푝푥 (reali a doppia precisione) c) Calcoli la funzione (e ne visualizzi il valore) in tutti i punti compresi nell’ intervallo 푥 ∈ [푥0,푥푓] distanziati di un parametro 푠푡푒푝푥
    d) Visualizzi, al termine dell’esecuzione, i valori minimo (푓푚푖푛) e massimo (푓푚푎푥) assunti dalla funzione nell’intervallo;
    I primi 3 punti sono riuscito a farli (il programma fa ciò che deve), ma non so cosa fare per il 4 punto. Vi posto il codice
    #include <iostream>
    #include <cmath>
    using namespace std;
    double funzione ( double x)
    {
    return pow(x,2)-x-1;
    }
    int main()
    {
    double x0,xf,stepx;
    cout<<"inserire x0: ";
    cin>>x0;
    cout<<"inserire xf: ";
    cin>>xf;
    cout<<"inserire stepx: ";
    cin>>stepx;
    for (double x=x0;x<=xf;x+=stepx)
    cout<<funzione(x)<<endl;
    cout<<endl;

    }
    Qui mi sono fermato. Spero possiate aiutarmi, vi ringrazio in anticipo.

  2. #2
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    ma è giapponese?
    Per gli Spartani e Sparta usa spartan Il mio github

  3. #3
    Quote Originariamente inviata da linoma Visualizza il messaggio
    ma è giapponese?
    ahahah non so perché abbia fatto così, comunque in sintesi: data la funzione x2-x-1 devo scegliere un intervallo (x0,xf) e trovare minimo e massimo.

  4. #4
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Intanto ti servono due variabili dove memorizzare i valori massimo e minimo della funzione.
    Poi rifletti un attimo: quando un numero reale è sicuramente massimo rispetto a ogni altro reale? (E viceversa per il minimo.)
    Inizializzando le variabili minimo/massimo con tali valori (tenendo presente le limitazioni dei double), fai un confronto con quanto restituisce la funzione e scegli il valore minimo/massimo di conseguenza.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  5. #5
    Quote Originariamente inviata da shodan Visualizza il messaggio
    Intanto ti servono due variabili dove memorizzare i valori massimo e minimo della funzione.
    Poi rifletti un attimo: quando un numero reale è sicuramente massimo rispetto a ogni altro reale? (E viceversa per il minimo.)
    Inizializzando le variabili minimo/massimo con tali valori (tenendo presente le limitazioni dei double), fai un confronto con quanto restituisce la funzione e scegli il valore minimo/massimo di conseguenza.
    niente da fare, non parte...ho provato inizializzando il min=0 e discutendolo con if , ma non funziona..puoi farmi vedere almeno il codice per il massimo?poi cerco di ricavare quello per il minimo. grazie ancora

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Perché non provi ad arrivarci da solo?

    Che vuol dire "non parte"?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Ragiona: min non va inizializzato a 0 (cosa scontata visto che il punto di minimo di quella funzione è per x = 0.5 e vale -1.25), ma a un valore numerico tale che ogni altro numero sia inferiore a quel valore numerico.
    Detta in parole povere ogni reale è sicuramente minore di +inf e maggiore di -inf (Analisi 1).
    Tali valori (puramente teorici) tradotti in informatica e relativi ai double, fanno si che ogni double è sicuramente minore del massimo double rappresentabile dalla macchina e sicuramente maggiore del minimo double rappresentabile dalla macchina.
    Le costanti da usare sono DBL_MIN e DBL_MAX e min/max vanno inizializzati a tali valori, tendendo presente quanto detto.
    Il resto è banale.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  8. #8
    O viceversa, se li inizializzi con il primo elemento dell'array (occhio: se c'è!) non sbagli mai (perché?).
    Amaro C++, il gusto pieno dell'undefined behavior.

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.