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

Relevanta dokument
FMNF15 HT18: Beräkningsprogrammering Numerisk Analys, Matematikcentrum

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

Lösningsförslag till inlämningsuppgift 5 i Beräkningsprogrammering Problem 1 function prob1

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

Lösningsförslag till inlämningsuppgift 5 i Beräkningsprogrammering Problem 1 function prob1

Lösningsanvisningar till de icke obligatoriska workoutuppgifterna

Lösningsanvisningar till de icke obligatoriska workoutuppgifterna

Lösningsanvisningar till de icke obligatoriska workoutuppgifterna

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

Introduktion till MATLAB

2 Matrisfaktorisering och lösning till ekvationssystem

TENTAMEN I GRUNDKURS I NUMERISKA METODER - DEL 20

1.1 MATLABs kommandon för matriser

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

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

Konvergens för iterativa metoder

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

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 21:a April klockan

Icke-linjära ekvationer

SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A

Variabler. TANA81: Beräkningar med Matlab. Matriser. I Matlab skapas en variabel genom att man anger dess namn och ger den ett värde:

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

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

Egenvärdesproblem för matriser och differentialekvationer

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

Newtons metod. 1 Inledning. CTH/GU LABORATION 3 MVE /2014 Matematiska vetenskaper

TANA19 NUMERISKA METODER

5.7. Ortogonaliseringsmetoder

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 14:e januari klockan

Linjära ekvationssystem

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

Laboration 1. Ekvationslösning

MATLAB Laboration problem med lokala extremvärden

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

SKRIVNING I VEKTORGEOMETRI

Linjära ekvationssystem

Block 2: Lineära system

2 februari 2016 Sida 1 / 23

SF1624 Algebra och geometri Tentamen Onsdag, 13 januari 2016

Tentamen del 1 SF1546, , , Numeriska metoder, grundkurs

MMA132: Laboration 2 Matriser i MATLAB

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

Minsta-kvadratmetoden

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 9p av totalt 20p Hjälpmedel: MATLAB

TANA17 Matematiska beräkningar med Matlab

TAIU07 Matematiska beräkningar med Matlab

Laboration: Grunderna i MATLAB

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

3 1 = t 2 2 = ( 1) ( 2) 1 2 = A(t) = t 1 10 t

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

) + γy = 0, y(0) = 1,

SF1624 Algebra och geometri Lösningsförslag till modelltentamen DEL A

Linjära system av differentialekvationer

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

SKRIVNING I VEKTORGEOMETRI Delkurs

. b. x + 2 y 3 z = 1 3 x y + 2 z = a x 5 y + 8 z = 1 lösning?

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

Sekantmetoden Beräkningsmatematik TANA21 Linköpings universitet Caroline Cornelius, Anja Hellander Ht 2018

= ( 1) ( 1) = 4 0.

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

November 6, { b1 = k a

2D1240 Numeriska metoder gk II för T2, VT Störningsanalys

SF1624 Algebra och geometri Lösningsförslag till modelltentamen DEL A

Lösningsförslag till Tentamen, SF1629, Differentialekvationer och Transformer II (del 1) 24 oktober 2014 kl 8:00-13:00.

SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A. t 2

Sammanfattninga av kursens block inför tentan

SF1624 Algebra och geometri Lösningsförslag med bedömningskriterier till kontrollskrivning 1 Måndagen den 29 november, 2010

Lösningsförslag till skrivningen i Vektorgeometri (MAA702) måndagen den 30 maj 2005

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

Numerisk Analys, MMG410. Lecture 8. 1/30

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

Ickelinjära ekvationer

A = (3 p) (b) Bestäm alla lösningar till Ax = [ 5 3 ] T.. (3 p)

3. Lös det överbestämda systemet nedan på bästa sätt i minsta kvadratmening. x + y = 1 x + 2y = 3 x + 3y = 4 x + 4y = 6

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

15 september, Föreläsning 5. Tillämpad linjär algebra

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

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Hjälpmedel: MATLAB

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

Kurvanpassning. Kurvanpassning jfr lab. Kurvanpassning jfr lab

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

Uppgifter, 2015 Tillämpad linjär algebra

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

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 13:e januari klockan

Datorövning 1: Fördelningar

LÖSNINGAR TILL LINJÄR ALGEBRA kl 8 13 LUNDS TEKNISKA HÖGSKOLA MATEMATIK. 1. Volymen med tecken ges av determinanten.

Block 5: Ickelineära. ekvationer? Läroboken. Löpsedel: Icke-lineära. ekvationer. Vad visade laborationen? Vad visade laborationen?

Datorövning 1 Fördelningar

SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A

Laboration 6. Ordinära differentialekvationer och glesa system

Projekt Finit Element-lösare

Preliminärt lösningsförslag

Frågorna 1 till 6 ska svaras med ett kryss för varje korrekt påstående. Varje uppgift ger 1 poäng. Använd bifogat formulär för dessa 6 frågor.

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

Sammanfattning (Nummedelen)

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

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

Mer om funktioner och grafik i Matlab

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

Transkript:

Lösningsförslag till inlämningsuppgift 3 i Beräkningsprogrammering Problem 1) function condtest format compact format long % Skapa matrisen A med alpha=1 A = [1 2 3; 2 4 1; 4 5 6]; b = [2.1; 3.4; 7.2]; n = 30; alphavec = linspace(1,6,n); for i = 1:n, alpha = alphavec(i); disp( ------------------------------- ) disp([ alpha =,num2str(alpha)]); % Byt ut elementet på rad 2, kolonn 3 mot aktuellt alpha A(2,3) = alpha; x = A\b konditionstal = cond(a) egenvarden = eig(a) För α = 1 är lösningen x = (1.46 0.08 0.16) T och konditionstalet 16.7831792. För α = 6 blir systemet singulärt (matrisen A är inte inverterbar). Detta kan man förvissa sig om genom att titta på egenvärdena: eig(a) = (12 0 1) T ; ett egenvärde är noll, varför matrisen är singulär. Man kan även titta på determinanten, som också är noll. Eventuellt ser man att andra raden är lika med första raden multiplicerat med 2, vilket också visar att matrisen är singulär. Konditionstalet för en singulär matris är oändligt stort (även om Matlab rapporterar 1.8630 10 16 ). Eftersom A inte är inverterbar då α = 6 så ger huvudsatsen i Linjär algebra att systemet antingen har oändligt många eller ingen lösning. Om man försöker lösa ekvationssystemet med hjälp av Gausselimination, och då multiplicerar första raden med 2 och lägger resultatet till den andra raden, ser man att man får 0 = 0, 8. Alltså saknar systemet lösning för detta högerled. Problem 1 Överkurs) function singekv alpha = 6; A = [1 2 3;2 4 alpha;4 5 6]; b = [50;100;23]; x = pinv(a)*b Eftersom högerledet är sådant att ekvation 1 är en multipel av ekvation 2 (nu gäller b 2 = 2b 1 ) har ekvationssystemet oändligt många lösningar. Matlabs kommando pinv ger pseudoinversen av en matris som i sin tur används för att beräkna lösningen med minst 2-norm. 1

Problem 2) function condtri % Stäng alla plotfönster close all % Antal olika systemstorlekar och systemstorlekarna nn = 20; nvec = ceil(logspace(1,2,nn)); % Förbered en vektor för konditionstalen. konditionstal = zeros(nn,1); for k = 1:nn n = nvec(k); % Sätt upp matris med storleken n D = setupmatrix(n); % Beräkna och spara konditionstalet konditionstal(k) = cond(d); % Plotta de logaritmerade värdena med plot-kommandot figure(1) plot(log10(nvec),log10(konditionstal), * ); grid on xlabel( Logaritmerad systemstorlek, lg(n) ); ylabel( Logaritmerat konditionstal, lg(k) ); % Plotta värdena med loglog-kommandot figure(2) loglog(nvec,konditionstal, * ); grid on xlabel( Systemstorlek n ); ylabel( Konditionstal k ); % Parametrarna p och alpha i formeln för konditionstalet: konditionstal=alpha*n^p p = (log10(konditionstal(nn))-log10(konditionstal(1)))/(log10(nvec(nn))-log10(nvec(1))); alfa = konditionstal(nn)/nvec(nn)^p; disp([ kappa=alpha*n^p, alfa=,num2str(alfa,2), och k=,num2str(p,2)]) function outmatrix = setupmatrix(storlek) % Sätt upp matrisen sup = ones(storlek-1,1); cen = -2*ones(storlek,1); sub = ones(storlek-1,1); outmatrix = diag(sub,-1) + diag(cen,0) + diag(sup,1); 2

Figur 1: Det logaritmerade konditionstalet som funktion av den logaritmerade systemstorleken. Figur 2: Konditionstalet som funktion av systemstorleken (logaritmerade axlar). Konditionstalet κ blir ungefär αn p, där n är systemstorleken. Uppskattningar med ledning av figuren ger α 0.5 och p 2, varför κ 0.5n 2. (Beräknas p och α med utgångspunkt från första och sista värdet, som i programmet, fås att p = 1.9317 och att alpha = 0.5661) Vid lösning av det linjära ekvationssystemet Dx = b har vi en övre begränsning på det relativa felet hos lösningsvektorn x enligt e x κe b där e b är det relativa felet i högerledet b. Om man tycker sig kunna godta (det ganska höga) maxfelet 10% hos x måste man alltså begränsa systemstorleken så att κe b = 0.1. Med e b = 0.0001 och κ 0.5n 2 ger detta en ekvation med systemstorleken n som obekant och med lösningen n 44.7. Vi måste därför hålla oss till system av storlek n 44. Om man istället kräver att felet e x ska vara mindre än 1% måste systemstorleken begränsas ytterligare, till ungefär 14. 3

Problem 3) function tridiag(n) % Systemstorleken n är inparameter till programmet. close all % u är en (n+2)x3-matris som ska innehålla lösningarna % för olika värden på lambda. Varje kolonn i matrisen % ska innehålla en lösning. u = zeros(n+2,3); lambda = [-10-100 -1000]; % Högerledet b = zeros(n,1); b(1) = 1; b(n) = 1; % Beräkna de tre lösningarna. for i = 1:3 % Sätt upp matrisen D=setupMatrix(n,lambda(i)); % Lös systemet och lägg till randvillkoren u(:,i) = [1;D\b;1]; % x-värdena h = 1/(n+1); x = h*(0:n+1); % Plotta resultatet plot(x,u(:,1), b+ ); hold on plot(x,u(:,2), g* ); plot(x,u(:,3), ro ); grid on leg( lambda=-10, lambda=-100, lambda=-1000, Location, North ); xlabel( x ) ylabel( u(x) ) function D = setupmatrix(n,lambda) % En funktion som sätter upp matrisen. sup = -ones(n-1,1); sub = -ones(n-1,1); h = 1/(n+1); cen = (2-lambda*h^2)*ones(n,1); D = diag(sub,-1) + diag(cen,0) + diag(sup,1); 4

Figur 3: Lösningarna till ekvationssystemet i Problem 3 för olika värden på λ. Problem 4 Överkurs) function konvergens close all % Generera udda systemstorlekar från 101 till 100001 nvec = 2*round(logspace(log10(50),log10(50000),50))+1; % Förbered en vektor för lösningarna i mittpunkterna. mid = zeros(size(nvec)); % Loopa igenom systemstorlekarna for j = 1:length(nvec) solution = computesolution(nvec(j),-10); mid(j) = solution((nvec(j)+1)/2); % Exakta lösningen exakt = 0.3947709748714294; % Relativa felet. relerr = abs(mid-exakt)/exakt; % Plotta i loglog-diagram. loglog(nvec,relerr, * ) grid on xlabel( Systemstorlek n ) ylabel( Relativt fel ); 5

function u = computesolution(n,lambda) % En funktion som sätter upp matrisen och högerledet % och löser systemet med storlek n och parameter lambda. % Högerledet b = zeros(n,1); b(1) = 1; b(n) = 1; % Diagonalerna sup = -ones(n-1,1); sub = -ones(n-1,1); h = 1/(n+1); cen = (2-lambda*h^2)*ones(n,1); % Sätt upp matrisen med spdiags D = spdiags([[sub;0], cen, [0;sup]],[-1 0 1],n,n); % Lös systemet u = D\b; Felet avtar som n 2 ända upp till systemstorlekar runt 10000, där konditionstalet börjar göra sig påmint. Problemet kan inte längre lösas exakt nog för att lösningen skall fortsätta konvergera. Med spdiags kan man lösa mycket stora system. n = 1000000 är inga problem. Figur 4: Konvergens av u(0.5) i Problem 4. 6

Problem 5 Överkurs) Om systemet skrivs om enligt { x 2 + y 2 = 4, e x + y = 1 { x 2 + y 2 4 = 0, e x + y 1 = 0, så syns det att lösningarna sammanfaller med nollställena till den vektorvärda funktionen ( ) ( f1 (x, y) x f(x, y) = = 2 + y 2 ) 4 f 2 (x, y) e x + y 1 vars Jacobianmatris (funktionalmatris) är f (x, y) = ( f1 x f 2 x f 1 y f 2 y ) = ( 2x 2y e x 1 ). En iteration i Newtons metod ges av: ( ) xk+1 = y k+1 ( xk y k ) f (x k, y k ) 1 f(x k, y k ). function nlineq close all % Plotta kurvorna h1 = ezplot( x.^2+y.^2-4,[-2 2-2 2]); set(h1, Color, r ) hold on h2 = ezplot( exp(x)+y-1,[-2 2-2 2]); set(h2, Color, b ) title( ) leg( x^2+y^2=4, e^x+y=1, Location, North ) % Den ena startgissningen (avläst i figur) z01 = [-1.8;0.8]; % Den andra (avläst i figur) z02 = [1;-1.7]; % Beräkna och skriv ut det första nollstället [z1,iter1] = mynewton(z01); disp([ Nollställe 1: (x,y) = ( num2str(z1(1)), num2str(z1(2))... ), f(x,y) = num2str(norm(f(z1))), antal iterationer =... num2str(iter1)]) % Beräkna och skriv ut det andra nollstället [z2,iter2] = mynewton(z02); disp([ Nollställe 2: (x,y) = ( num2str(z2(1)), num2str(z2(2))... ), f(x,y) = num2str(norm(f(z2))), antal iterationer =... num2str(iter2)]) 7

function [myzero,iter] = mynewton(zk) % Beräknar ett nollställe till den vektorvärda funktionen f % med Newtons metod. Startgissningen är vektorn zk. tol = 10*eps; dzk = zk; iter = 0; while (norm(dzk)/norm(zk) > tol) && (iter < 20) dzk = -fjac(zk)\f(zk); zk = zk + dzk; iter = iter +1; myzero = zk; function fout = f(z) % z är en vektor där första elementet är x % och andra elementet är y x = z(1); y = z(2); fout = [x^2+y^2-4; exp(x)+y-1]; function J = fjac(z) % Jacobianmatrisen hörande till f. x = z(1); y = z(2); J = [2*x, 2*y; exp(x), 1]; Lösningarna är (x 1, y 1 ) ( 1.81626, 0.837368) och (x 2, y 2 ) (1.00417, 1.72964). Figur 5: Lösningsmängderna för de två ekvationerna i ekvationssystemet i Problem 5. Lösningarna till ekvationssystemet är de punkter där dessa kurvor skär varandra. 8