/ Forside / Karriere / Uddannelse / Højere uddannelser / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Højere uddannelser
#NavnPoint
Nordsted1 1588
erling_l 1224
ans 1150
dova 895
gert_h 800
molokyle 661
berpox 610
creamygirl 610
3773 570
10  jomfruane 570
Numerisk integration af bevægelse med færr~
Fra : N Petersen


Dato : 27-08-05 04:31

Jeg har bemærket at hvis man skal simulere en partikels bevægelse (position
og hastighed) over tid så er det normale at sige
s(t+k)=s(t)+v(t)*k
v(t+k)=v(t)+a(t)*k

Man stopper altså for begge efter første led og dropper resten af udtrykket.

hvad er årsagen til at man ikke anvender al den information man reelt har i
t? For v kan det give mening da man ikke kender fartens anden afledede, men
for s gør man jo. Man kender s's afledede som er v og v's afledte som er a.
Man kunne jo skrive

s(t+k)=s(t)+v(t)*k + ½*a*k^2
v(t+k)=v(t)+a(t)*k

Lader man være med det fordi man så går længere med s end med v og de kommer
ud af kontakt med hinanden?




 
 
@(none) (27-08-2005)
Kommentar
Fra : @(none)


Dato : 27-08-05 10:06

N Petersen wrote:
> Jeg har bemærket at hvis man skal simulere en partikels bevægelse (position
> og hastighed) over tid så er det normale at sige
> s(t+k)=s(t)+v(t)*k
> v(t+k)=v(t)+a(t)*k
>
> Man stopper altså for begge efter første led og dropper resten af udtrykket.
>
> hvad er årsagen til at man ikke anvender al den information man reelt har i
> t? For v kan det give mening da man ikke kender fartens anden afledede, men
> for s gør man jo. Man kender s's afledede som er v og v's afledte som er a.
> Man kunne jo skrive
>
> s(t+k)=s(t)+v(t)*k + ½*a*k^2
> v(t+k)=v(t)+a(t)*k
Det er der ikke noget i vejen for. Din algoritme øvers er en såkaldt
1.orden Runge-Kutta integration. hvor integrationsfejlen er 1. orden i
k.. Der findes også højerodens Runge-Kutta algoritmer med bedre
nøjagtighed, med n'te ordens algoritmen har en fejl på n'te orden i k.
Imidlertis er 1.ordens algoritmen, lettest at implementer, mens
højerodens algorimerne har tendens til til at være ustabile.
Mvh
jhp
>
> Lader man være med det fordi man så går længere med s end med v og de kommer
> ud af kontakt med hinanden?
>
>
>

N Petersen (27-08-2005)
Kommentar
Fra : N Petersen


Dato : 27-08-05 10:25

> Det er der ikke noget i vejen for. Din algoritme øvers er en såkaldt
> 1.orden Runge-Kutta integration. hvor integrationsfejlen er 1. orden i k..
> Der findes også højerodens Runge-Kutta algoritmer med bedre nøjagtighed,
> med n'te ordens algoritmen har en fejl på n'te orden i k.
> Imidlertis er 1.ordens algoritmen, lettest at implementer, mens højerodens
> algorimerne har tendens til til at være ustabile.

Det er jeg klar over. Det er mere det at det nederste eksempel er anden
orden for positionen men første orden for hastigheden. Er det ikke et
problem?



@(none) (27-08-2005)
Kommentar
Fra : @(none)


Dato : 27-08-05 22:38

N Petersen wrote:
>>Det er der ikke noget i vejen for. Din algoritme øvers er en såkaldt
>>1.orden Runge-Kutta integration. hvor integrationsfejlen er 1. orden i k..
>>Der findes også højerodens Runge-Kutta algoritmer med bedre nøjagtighed,
>>med n'te ordens algoritmen har en fejl på n'te orden i k.
>>Imidlertis er 1.ordens algoritmen, lettest at implementer, mens højerodens
>>algorimerne har tendens til til at være ustabile.
>
>
> Det er jeg klar over. Det er mere det at det nederste eksempel er anden
> orden for positionen men første orden for hastigheden. Er det ikke et
> problem?
Hvis du er klar over dette, hvad er så dit problem?

Du forbedrer ordenen i s, på bekostning af en ekstra multiplikation, og
det kan du, som jeg skrev, så bare gøre.
At 's' beregnes til en orden, der er en højere end ds/dt=v, gælder vel
for alle algoritmer?
mvh
jhp
..

..>

N Petersen (28-08-2005)
Kommentar
Fra : N Petersen


Dato : 28-08-05 06:23

>> Det er jeg klar over. Det er mere det at det nederste eksempel er anden
>> orden for positionen men første orden for hastigheden. Er det ikke et
>> problem?
> Hvis du er klar over dette, hvad er så dit problem?

Det skriver jeg jo(?). s bregnes med et taylor-led mere end v. De to vil
måske komme ud af synkronering?

Jeg prøver lige igen. Jeg har fået mange gode svar men ikke rigtig nogen der
besvarer spørgsmålet.

Man kan lave en euler-integration hvor man for både s og v nøjes med første
led i taylorrækken. Det er en sædvanlig måde.
Man kan lave en integration hvor man for s tager to led da man kender s'
første og anden afledte, og for v tager man også to led ved at approximere
den anden afledte ved at se på forrige og nuværende a og vurdere ændringen i
a og se det som a' afledte.

Det er to måder som bruges, og s og v beregnes til samme nøjagtighed.

Mit spørgsmål går på hvad der sker hvis man tager to led for s, da man jo
vitterlig kender både v og a, men kun tager et led for v, da man kun kender
a og ikke a's afledte.



@(none) (29-08-2005)
Kommentar
Fra : @(none)


Dato : 29-08-05 12:45

N Petersen wrote:
>>>Det er jeg klar over. Det er mere det at det nederste eksempel er anden
>>>orden for positionen men første orden for hastigheden. Er det ikke et
>>>problem?
>>
>>Hvis du er klar over dette, hvad er så dit problem?
>
>
> Det skriver jeg jo(?). s bregnes med et taylor-led mere end v. De to vil
> måske komme ud af synkronering?
>
> Jeg prøver lige igen. Jeg har fået mange gode svar men ikke rigtig nogen der
> besvarer spørgsmålet.
>
> Man kan lave en euler-integration hvor man for både s og v nøjes med første
> led i taylorrækken. Det er en sædvanlig måde.
> Man kan lave en integration hvor man for s tager to led da man kender s'
> første og anden afledte, og for v tager man også to led ved at approximere
> den anden afledte ved at se på forrige og nuværende a og vurdere ændringen i
> a og se det som a' afledte.
>
> Det er to måder som bruges, og s og v beregnes til samme nøjagtighed.
>
> Mit spørgsmål går på hvad der sker hvis man tager to led for s, da man jo
> vitterlig kender både v og a, men kun tager et led for v, da man kun kender
> a og ikke a's afledte.

>
>
Den algoritme du foreslår kan omkrives til
v(t+k)=v(t)+k*a(t)
s(t+k)=s(t)+1/2*(v(t+k)+v(t))*k
,hvor v beregens før s. Anden ordens Runge-Kutta-steppet kan skrives
v(t+k)=v(t)+1/2k*(a(t+k)+a(t))
s(k+1)=s(k)+1/2k*(v(t+k)+v(t))
Din metode fungerer, men beregner blot v til en orden mindre s. Det er
der ikke noget galt i.
Du ville også med ovst. 2.ordens algoritme kunne beregne en 3.
ordenskorrektion til s.
Hvis du kender v til orden k, så kan du vel, omend det kan være
omstændigt, altid beregne de afledede af v
op til orden k, og dermed med en Taylorfremskrivning beregne s til orden
k+1?.
...
mvh
jhp

Jonas Møller Larsen (29-08-2005)
Kommentar
Fra : Jonas Møller Larsen


Dato : 29-08-05 18:19

N Petersen wrote:
> Mit spørgsmål går på hvad der sker hvis man tager to led for s, da man jo
> vitterlig kender både v og a, men kun tager et led for v, da man kun kender
> a og ikke a's afledte.

Det er stadig en førsteordensmetode. Efter et fast tidsinterval er den
akkumulerede fejl i hastigheden i O(k), så i formelen s(t+k) = s(t) + k
v(t) + ½ k²a(t) giver det midterste led en fejl på O(k²), som
"overskygger" det sidste led. Og så kan man jo lige så godt udelade det.

--
Jonas Møller Larsen

@(none) (01-09-2005)
Kommentar
Fra : @(none)


Dato : 01-09-05 20:00

Jonas Møller Larsen wrote:
> N Petersen wrote:
>
>> Mit spørgsmål går på hvad der sker hvis man tager to led for s, da man
>> jo vitterlig kender både v og a, men kun tager et led for v, da man
>> kun kender a og ikke a's afledte.
>
>
> Det er stadig en førsteordensmetode. Efter et fast tidsinterval er den
> akkumulerede fejl i hastigheden i O(k), så i formelen s(t+k) = s(t) + k
> v(t) + ½ k²a(t) giver det midterste led en fejl på O(k²), som
> "overskygger" det sidste led. Og så kan man jo lige så godt udelade det.

Det sidste led fjerner jo netop fejlen, og derfor er dette fejlled ikke
længere til stede.

>
2. ordensleddet, som N. Petersen foreslår fjerner 1-ordensfejlen.i s
Forklar venligst, med formler eller med et eksempel, hvofor du mener, at
dette er forkert.

Det, N. Petersen, tilsyneladende undrer sig over, er, at man kan nøjes
med at bergne v til en orden mindre end s.

Og det kan man.

mvh
jhp

Jonas Møller Larsen (02-09-2005)
Kommentar
Fra : Jonas Møller Larsen


Dato : 02-09-05 17:24

none wrote:
> 2. ordensleddet, som N. Petersen foreslår fjerner 1-ordensfejlen.i s
> Forklar venligst, med formler eller med et eksempel, hvofor du mener, at
> dette er forkert.

Taylorrækken for s(t) er

s(t+k) = s(t) + k V(t) + ½ k² A(t) + O(k³).

Her er V og A (skrevet med stort) den sande hastighed og acceleration.
Men vi kender kun den "numeriske" hastighed, v, som adskiller sig fra
den sande hastighed, V, ved et led som er omtrent proportionalt med k
(fordi vi jo stadig bruger en førsteordensmetode for v), altså V(t) =
v(t) + O(k). Indsat i ovenstående giver det

s(t+k) = s(t) + k (v(t) + O(k)) + ½ k² A(t) + O(k³)
= s(t) + k v(t) + O(k²) + ½ k² A(t) + O(k³).

Dermed er den totale fejl O(k²) + O(k³) = O(k²). (Det introducerer
tilsvarende en fejl at bruge a i stedet for A.)

> Det, N. Petersen, tilsyneladende undrer sig over, er, at man kan nøjes
> med at bergne v til en orden mindre end s.
>
> Og det kan man.

Det kan man, men nøjagtigheden bliver bare meget værre, end når man
beregner v til samme orden som s.

--
Jonas Møller Larsen

Filip Larsen (28-08-2005)
Kommentar
Fra : Filip Larsen


Dato : 28-08-05 07:20

JHP skrev

> Der findes også højerodens Runge-Kutta algoritmer med bedre
> nøjagtighed, med n'te ordens algoritmen har en fejl på n'te orden i k.
> Imidlertis er 1.ordens algoritmen, lettest at implementer, mens
> højerodens algorimerne har tendens til til at være ustabile.

For en god ordens skyld skal det lige siges, at RK-metoder af højere
orden er *mere* stabile (har et større stabilitetsområde) og giver
lavere lokal trunkeringsfejl end RK-metoder af lavere orden. Hvis man
tillige udnytter muligheden for (automatisk) skridtkontrol vil
RK-metoder af højere orden typisk kunne producere løsningskurver med
mindre global fejl i færre beregninger af feltet end lavere ordens
metoder.


Mvh,
--
Filip Larsen



Niels L Ellegaard (27-08-2005)
Kommentar
Fra : Niels L Ellegaard


Dato : 27-08-05 11:35

Hvis man vælger en tilpas lille værdi af k, så kan man godt bruge
dine to første ligninger (Euler's metode) til at simulere Newtons lov,
men du har ret i at Eulers metode ikke virker særligt godt.

De følgende tre metoder virker bedre (for samme valg af k).

Velocity verlet (Denne metode ligner din ide):
s(t+k)=s(t)+v(t)*k + ½*a(t)*k^2
v(t+ k)=v(t)+½*(a(t+k)+a(t))*k

Verlet leap frog:
s(t+k)=s(t)+v(t)*k
v(t+0.5 *k)=v(t-0.5 *k)+a(t)*k

Verlets metode
s(t+k) = 2*s(t) - s(t-k) + ½*a(t)*k^2

Er du sikker på at du ikke forveksler Eulers metode med Verlet Leap
frog?

Niels


Martin Larsen (27-08-2005)
Kommentar
Fra : Martin Larsen


Dato : 27-08-05 13:52

"Niels L Ellegaard" <niels.ellegaard@gmail.com> skrev i en meddelelse news:1125138900.675461.123550@g49g2000cwa.googlegroups.com...
>
> Verlets metode
> s(t+k) = 2*s(t) - s(t-k) + ½*a(t)*k^2

Det skal vist være:
s(t+k) = 2*s(t) - s(t-k) + a(t)*k^2

Mvh
Martin



N Petersen (27-08-2005)
Kommentar
Fra : N Petersen


Dato : 27-08-05 16:39

>Er du sikker på at du ikke forveksler Eulers metode med Verlet Leap
>frog?

Ja, verlet har jeg haft gode resultater med. Den er hurtig og ekstremt
stabil, men det jeg undrede mig over var egentlig bare om man kom i uføre
hvis man beregnede positionen som anden orden og hastigheden som første
orden. Man kender jo første og anden afledte af positionen men kun første
afledte for hastigheden. Dermed kan man fremskrive position bedre end
hastighed, så vidt jeg kan se.

Jeg er altså på det rene med at euler er den første udgave jeg skrev... men
hvad er den anden løsning? En bastard der er ustabil eller hvordan?



Niels L Ellegaard (29-08-2005)
Kommentar
Fra : Niels L Ellegaard


Dato : 29-08-05 05:12

Hvis du vil simulere Newtons lov for et system af molekyler, så er
det smart at vælge en algoritme med følgende to egenskaber:

1) Algoritmen skal kunne køre baglæns: Det betyder at hvis du
substituerer "t" med "-t" i dine ligninger, så skal du få den samme
algoritme.

2) Algoritmen skal bevare volumener i faserummet: Et tidsskridt kan
beskrives som en funktion, f, der afbilleder faserummet over i
faserummet [1]:

(x(t+k),v(t+k)) = f(x(t),v(t))

For enhver kubeformet delmængde, A, af faserummet skal funktionen f
opfylde [2]

Vol(A) = Vol(f(A))

Her angiver Vol(A) volumenet af mængden A, mens Vol(f(A)) angiver
volumenet af mængden f(A), der igen er defineret ved

f(A) = {y | Der eksisterer x i A, således at f(x) = y}

Jeg ved ikke om de ovenstående krav også gælder hvis du eksempelvis
vil simulere planetbaner. Så vidt jeg kan se gælder kravene kun hvis
alle kræfter i dit system er konservative. Desuden skal det første
krav skal sikkert omformuleres hvis du vil bruge en predictor corrector
metode. Du kan læse mere i Frenkel og Smit: Understanding molecular
simulation.

[1] Ordet Faserum betyder her: "mængden af tilladte værdier af s og
v"


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408928
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste