Salve a tutti!
Prima di tutto mi presento dato che è il mio primo post: mi chiamo Edoardo e sono al 4° anno di università, studio ingegneria chimica.
I corsi di Matlab che ho seguito sono sempre stati specifici sugli argomenti inerenti l'ingegneria chimica, e per conto mio sto cercando di imparare ad usarlo al meglio anche per altri scopi, purtroppo da autodidatta avanzo lentamente...
L'ultimo problema che mi ero posto era di scrivere un programma che mi calcolasse l'espansione in serie di Fourier di una generica funzione f(x).
Incollo qui il programma che ho scritto (mi scuso per quanto possa essere "rozzo"):
clc
close all
clear all
syms x
L=2; %voglio valutare la funzione x^2 nell'intervallo [-1,1], quindi periodo L=2
y=x^2;
%Qui calcolo i coefficienti Ak, metto dentro il ciclo anche A0 tanto non dipende da k e non cambia nulla, essendo la funzione f(x)=x^2 pari, i coefficienti Bk sono nulli.
for k=1:100
a0=(2/L)*int(y,-1,1);
a(k)=(2/L)*int(y*cos(2*pi*k*x/L),-1,1);
end
%Qui calcolo i coseni che poi dovrò implementare nella serie di Fourier
for k=1:100
c(k)=cos(2*pi*k*x/L);
end
%Qui calcolo i singoli elementi della serie di Fourier
for k=1:100
fourier(k)=a(k)*c(k);
end
%\( \displaystyle {A}_{{0}} \)/2+\( \displaystyle {\sum_{{{k}={1}}}^{{N}}} \)A_k\( \displaystyle \cdot{\cos{{\left({2}\cdot{k}\cdot\pi\cdot\frac{{x}}{{L}}\right)}}} \) Qui sommo tutti i singoli elementi della serie di Fourier
Fourier=0;
for k=1:100
Fourier=(Fourier+fourier(k))+(a0/2);
end
Risultato=Fourier
%Qui verifico la validità della mia serie di Fourier vedendo che risultato mi da per x=0.3, dovrebbe venire qualcosa di simile a 0.09 ma invece mi viene un 33.09...
x=0.3;
Risultatobis=Fourier
Ora mi chiedo, dov'è l'intoppo del programma che scrivo? Inoltre, come mai il programma è abbastanza lento a girare?
Grazie a tutti per l'aiuto che mi darete!



