Diskretisering av D - varmelikningen Vi vil løse numerisk den tidsuavhengige en-dimensjonale varmeledningslikningen uten kilde/sluk ledd. Differensiallikningen forenkles da til d T d x d dt Vi representerer dt med den numeriske tilnærmingen dt THx+hL - THx-hL Dette gir oss d dt d J THx+hL - THx-hL N J d THx+hL - d THx-hL N Ved å benytte tilnærmingen en gang til får vi til slutt d T d x d dt J THx+ hl-thxl - THxL-tHx- hl N THx+ hl - THxL + THx- hl 4 h Med Dx h får vi den diskretiserte varmelikningen på formen THx+Dx L - THxL + THx-Dx L Dx Vi ønsker å finne temperaturen THxL i en tynn stav med lengde L. Numerisk kan dette ikke gjøres overalt i staven så vi velger et utvalg punkter (noder) og beregner temperaturen i disse noder. Det enkleste er å dele staven opp i n indre punkter i samme avstand L/(n+) fra hverandre. Endepunktsnodene antas å ha kjente verdier. Situasjonen kan skjematisk vises i figuren under med n 6. T T T T3 T4 T T6 TL Med notasjonen xi i h THxi L Ti kan vi skrive varmeledningslikningen som Ti+ - Ti + T i- Dx.Likningen må være oppfylt for alle seks punkter i figuren. Dette gir oss 6 likninger med 6 ukjente. T - T + T T3 - T + T T4 - T3 + T T - T4 + T3 T6 - T + T4 TL - T6 + T T - T - T - T6 + T - TL De seks ukjente er T T T T3 T4 T og T6.Endepunkttemperaturene er gitt ved grensebetingelser. Vi setter T TL 3. Legg merke til at lengden av staven L eller delintervallenes lengde Dx ikke inngår i likningssystemet. Likningssettet kan nå skrives på matriseform: - - - - - - T -T T T3 T4 T T6 -TL
De seks ukjente er T T T T3 T4 T og T6.Endepunkttemperaturene er gitt ved grensebetingelser. Vi setter T TL 3. Legg merke til at lengden av staven L eller delintervallenes lengde Dx ikke inngår i likningssystemet. Likningssettet kan nå skrives på matriseform: - - - - - - T -T T T3 T4 T T6 -TL Vi løser likningssystemet ved å lage et lite skript. Først imiterer vi Matlab- koding deretter ser vi hvordan vi kan gjøre det i Mathematica. n 6; T ; TL 3; H* initierer matrisen *L A Table@ 8i n< 8j n<d; H* fyller første rad *L A@@ DD - ; A@@ DD ; H* fyller siste rad *L A@@n ndd - ; A@@n n - DD ; H* setter tall i indre punkter i koeffisientmatrisen *L For@i i < n ++i A@@i idd - ; A@@i i + DD ; A@@i i - DD D; H* legger inn grensebetingelser og fyller b - vektor *L b Table@ 8i n<d; b@@dd - T; b@@ndd - TL; H* løser likningssystemet A t b *L LinearSolve@A bd : 8 8 9 9 > N@%D 8.43 64.86.49 8. 8.4 9.8< I Mathematica kan du bruke paletter for å definere matriser og vektorer direkte. Her er brukt paletten Basic Math Assistant fra Palettes- menyen for å bygge matrisene. Du utvider matrisen med nye rader ved CTL+ og du utvider med nye kolonner ved CTRL + komma : A - - - ; b - - - - ; - 3
LinearSolve@A bd N.43 64.86.49 8. 8.4 9.8 Vi finner derfor avrundet T. T 64.3 T3.4 T4 8.6 T 8. T6 9.9 Generaliserer til n punkter numericheat@t_ TL_ n_d : Module@8A b< A Table@ 8i n< 8j n<d; A@@ DD - ; A@@ DD ; H* fyller siste rad *L A@@n ndd - ; A@@n n - DD ; For@i i < n ++i A@@i idd - ; A@@i i + DD ; A@@i i - DD D; b Table@ 8i n<d; b@@dd - T; b@@ndd - TL; D Join@8T < N@LinearSolve@A bdd 8TL<D vals numericheat@ 3 6D 8.43 64.86.49 8. 8.4 9.8 3< Våre data i eksemplet består av 8 punkter ( endepunkter + interne punkter). Punktene nummeres fra til i listeplottet under. Temperaturen øker som ventet lineært : 3
4 ListPlot@Transpose@8Range@ D vals<d Joined True PlotRange 8 3<D 3 9 8 6 3 4 6 Med tanke på neste leksjon ( løsning av tidsavhengig varmelikning i en dimensjon ) lager vi et program som løser likningssystemet uten lineær algebra. Programmet skal både skrive ut tabellen og plottet. Derfor må vi legge inn en print- setning rundt tabellen ellers vil semikolon i slutten av linjen hindre utskrift av tabellen. Når plottet er inne i modulen kan vi godt definere heatvals som lokal variabel (men nødvendig er det ikke) : numericheatd@t_ TL_ n_d : Module@8eq solns heatvals< T@D T; T@nD TL; eq@i_d : T@i + D T@iD - T@i - D; solns Solve@Table@eq@iD 8i n - <D Table@T@iD 8i n - <DD First; heatvals N@Table@8i T@iD. solns< 8i n<dd; Clear@TD; Print@TableForm@heatvals TableHeadings 8None 8"ti " "Ti "<<DD; ListPlot@heatvals PlotStyle PointSize@.D AxesLabel 8"t" "T"<D D
numericheatd@ 3 D ti... 3. 4.. 6.. Ti..43 64.86.49 8. 8.4 9.8 3. T 3 9 8 6 t 3 4 6 Oppgave En tynn metallstav har venstre ende i kontakt med isvann og høyre ende i kontakt med kokende vann. Beregn steady state tilstanden ved løse den aktuelle differensiallikningen numerisk med 6 delintervaller. Øv på begge rutiner numericheat og NumericHeatD.
6 numericheatd@ 6D ti... 3. 4.. 6.. 8. 9.... 3. 4.. 6. Ti. 6.. 8.. 3. 3. 43.. 6. 6. 68.. 8. 8. 93.. T 8 6 4 t