Numerisk løsning av diff.ligning ved Fast Fourier Transform
Lagt inn: 06/03-2013 19:22
Hei.
Har et lite spørsmål relatert til følgende oppgave:
Find a discrete approximation to the differential equation [tex]u^{\prime \prime} + 2u^{\prime} + 2u = 3\cos(6t)[/tex] using Equation 3.12 for these values of [tex]n[/tex]: [tex]n = 16, n = 64[/tex], and [tex]n = 256[/tex]. You will need to use MATLAB or similar software to compute the FFT and inverse FFT invovled.
OK. Så hvis vi har diff-ligninger av typen:
[tex]au^{\prime \prime} + bu^{\prime} + cu = f(t)[/tex]
så sier ligningen det refereres til her (3.12) at den diskré løsningen er gitt ved:
[tex]\hat{u_j} = \frac{h^{2} \hat{f_j}}{aw^{j} + \beta + \gamma \bar{w}^{j}}[/tex]
Her er [tex]h = 2 \pi/n[/tex], [tex]\beta = ch^2 + bh - 2a[/tex], [tex]\gamma = a-bh[/tex], [tex]w = \exp(2 \pi i/n)[/tex], og [tex]f_k = f(2 \pi k/n)[/tex] for [tex]1 \leq k \leq n-1[/tex]
Jeg klarer å fint å skrive en MATLAB algoritme som løser dette for et gitt input av [tex]n[/tex]. Først defineres alle variablene, før jeg i en vektor regner ut alle verdiene for [tex]f[/tex]. Deretter bruker jeg MATLAB sin fft-rutine til å finne den diskré Fourier transformen til [tex]f[/tex]. Og til slutt setter jeg opp alt slik som i likning 3.12, og tar den inverse transformasjonen til uttrykket.
Det jeg imidlertid lurer på er følgende: Når jeg skriver dette som en algoritme og senere plotter løsningen [tex]u[/tex] som en funksjon av tid, så får jeg en fin trigonometrisk kurve. Men med slike andreordens diff.ligninger vil det jo kunne være et uendelig antall mulige løsningskurver basert på initialverdiene. Så hvor kommer initialverdiene inn i denne oppgaven? Som sagt så får jeg en fin løsningskurve når jeg plotter dette, men kan ikke se noen sted at vi tar hensyn til initialverdier. Hva er det da som gjør at vi får en unik løsning?
Dersom noen med peiling på dette kan svare meg så vil jeg være ekstremt takknemlig! Jeg kan godt supplementere med mer informasjon angående hvordan formelen over et utredet, samt MATLAB koden min, dersom det er ønskelig. Men hvis noen kan svare meg på dette basert på det jeg har skrevet over, så hadde det vært glimrende!
Har et lite spørsmål relatert til følgende oppgave:
Find a discrete approximation to the differential equation [tex]u^{\prime \prime} + 2u^{\prime} + 2u = 3\cos(6t)[/tex] using Equation 3.12 for these values of [tex]n[/tex]: [tex]n = 16, n = 64[/tex], and [tex]n = 256[/tex]. You will need to use MATLAB or similar software to compute the FFT and inverse FFT invovled.
OK. Så hvis vi har diff-ligninger av typen:
[tex]au^{\prime \prime} + bu^{\prime} + cu = f(t)[/tex]
så sier ligningen det refereres til her (3.12) at den diskré løsningen er gitt ved:
[tex]\hat{u_j} = \frac{h^{2} \hat{f_j}}{aw^{j} + \beta + \gamma \bar{w}^{j}}[/tex]
Her er [tex]h = 2 \pi/n[/tex], [tex]\beta = ch^2 + bh - 2a[/tex], [tex]\gamma = a-bh[/tex], [tex]w = \exp(2 \pi i/n)[/tex], og [tex]f_k = f(2 \pi k/n)[/tex] for [tex]1 \leq k \leq n-1[/tex]
Jeg klarer å fint å skrive en MATLAB algoritme som løser dette for et gitt input av [tex]n[/tex]. Først defineres alle variablene, før jeg i en vektor regner ut alle verdiene for [tex]f[/tex]. Deretter bruker jeg MATLAB sin fft-rutine til å finne den diskré Fourier transformen til [tex]f[/tex]. Og til slutt setter jeg opp alt slik som i likning 3.12, og tar den inverse transformasjonen til uttrykket.
Det jeg imidlertid lurer på er følgende: Når jeg skriver dette som en algoritme og senere plotter løsningen [tex]u[/tex] som en funksjon av tid, så får jeg en fin trigonometrisk kurve. Men med slike andreordens diff.ligninger vil det jo kunne være et uendelig antall mulige løsningskurver basert på initialverdiene. Så hvor kommer initialverdiene inn i denne oppgaven? Som sagt så får jeg en fin løsningskurve når jeg plotter dette, men kan ikke se noen sted at vi tar hensyn til initialverdier. Hva er det da som gjør at vi får en unik løsning?
Dersom noen med peiling på dette kan svare meg så vil jeg være ekstremt takknemlig! Jeg kan godt supplementere med mer informasjon angående hvordan formelen over et utredet, samt MATLAB koden min, dersom det er ønskelig. Men hvis noen kan svare meg på dette basert på det jeg har skrevet over, så hadde det vært glimrende!