Espressione da Grafico

B0bKat
Salve a tutti, come da titolo mi servirebbe l'espressione analitica (anche polinomiale) di una funzione a partire dal grafico. In particolare il grafico è simmetrico rispetto l'origine, ha il valore di 5 per x che vanno da 0 a 2000 e una volta superati i 2000 decresce in maniera quasi iperbolica. Qualcuno potrebbe aiutarmi? io non so piu dove sbattere la testa...

Risposte
feddy
In teoria l'interpolazione polinomiale potrebbe fare al caso tuo. Con MatLab tramite polyfit e polyval e con un ciclo opportuno dovresti riuscire ad ottenere l'espressione analitica del polinomio interpolante

Non so se esistano altre tecniche più potenti visto che finora di analisi numerica ho fatto solo un corso.

B0bKat
il mio problema nell'usare Matlab è che non ho la più pallida idea di come costruire la forma d'onda (cosa che ho provato a fare per mezza giornata) per poi usare l'espressioni polyfit e polyval

feddy
In teoria però dovresti conoscere o punti $(x_i,y_i)$ per cui passa il tuo grafico..

B0bKat
Allora io so solo che fino ad x=2000 deve valere 5, e poi deve decrescere fino a 0 in maniera iperbolica. Quindi in teoria potrei avere le coppie di valori (anche se nel tratto decrescente in realtà non ne ho) l'unica funzione decrescente che mi viene in mente è $ -log (x) $. E potrei fare un CSV cosicché lo posso usare su matlab.

feddy
Scusa l'ignoranza, cosa intendi con CSV?

Comunque, se hai le coppie di punti per cui passa la tua funzione, con MatLab è possibile interpolarla.

B0bKat
il CSV è un formato di file derivato da excel. Il mio problema non è la fattibilità nel trovare la soluzione ma riuscire a dare a matlab il grafico che mi serve per poi cercare i polinomi.

feddy
La routine MatLab che implementa l’interpolazione polinomiale è polyfit, mediante la sintassi p = polyfit(x,y,n) dove $n$ è il grado del polinomio con cui vogliamo interpolare i dati.
Restituisce in uscita un vettore con i coefficienti del polinomio. Nel nostro caso sarà n=length(x)-1. I coefficienti del polinomio $p$ sono da interpretarsi in ordine decrescente: il primo coefficiente è relativo al monomio di grado massimo.

Per valutare un polinomio su un insieme di punti si utilizza la routine polyval.

Il grafico lo puoi costruire facendo il plot così:
I vettori $x_i=[ldots]$ e $y_i=[ldots]$ li devi costruire te in base ai tuoi dati. Credo sia meglio, ma non ne sono sicuro, se sono equispaziati. E ovviamente, devono essere della stessa lunghezza.

clc
clear all
close all
p=polyfit(xi,yi,n); %trova i coefficienti del polinomio interpolante
t=linspace(-5e3,5e3,10000); % intervallo su cui vuoi lavorare, puoi adattarlo a tuo piacimento
plot(t,polyval(p,t),'g') % faccio il plot

B0bKat
ok.. allora questo finesettimana ci provo e vediamo cosa esce fuori.. :D grazie per l'aiuto

feddy
Di nulla. Spero di esserti stato utile

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.