/ 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
Matlab ODE
Fra : Christian


Dato : 07-09-04 08:55

Jeg skal bruge en ODE løser og kan ikke se i Matlab manualen om deres
ODE løsere kan bruges hvis input parametrene ændres for hvert
tidsskridt.

Er der nogen der ved noget om det ?

 
 
Niels L. Ellegaard (07-09-2004)
Kommentar
Fra : Niels L. Ellegaard


Dato : 07-09-04 21:21

allettidersigen@hotmail.com (Christian) writes:

> Jeg skal bruge en ODE løser og kan ikke se i Matlab manualen om
> deres ODE løsere kan bruges hvis input parametrene ændres for hvert
> tidsskridt.

Jeg er i tvivl om hvad du mener. Du må skrive noget mere.

Matlab løse en ligning på formen

x(0) = a
dx(t)/dt = f(x(t),t)

Her er f er en function der returnerer en vektor.

Hvordan ser din ligning ud?

Hvad betyder det at inputvariablene ændres for hvert tidsskridt?


Christian (08-09-2004)
Kommentar
Fra : Christian


Dato : 08-09-04 15:30

gnalle@ruc.dk (Niels L. Ellegaard) wrote in message news:<7w7jr596fz.fsf@dirac.ruc.dk>...
> allettidersigen@hotmail.com (Christian) writes:
>
> > Jeg skal bruge en ODE løser og kan ikke se i Matlab manualen om
> > deres ODE løsere kan bruges hvis input parametrene ændres for hvert
> > tidsskridt.
>
> Jeg er i tvivl om hvad du mener. Du må skrive noget mere.
>
> Matlab løse en ligning på formen
>
> x(0) = a
> dx(t)/dt = f(x(t),t)
>
> Her er f er en function der returnerer en vektor.
>
> Hvordan ser din ligning ud?
>
> Hvad betyder det at inputvariablene ændres for hvert tidsskridt?

Min ligning er feks. fouriers varmeledningsligning. Jeg har en diff.
ligning som beregnes udfra nogle ikke konstante parametre. Feks. er
varmeoverføringstallet temperaturafhængigt og det er min temperatur
jeg er ved at beregne. Så det er en itterationsproces hvor jeg hele
tiden ønsker at have de sidst beregnede data til rådighed til
bestemmelse af mine variable, dvs. varmeoverføringstallet.
Så det der ændres for hvert tidsskridt er mit varmeoverføringstal idet
jeg i itterationsprocessen hele tiden opdatere min temperatur og
dermed værdien af mit overføringstal.
Varmeoverføringstallet skal løbende beregnes udfra mit flow som
karakteriseres ved massestrøm, temperatur og tryk og her skal disse
eksterne parametre beregnes og hentes ind i min diff. ligning.

Er det noget matlab gør automatisk ?

Niels L. Ellegaard (08-09-2004)
Kommentar
Fra : Niels L. Ellegaard


Dato : 08-09-04 18:23

allettidersigen@hotmail.com (Christian) writes:

> Min ligning er feks. fouriers varmeledningsligning. Jeg har en diff.
> ligning som beregnes udfra nogle ikke konstante parametre. Feks. er
> varmeoverføringstallet temperaturafhængigt og det er min temperatur
> jeg er ved at beregne. Så det er en itterationsproces hvor jeg hele
> tiden ønsker at have de sidst beregnede data til rådighed til
> bestemmelse af mine variable, dvs. varmeoverføringstallet. Så det
> der ændres for hvert tidsskridt er mit varmeoverføringstal idet jeg
> i itterationsprocessen hele tiden opdatere min temperatur og dermed
> værdien af mit overføringstal. Varmeoverføringstallet skal løbende
> beregnes udfra mit flow som karakteriseres ved massestrøm,
> temperatur og tryk og her skal disse eksterne parametre beregnes og
> hentes ind i min diff. ligning.

Du kan regne på varmeledning på to måder

1) Hvis du vil kende temperaturen i alle punkter i rummet, så er
temperaturen en funktion af typen T(x,t)

2) Du kan også dele dit system op i nogle varmebade og du regner på
hvor meget varme der strømmer fra det ene varmebad til det
næste. Temperaturen af de enkelte varmebade kan nu beskrives ved
funktioner T1(t), T2(t), T3(t) .. osv

HVis du vil løse et problem af type 1), så kan du ikke bruge
ODE-løseren, men du kan måske bruge en (halvdyr) udvidelse der hedder
FEMLAB
http://www.comsol.com/

Jeg tror ikke at der er nogen problemer med at varmemodstanden er
temperaturafhængig (Prøv at skrive ligningen op).

Du har ikke beskrevet din iterationsproces særligt grundigt, så jeg
kan ikke gætte om der er et problem. Det er svært at se om systemets
dynamik afhænger af hvor tit du kører din iterationsproces og desuden
er det ret afgørende hvilke størrelser i din differentialliging bliver
opdateret i løbet af iterationsprocessen.

Jeg tror at det er bedre at du snakker med din lærer om det her. Det
virker som om at du har en indviklet algoritme, og det vil tage lang
tid og mange postings før vi andre har forstået nok til at kunne svare
fornuftigt.

Held og lykke

Niels

Filip Larsen (09-09-2004)
Kommentar
Fra : Filip Larsen


Dato : 09-09-04 09:05

Christian skrev

> Min ligning er feks. fouriers varmeledningsligning. Jeg har en diff.
> ligning som beregnes udfra nogle ikke konstante parametre. Feks. er
> varmeoverføringstallet temperaturafhængigt og det er min temperatur
> jeg er ved at beregne. Så det er en itterationsproces hvor jeg hele
> tiden ønsker at have de sidst beregnede data til rådighed til
> bestemmelse af mine variable, dvs. varmeoverføringstallet.
> Så det der ændres for hvert tidsskridt er mit varmeoverføringstal idet
> jeg i itterationsprocessen hele tiden opdatere min temperatur og
> dermed værdien af mit overføringstal.
> Varmeoverføringstallet skal løbende beregnes udfra mit flow som
> karakteriseres ved massestrøm, temperatur og tryk og her skal disse
> eksterne parametre beregnes og hentes ind i min diff. ligning.
>
> Er det noget matlab gør automatisk ?

Jeg kender ikke specielt meget til matlab, men jeg kender en del til
numerisk løsning af ODE systemer. Generelt bør man ikke ændre parametre
til feltet under beregning af en løsningskurve hvis man ønsker en præcis
løsning (dvs. en numerisk kurve der følger den sande kurve med den
nøjagtighed løsningsmetoden normalt producerer).

Det er dog klart, at har man et felt f(x,t;p), hvor parametersættet p =
p(x,t) kan beskrives ved en kontinuert og tilstrækkelig differentiabel
funktion, så kan du godt integrere feltet g(x,t) = f(x,t;p(x,t)). Du
skal dog være påpasselig med at g er lige så differentiabel som f er det
eller i hvert fald lige så differentiabel som løsningsmetoden kræver
det.

Et klassisk ekempel på hvor det går galt er, når p(x,t) ligefrem er
diskontinuert, fx. fordi man gerne vil modellere en radiator der tænder
på et bestemt tidspunkt, en kugle der triller ud over en bordkant eller
ind i en væg, eller lignende. Hvis man i dette tilfælde integrerer
g(x,t) som een lang løsningskurve, så vil man typisk få, at kurven i et
"område" omkring diskontinuiteten på en ukontrolabel måde vil skifte
over til en anden løsningskurve som ikke er en del af den sande kurve.

En måde at løse den slags systemer på er at benytte to forskellige
differentiable parameterfunktioner, en på den ene side af
diskontinuiteten og en anden på den anden side, fx. p1(x,t) og p2(x,t),
og så integrere en løsningskurve af f(x,t;p1(x,t)) hen til
diskontinuiteten og derfra en ny kurve med f(x,t;p2(x,t)). Har man mange
domæner i parameterrummet med diskontinuerte rande, så et den en
ikke-triviel opgave at holde styr på det hele og sikre at de enkelte
delkurver bliver integreret med den "rigtige" parameterfunktion, men til
gengæld får man en løsningskurve der er så korrekt som metoden tillader.

En anden måde at løse problemet på er, at lav den hårde diskontinuitet i
p(x,t) om til en passende blød differentiabel overgang. Dette er
specielt relevant hvis diskoninuiteten egentlig ikke er til stede i det
modellerede system, men blot er et resultat af modellens skala. Fx. kan
man modellere en bordkant som en cirkelbue og en væg som en fjeder og
dermed gøre overgangen blød. Det kan dog for nogle systemer være svært
at finde balancen mellem fysisk korrekthed og hårdhed i feltet.

Med hensyn til dit system, så vil jeg nok være enig med Niels i, at det
er noget uklart hvordan du er kommet frem til et rummelig diskret
begyndelsesværdiproblem (et ODE system). Mig bekendt vil man normal
benytte rummelig kontinuert grænseværdiproblem (et PDE system) til at
beskrive varmeledning, og kun bruge diskret rum for specielt simple
geometrier. Dit system lyder dog godt nok som et begyndelsesværdi
problem, men helt klart er det ikke. På den anden side, at transformere
et PDE system til et ODE system er ganske normalt, omend ikke helt
trivelt.


Mvh,
--
Filip Larsen



Brian Elmegaard (09-09-2004)
Kommentar
Fra : Brian Elmegaard


Dato : 09-09-04 08:04

allettidersigen@hotmail.com (Christian) writes:

> Min ligning er feks. fouriers varmeledningsligning. Jeg har en diff.
> ligning som beregnes udfra nogle ikke konstante parametre. Feks. er
> varmeoverføringstallet temperaturafhængigt og det er min temperatur
> jeg er ved at beregne.

Så er du (sikkert) ude i et differential-algebraisk system. Det
kendtegnes ved at kunne skrives som
y'=f(y,x,t)
0=g(y,x,t)

Der findes andre typer, men det er sikkert denne du har.

Det vigtige at vide er at systemet så blivet meget (uendeligt) stift,
idet stivhed er forholdet mellem egenværdierne for systemet. Se mere
om stive systemer på
http://www.library.cornell.edu/nr/bookcpdf/c16-6.pdf

Derfor skal du bruge en løser der kan håndtere stive systemer og hvis
de er tilstrækkelig heldig er dit system sådan at matlabs løser til
denne type af systemer (ode15s, ode23s) vil kunne klare sagen.


--
Brian (remove the sport for mail)
http://www.et.dtu.dk/staff/be

Niels L. Ellegaard (09-09-2004)
Kommentar
Fra : Niels L. Ellegaard


Dato : 09-09-04 22:04

Brian Elmegaard <brian@rk-speed-rugby.dk> writes:

> Så er du (sikkert) ude i et differential-algebraisk system. Det
> kendtegnes ved at kunne skrives som
> y'=f(y,x,t)
> 0=g(y,x,t)
>
> Der findes andre typer, men det er sikkert denne du har.

For en god ordens skyld. Der findes en matlab-pakke til at løse
differential-algebraiske systemer på formen

f(x(t),x'(t),t)=0

Så vidt jeg kan se er det en slags predictor corector, og den bruger
sidste skridt som predictor, men jeg tør ikke love at jeg forstod
koden rigtigt.

http://www.mathworks.nl/matlabcentral/fileexchange/loadFile.do?objectId=28&objectType=file

Niels


--
Niels L Ellegaard http://dirac.ruc.dk/~gnalle/

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

Månedens bedste
Årets bedste
Sidste års bedste