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

    funzione obiettivo come input in programma c++

    Ciao a tutti!
    Sto sviluppando un programma in C++ che utilizza una subroutine per la programmazione non lineare.
    Come posso fare perchè un utente possa dare in input una qualsiasi funzione obiettivo non lineare che venga poi interpretata e utilizzata nel modo corretto dal mio programma?
    In altre parole se l'utente vuole inserire ad esempio una funzione costo del tipo 3x^2+ sqrt(x) daz tastiera o da file come posso fare perchè venga riconosciuta come tale ed utilizzata per calcolare il valore del costo dati i valori x ottenuti come soluzione?
    Datemi un po' di speranza, grazie!!

  2. #2
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    La cosa non è semplicissima, devi realizzare un parser di espressioni matematiche.

    Ad esempio puoi farti una classe che rappresenta la funzione che ha un metodo calcola

    class Funzione{
    public:
    double clalcola(double);
    };

    il risultato del calcolo deve dipendere dalla stringa inserita dall'utenteche puo essere passata al costruttore di Funzione; quindi devi fare il parsing della stringa in modo da ottenere una sua rappresentazione tramite albero, i cui nodi sono o numeri o operatori o nomi di funzioni o l'eticheta dell a variabile x. Una volta asegnato un valore ad x, visitando l'albero puoi effettuare le operazioni e alla fine claclolare il valore della farmula per quel valore di x.

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  3. #3
    ...Mi sembra di capire che con parser della funzione intendi dire che devo scorrere la stringa "carattere per carattere", riconoscendo i numeri, i segni di operazione e le variabili, associare ognuna di queste entità ad un nodo diverso e concatenarle poi per ricostruire la funzione che voglio sia eseguita...scusami ma non son un grande esperto e la mia padronanza del linguaggio è limitata alle conoscenze per l'esame "Fondamenti di Informatica"..già la parola fondamenti dovrebbe darti un'idea...
    Mi attira anche l'idea di assegnare un nodo a una funzione (del tipo se ho una somma tra una fratta e una esponenziale definire un nodo per la prima e uno per la seconda)..ma sinceramentenon so da dove partire..
    Intanto grazie, mi hai indicato una strada!

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.