Föreläsning 14: Exempel på randvärdesproblem. LU-faktorisering för att lösa linjära ekvationssystem.

Relevanta dokument
Linjära ekvationssystem

Linjära ekvationssystem

Egenvärdesproblem för matriser och differentialekvationer

FMNF15 HT18: Beräkningsprogrammering Numerisk Analys, Matematikcentrum

Block 2: Lineära system

Tentamen, del 2 Lösningar DN1240 Numeriska metoder gk II F och CL

NUMPROG, 2D1212, vt Föreläsning 9, Numme-delen. Stabilitet vid numerisk behandling av diffekvationer Linjära och icke-linjära ekvationssystem

Teorifrågor. 6. Beräkna konditionstalet för en diagonalmatris med diagonalelementen 2/k, k = 1,2,...,20.

TMA226 datorlaboration

Lösningsanvisningar till de icke obligatoriska workoutuppgifterna

2D1250 Tillämpade numeriska metoder II Läsanvisningar och repetitionsfrågor:

NUMPROG, 2D1212, vt Föreläsning 1, Numme-delen. Linjära ekvationssystem Interpolation, Minstakvadratmetoden

2 Matrisfaktorisering och lösning till ekvationssystem

TANA09 Föreläsning 5. Matrisnormer. Störningsteori för Linjära ekvationssystem. Linjära ekvationssystem

Laboration 6. Ordinära differentialekvationer och glesa system

Projekt Finit Element-lösare

Lösningsanvisningar till de icke obligatoriska workoutuppgifterna

Lösningsanvisningar till de icke obligatoriska workoutuppgifterna

Kurs DN1215, Laboration 3 (Del 1): Randvärdesproblem för ordinära differentialekvationer

Denna föreläsning. DN1212 Numeriska metoder och grundläggande programmering FN Standardform för randvärdesproblem

Tentamen i Beräkningsvetenskap I/KF, 5.0 hp,

Sammanfattninga av kursens block inför tentan

Lösningsförslag till inlämningsuppgift 3 i Beräkningsprogrammering Problem 1) function condtest format compact format long

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 9 november 2015 Sida 1 / 28

TMA 671 Linjär Algebra och Numerisk Analys. x x2 2 1.

Laboration 1. Ekvationslösning

FEM1: Randvärdesproblem och finita elementmetoden i en variabel.

Mer om linjära ekvationssystem

Tentamen, del 2 DN1240 Numeriska metoder gk II för F

Föreläsning 5. Approximationsteori

Varning!!! Varning!!!

Tentamen i Beräkningsvetenskap I och KF, 5.0 hp,

TENTAMEN I LINJÄR ALGEBRA OCH NUMERISK ANALYS F1, TMA671

TANA17 Matematiska beräkningar med Matlab

Teknisk Beräkningsvetenskap I Tema 3: Styvhetsmodellering av mjuk mark med icke-linjära ekvationer

2D1240 Numeriska metoder gk II för T2, VT 2004 LABORATION 1. Ekvationslösning

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 26 november 2015 Sida 1 / 28

Laboration 1. 1 Matlab-repetition. 2 Störningsräkning 1. 3 Störningsräkning 2

Laboration 2. Laborationen löses i grupper om två och redovisas individuellt genom en lappskrivning den 3/10. x = 1±0.01, y = 2±0.05.

Facit Tentamen i Beräkningsvetenskap I (1TD393) STS ES W K1

Laboration 1. x = 1±0.01, y = 2±0.05. a) Teoretiskt med hjälp av felfortplantningsformeln (Taylor-utveckling).

Tentamen del 1 SF1511, , kl , Numeriska metoder och grundläggande programmering

Numerisk Analys, MMG410. Exercises 2. 1/33

Kort sammanfattning av Beräkningsvetenskap I. Varning!!! Varning!!!

1 Positivt definita och positivt semidefinita matriser

5.7. Ortogonaliseringsmetoder

Subtraktion. Räkneregler

M0043M Integralkalkyl och Linjär Algebra, H14, Linjär Algebra, Föreläsning 11

FYSIKENS MATEMATISKA METODER

Numeriska metoder, grundkurs II. Dagens program. Hur skriver man en funktion? Administrativt. Hur var det man gjorde?

Institutionen för Matematik TENTAMEN I LINJÄR ALGEBRA OCH NUMERISK ANALYS F1, TMA DAG: Fredag 16 januari 2009 TID:

Laboration 1 i SF1544: Öva på Matlab och konstruera en optimal balk Avsikten med denna laboration är att:

TANA19 NUMERISKA METODER

15 februari 2016 Sida 1 / 32

TMV166 Linjär algebra för M. Datorlaboration 2: Matrisalgebra och en mekanisk tillämpning

TENTAMEN I GRUNDKURS I NUMERISKA METODER - DEL 20

FÖRSÄTTSBLAD TILL TENTAMEN. ELLER (fyll bara i om du saknar tentamenskod): Datum: 16 januari Bordsnummer:

Grafer och grannmatriser

TAMS79: Föreläsning 10 Markovkedjor

Institutionen för Matematik TENTAMEN I LINJÄR ALGEBRA OCH NUMERISK ANALYS F1, TMA DAG: Fredag 30 augusti 2002 TID:

t Möjliga lösningar? b

Föreläsningen ger en introduktion till differentialekvationer och behandlar stoff från delkapitel 18.1, 18.3 och 7.9 i Adams. 18.

SF1624 Algebra och geometri Lösningsförslag till tentamen Lördagen den 5 juni, 2010 DEL A

Konvergens för iterativa metoder

Tentamen i Beräkningsvetenskap I (1TD393)

Moment 5.5 Övningsuppgifter I 5.60a. 5.60b, 5.60.c, 61

Tentamen del 2 SF1511, , kl , Numeriska metoder och grundläggande programmering

Mer om linjära ekvationssystem

TENTAMEN I LINJÄR ALGEBRA OCH NUMERISK ANALYS F1/TM1, TMA

MMA132: Laboration 2 Matriser i MATLAB

% Föreläsning 3 10/2. clear hold off. % Vi börjar med att titta på kommandot A\Y som löser AX=Y

TATA42: Föreläsning 9 Linjära differentialekvationer av ännu högre ordning

1.1 MATLABs kommandon för matriser

Linjär Algebra M/TD Läsvecka 2

Preliminärt lösningsförslag

Veckoblad 4, Linjär algebra IT, VT2010

Omtentamen i DV & TDV

Optimeringsproblem. 1 Inledning. 2 Optimering utan bivillkor. CTH/GU STUDIO 6 TMV036c /2015 Matematiska vetenskaper

. (2p) 2x + 2y + z = 4 y + 2z = 2 4x + 3y = 6

Linjärisering, Jacobimatris och Newtons metod.

TMV166 Linjär Algebra för M. Tentamen

Institutionen för Matematik TENTAMEN I LINJÄR ALGEBRA OCH NUMERISK ANALYS F1, TMA DAG: Torsdag 28 aug 2008 TID:

Introduktion till MATLAB

Institutionen för Matematiska Vetenskaper TENTAMEN I LINJÄR ALGEBRA OCH NUMERISK ANALYS F1, TMA

Laboration: Vektorer och matriser

Matrismetod för analys av stångbärverk

TMV141. Fredrik Lindgren. 22 januari 2013

Moment Viktiga exempel Övningsuppgifter

Del I: Lösningsförslag till Numerisk analys,

Ordinära differentialekvationer,

Tentamen del 1 SF1546, , , Numeriska metoder, grundkurs

Lösningsförslag Tentamen i Beräkningsvetenskap I, 5.0 hp,

Kurvanpassning. Kurvanpassning jfr lab. Kurvanpassning jfr lab

Numeriska metoder, grundkurs II. Dagens program. Gyllenesnittminimering, exempel Gyllenesnittetminimering. Övningsgrupp 1

Linjär algebra. 1 Inledning. 2 Matriser. Analys och Linjär Algebra, del B, K1/Kf1/Bt1. CTH/GU STUDIO 1 TMV036b /2013 Matematiska vetenskaper

6. Temperaturen u(x) i positionen x av en stav uppfyller värmeledningsekvationen. u (x) + u(x) = f(x), 0 x 2, u(0) = 0 u(2) = 1,

Dagens teman. Linjära ODE-system av ordning 1:

Denna föreläsning. DN1212 Numeriska metoder och grundläggande programmering FN Runge-Kuttas metoder. Repetition av FN6 (GNM kap 6.

Determinanter, egenvectorer, egenvärden.

Tentamen i Beräkningsvetenskap II, 5.0 hp,

Transkript:

11 april 2005 2D1212 NumProg för T1 VT2005 A Föreläsning 14: Exempel på randvärdesproblem. LU-faktorisering för att lösa linjära ekvationssystem. Kapitel 8 och 5 i Q&S Stationär värmeledning i 1-D Betrakta ett rör av längden L med konstant cylindrisk tvärsnittsarea. I röret finns en vätska som värms upp av en elektrisk spole. Värmen sprider sig i röret och vid jämvikt ges temperaturen T (x) av följande differentialekvation: d dx (κdt dx ) + vρc dt = Q(x) 0 <x<l. (1) }{{}}{{ dx} diffusion konvektion I ekvationen ingår följande konstanter: värmeledningskoefficienten κ vätskans strömningshastighet i x-riktningen v dess densitet ρ och värmekapacitet C. Den elektriska spolen modelleras av funktionen 0 0 x<a Q(x) = Q 0 sin ( x a b a π) a x b 0 b<x L där a och b är sådana att 0 <a<b<l. I ändarna x =0och x = L av röret hålls vätskan vid de konstanta temperaturerna T in och T ut. Detta ger randvillkoren T (0) = T in T(L) =T ut. (2) Uppgiften är nu att skriva ett Matlab-program som beräknar temperaturfördelningen i röret vid jämvikt genom att diskretisera randvärdesproblemet (1) - (2) med andra ordningens finita differenser. Följande värden på i problemet ingåe parametrar ska användas: L =10 a =1 b =3 Q 0 =50 κ =0.5 ρ =1 C =1 T in =0 T ut = 400 v =0 0.1 0.5 1 10. (Fallet v =0svarar mot att bara värmediffusion förekommer.)

Lösning Diskretisera intervallet [0L] med ett konstant steg h = L/N genom att införa noderna x j = jh (0 j N). Temperaturen T är känd i ändpunkterna och i de inre noderna uppfyller T differentialekvationen (1) så vi har T (x 0 )=T in κ d2 T (x dx 2 j )+vρc dt (x dx j)=q(x j ) 1 j N 1 T (x N )=T ut För att approximera derivatorna använder vi andra ordningens noggranna finita differenser: T (x j+1 ) 2T (x j )+T(x j 1 ) = d2 T h 2 dx (x j)+o(h 2 ) 2 T (x j+1 ) T (x j 1 ) 2h = dt dx (x j)+o(h 2 ). Vi inför nu de obekanta T j (0 j N) och beräknar deras värden genom att lösa det linjära ekvationssystemet (det är faktiskt det!): T 0 = T in κ T j+1 2T j +T j 1 h 2 T N = T ut + vρc T j+1 T j 1 2h = Q(x j ) 1 j N 1 Om vi gjort rätt gäller det nu att T j = T (x j )+O(h 2 ) dvs vi har beräknat en andra ordningens noggrann approximation av temperaturen T inodernax j! Det linjära ekvationssystemet kan skrivas T 0 = T in ( κ h vρc 2 2h ) 2κ T j 1 +( }{{} h ) }{{} 2 β α T N = T ut T j +( κ h + vρc 2 2h ) }{{} T j+1 = Q(x j ) 1 j N 1 β + De okända värdena är ju egentligen bara T j för 1 j N 1 och för dessa skriver vi upp det linjära ekvationssystemet på matrisform: α β + 0 0 0... 0 β α β + 0 0... 0 T 1 Q(x 1 ) β T in 0 β α β + 0... 0 T 2 Q(x 2 ) T 3 Q(x 3 ) =................... T 0 0 0... 0 β α N 1 Q(x N 1 ) β + T ut Lösningen består således i att skriva ett Matlab-program som för de olika värdena på v formulerar ovanståe linjära ekvationssystem på matrisform löser det och ritar upp lösningen. Det visar sig att lösningen blir som i följande figur:

400 Stationär värmeledning i 1 D 350 v=0 300 v=0.1 250 Temperatur 200 150 v=0.5 100 v=1 50 0 0 1 2 3 4 5 6 7 8 9 10 x v=10 Figur 1: Temperaturfördelningen i röret vid jämvikt för olika värden på vätskans strömningshastighet v. Diskutera gärna varför graferna ser ut som de gör i de olika fallen! Matlab-program ut: Så här kan ett Matlab-program för att beräkna lösningen se %Stationär värmeledning i 1-D lösning %med finita differensmetoden. % %Magnus Strömgren 050408 clear close all %Problem parametrar---------------------- L=10; a=1; b=3; Q0=50; kappa=0.5; rho=1; C=1; Tin=0; Tut=400; %---------------------------------------- %Diskretisering-------------------------- N=100; h=l/n; x=h*(0:n) ; xin=x(2:-1); %---------------------------------------- for v=[0 0.1 0.5 1 10] %Matrisen A alpha=2*kappa*h^(-2); beta_p=-kappa*h^(-2)+0.5*v*rho*c*h^(-1); beta_m=-kappa*h^(-2)-0.5*v*rho*c*h^(-1);

D=ones(size(xin))*[beta_m alpha beta_p]; A=spdiags(D[-1 0 1]N-1N-1); %Högerledet f f=zeros(size(xin)); index=find((xin <= b) & (xin >= a)); f(index)=q0*sin((xin(index)-a)*pi/(b-a)); f(1)=f(1)-beta_m*tin; f()=f()-beta_p*tut; %Lösningen T=A\f; %Plotta figure(1) hold on plot(x[tin; T; Tut]); gtext([ v= num2str(v)]); xlabel( x ); ylabel( Temperatur ); title( Stationär värmeledning i 1-D );

LU-faktorisering I många av de numeriska metoder vi stött på i den här kursen har man förr eller senare behövt lösa ett linjärt ekvationssystem Ax = b. Tänkt.ex. på finita differensmetoden för randvärdesproblem interpolation/mkm och Newtons metod för system av icke-linjära ekvationer. (Om du inte kommer ihåg repetera!). Därför är det inte förvånande att utvecklandet av bra metoder för att lösa linjära ekvationssystem har varit ett av de viktigaste problemen för forskare och ingenjörer som arbetar med numeriska metoder. Vi har tidigare i kursen löst linjära ekvationssystem med operatorn \ (backslash) i Matlab utan att fundera närmare på det. Men vad gör Matlab egenligen för att beräkna lösningen? Vi ska nu beskriva en algoritm för att beräkna lösningen till Ax = b. Den kallas LU-faktorisering och kommer visa sig vara välbekant från mattekurserna. LU-faktorisering är exempel på en direkt metod för att lösa linjära ekvationssystem. Sådana karaktäriseras av att lösningen beräknas i ett på förhand känt ändligt antal steg. Det finns också iterativa metoder och dessa karaktäriseras av att man försöker beräkna lösningen genom iterationer. Iterationerna avbryts då någon feluppskattning indikerar att man kommit tillräckligt nära lösningen. Om en direkt eller iterativ metod är bäst för ett givet problem Ax = b beror på matrisen A t.ex dess dimension om den är mycket gles eller har andra egenskaper. Triangulära matriser Problemet är att beräkna en lösning till Ax = b dära är en kvadratisk matris av dimensionen n. OmAärlågtriangulär såatta = L = {l ij } med l ij =0för j>i kan vi beräkna lösningen genom enkel framåtsubstitution: x 1 = b 1 l 11 x i = 1 i 1 (b i l ij x j ) l ii j=1 i =2...n. På samma sätt om A är högtriangulär såatta = U = {u ij } med u ij =0för i>j kan vi beräkna lösningen genom bakåtsubstitution: x n = b n u nn x i = 1 u ii (b i n j=i+1 u ij x j ) i = n 1...1. Observera att diagonalelementen l ii respektive u ii måste vara skilda från noll för att det ska fungera. Men detta är ju en förutsättning för att det ska gå att finna en lösning över huvudtaget: diagonalelementen är de triangulära matrisernas egenvärden och om något av dem är noll så är ju matrisen singulär!

Allmänna matriser Så för linjära ekvationssystem vars matriser är triangulära och har nollskilda element på diagonalen kan vi enkelt beräkna lösningen. Men vad gör vi för en allmän matris A? Jo vi kan försöka LU-faktorisera A så att A = LU där L är en lågtriangulär matris med ettor på diagonalen och U är en högtriangulär matris med nollskilda element på diagonalen. Genom att faktorisera A på det här sättet kan vi lösa Ax = b i följande steg: 1. Beräkna faktorerna L och U sådana att A = LU. 2. Lös Ly = b med framåtsubstitution. 3. Lös Ux = y med bakåtsubstitution. Låter LU-faktorisering obekant? Vad sägs om Gausselimination? Det är samma sak! Gausselimination går ju till så att man stegar sig fram kolumn för kolumn och nollar elementen under diagonalen: det är i själva verket matrisen U som man beräknar. I mattekurserna brukar man inte spara eliminationskoefficienterna men det gör vi här: dessa koefficienter är elementen i matrisen L. Algoritmen för LUfaktorisering/Gausselimination kan skrivas: for k =1...n 1 for i = k +1...n l ik = a ik a kk for j = k +1...n a ij = a ij l ik a kj Elementen i matrisen U står efter avslutad genomgång att finna i den högtriangulära delen av A: u ij = a ij för j i. Elementenl ij i matrisen L beräknas i algoritmen för i>j. För de diagonala elementen gäller att l ii =1. Vi noterar också att elementen a kk kallas pivotelement och att inget av dessa får bli noll under beräkningarnas gång om vi ska kunna LU-faktorisera matrisen A med algoritmen ovan. Pivotering Dessvärre kan det under LU-faktorisering av en matris A hända att ett pivotelement blir noll även om A är icke-singulär. Man kan dock visa att om man under faktoriseringens gång hela tiden väljer det till beloppet största elementet i de aktuella raderna som pivotelement så går det att beräkna LU-faktoriseringen för varje icke-singulär matris A. Strategin kallas radpivotering och den modifierade algoritmen blir:

for k =1...n 1 for i = k +1...n Hitta r så att a rk =max i=k...n a ik Byt plats på raderna k och r l ik = a ik a kk for j = k +1...n a ij = a ij l ik a kj Matlab LU-faktorisering med radpivotering är en av de algoritmer som gömmer sig bakom kommandot \ i Matlab. Vilken algoritm som faktiskt används beror som tidigare nämnts på matrisen A. Ibland kan man vilja ha tillgång till faktorerna L och U av en matris. T.ex. om man vill lösa flera linjära ekvationssystem med samma systemmatris A men olika högerled b k. Då behöver man bara faktorisera A en gång och sedan kan man lösa två triangulära ekvationssystem Ly = b k och Ux = y för varje högerled. I Matlab får man LU-faktorerna med kommandot [LU]=lu(A). Matrisen L är lågtriangulär bara om inga radpivoteringar behövdes för att beräkna faktoriseringen. Om radpivoteringar behövdes kan man få ut en lågtriangulär matris L högtriangulär U och permutationsmatrisen P (sådana att PA = LU) genom att skriva [LUP]=lu(A). Ekvationssystemet Ax = b k löses då i följande steg: 1. Beräkna faktorerna L U och P. 2. Lös Ly = P b k med framåtsubstitution. 3. Lös Ux = y med bakåtsubstitution. Nästa föreläsning: LU-faktorisering används för att illustrera önskvärda egenskaper hos algoritmer: effektivitet och noggrannhet. Vi räknar flyttalsoperationer (effektivitet) och introducerar begreppet konditionstal för att diskutera hur avrundningsfelen kan påverka den beräknade lösningen (noggrannhet).