/* [wxMaxima batch file version 1] [ DO NOT EDIT BY HAND! ]*/ /* [ Created with wxMaxima version 16.04.2 ] */ /* [wxMaxima: section start ] Fourierov rad funkcie [wxMaxima: section end ] */ /* [wxMaxima: subsect start ] Fourierov rad na intervale dĺžky 2π [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] Najskôr deklarujeme n (dĺžka Fourierovho radu) ako kladnú celočíselnú hodnotu. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ (declare(n,integer),assume(n>0),facts()); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Nastavíme začiatočnú a koncovú hodnotu intervalu, na ktorom je definovaná základná vzorka pre rozvoj do Fourierovho radu. Pri tom treba dávať pozor, aby rozdiel medzi hodnotami zac a kon bol rovný 2π. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ zac:-%pi; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kon:%pi; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Nájdeme Fourierov rozvoj funkcie f(x)=x na intervale (-π,π). Preto definujeme [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ f(x):=x; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Podľa vzorcov pre Fourierove koeficienty definujeme funkcie pre ich výpočet. Najskôr samostatne vypočítame koeficient a0: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ a0:integrate(f(x),x,zac,kon)/%pi; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Teraz definujeme funkcie pre výpočet ostatných koeficientov an a bn [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ define(a(n),integrate(f(x)*cos(n*x),x,zac,kon)/%pi); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(b(n),integrate(f(x)*sin(n*x),x,zac,kon)/%pi); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Konečne definujeme súčet, ktorý zodpovedá Fourierovmu radu funkcie [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ frad(x,nmax):=a0/2+sum(a(m)*cos(m*x)+b(m)*sin(m*x),m,1,nmax); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Pomocou tejto funkcie môžeme vyjadriť Fourierov rad požadovanej dĺžky, napr. pre n=10 dostaneme: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ frad(x,10); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Pre porovnanie rozvoja so zadaním definujeme funkciu [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ g(x):=if x>zac and x-%pi and x<%pi then abs(x); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ plot2d([g(x),frad(x,30)],[x,-20,20],[y,-1,4],[legend,"Original function","Fourier series n=30"],[style,[lines,3,1],[lines,1,2],[lines,1,5]])$ /* [wxMaxima: input end ] */ /* [wxMaxima: subsect start ] Fourierov rad na intervale ľubovoľnej dĺžky 2h [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] Nastavíme začiatočnú a koncovú hodnotu intervalu, na ktorom je definovaná základná vzorka pre rozvoj do Fourierovho radu. Hodnotu h určíme ako polovicu dĺžky zadaného intervalu. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ zac:-1; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kon:1; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ h:(kon-zac)/2; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Nájdeme Fourierov rozvoj funkcie f(x)=x na intervale (-1,1). Preto definujeme [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ f(x):=x; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Podľa vzorcov pre Fourierove koeficienty na intervale dĺžky 2h modifikujeme funkcie pre ich výpočet. Najskôr samostatne vypočítame koeficient a0: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ a0:integrate(f(x),x,zac,kon)/h; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Teraz modefinujeme funkcie pre výpočet ostatných koeficientov an a bn [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ define(a(n),integrate(f(x)*cos(n*%pi*x/h),x,zac,kon)/h); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(b(n),integrate(f(x)*sin(n*%pi*x/h),x,zac,kon)/h); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Konečne definujeme súčet, ktorý zodpovedá Fourierovmu radu funkcie definovanej na intervale dĺžky 2h [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ frad(x,nmax):=a0/2+sum(a(m)*cos(m*%pi*x/h)+b(m)*sin(m*%pi*x/h),m,1,nmax); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Pre porovnanie rozvoja so zadaním definujeme funkciu [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ g(x):=if x>zac and xzac and x