f(a + h) = f(a) + f (a)h + f (θ) 2 h2, θ [a, a + h]. = f(a+h) f(a)

Relevanta dokument
Föreläsning 5. Approximationsteori

Interpolation Modellfunktioner som satisfierar givna punkter

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

4.4. Mera om grafiken i MATLAB

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

0.31 = f(x 2 ) = b 1 + b 2 (x 3 x 1 ) + b 3 (x 3 x 1 )(x 3 x 2 ) = ( ) + b 3 ( )(

TANA17 Matematiska beräkningar med Matlab

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

Kapitel 1. Numeriska metoder

TAIU07 Matematiska beräkningar med Matlab

Introduktion till MATLAB

Interpolation. 8 december 2014 Sida 1 / 20

LAB 3. INTERPOLATION. 1 Inledning. 2 Interpolation med polynom. 3 Splineinterpolation. 1.1 Innehåll. 3.1 Problembeskrivning

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

Numerisk Analys, MMG410. Lecture 13. 1/58

Numerisk Analys, MMG410. Lecture 12. 1/24

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

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

TANA17 Matematiska beräkningar med Matlab

15 februari 2016 Sida 1 / 32

TAIU07 Matematiska beräkningar med Matlab

4.3. Programmering i MATLAB

3.6 De klassiska polynomens ortogonalitetsegenskaper.

TAIU07 Matematiska beräkningar med Matlab

x 2 x 1 W 24 november, 2016, Föreläsning 20 Tillämpad linjär algebra Innehåll: Projektionssatsen Minsta-kvadratmetoden

Index. Vektorer och Elementvisa operationer. Summor och Medelvärden. Grafik i två eller tre dimensioner. Ytor. 20 januari 2016 Sida 1 / 26

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

DATORLABORATION FÖR KURSEN ENVARIABELANALYS 2

KPP053, HT2016 MATLAB, Föreläsning 2. Vektorer Matriser Plotta i 2D Teckensträngar

3.3. Symboliska matematikprogram

a = a a a a a a ± ± ± ±500

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

SF1513 NumProg för Bio3 HT2013 LABORATION 4. Ekvationslösning, interpolation och numerisk integration. Enkel Tredimensionell Design

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

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

3.3. Interpolationsmetoder

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

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

Tentamen del 1 SF1546, , , Numeriska metoder, grundkurs

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

TANA17 Matematiska beräkningar med Matlab

SF1669 Matematisk och numerisk analys II Lösningsförslag till tentamen DEL A. r cos t + (r cos t) 2 + (r sin t) 2) rdrdt.

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

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

Kurvanpassning. Kurvanpassning jfr lab. Kurvanpassning jfr lab

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

Minsta-kvadratmetoden

Approximation av funktioner

Moment 1.15, 2.1, 2.4 Viktiga exempel 2.2, 2.3, 2.4 Övningsuppgifter Ö2.2ab, Ö2.3. Polynomekvationer. p 2 (x) = x 7 +1.

TANA17 Matematiska beräkningar med Matlab

MMA132: Laboration 1 Introduktion till MATLAB

Dagens tema är exponentialfunktioner. Egentligen inga nyheter, snarare repetition. Vi vet att alla exponentialfunktioner.

TANA09 Föreläsning 8. Kubiska splines. B-Splines. Approximerande Splines. B-splines. Minsta kvadrat anpassning. Design av kurvor och ytor.

Mer om funktioner och grafik i Matlab

Lösningsanvisningar till de icke obligatoriska workoutuppgifterna

Fö4: Kondition och approximation. Andrea Alessandro Ruggiu

f (a) sin

Mer om funktioner och grafik i Matlab

8. Euklidiska rum 94 8 EUKLIDISKA RUM

Approximerande Splines. B-splines. Minsta kvadrat anpassning. Design av kurvor och ytor.

Lösningar till Tentamen i Beräkningsvetenskap II, 5.0 hp, Del A. 1. (a) ODE-systemet kan skrivas på formen

1. Ange samtliga uppsättningar av heltal x, y, z som uppfyller båda ekvationerna. x + 2y + 24z = 13 och x 11y + 17z = 8.

Lösandet av ekvationer utgör ett centralt område inom matematiken, kanske främst den tillämpade.

TENTAMEN I GRUNDKURS I NUMERISKA METODER - DEL 20

Frågorna 1 till 6 ska svaras med sant eller falskt och ger vardera 1

f(x) = x 2 g(x) = x3 100 h(x) = x 4 x x 2 x 3 100

OH till Föreläsning 5, Numme K2, Läsa mellan raderna. Allmän polynom-interpolation, S Ch 3.1.0

Sidor i boken f(x) = a x 2 +b x+c

TSBB14 Laboration: Intro till Matlab 1D

Denna föreläsning. DN1212 Numeriska metoder och grundläggande programmering FN Felfortplantning och kondition

S n = (b) Med hjälp av deluppgift (a) beräkna S n. 1 x < 2x 1? i i. och

25 november, 2015, Föreläsning 20. Tillämpad linjär algebra

Sammanfattning (Nummedelen)

Preliminärt lösningsförslag till del I, v1.0

Newtons metod och arsenik på lekplatser

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

TAIU07 Matematiska beräkningar med Matlab

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

TANA17 Matematiska beräkningar med Matlab

KOKBOKEN 1. Håkan Strömberg KTH STH

6 Derivata och grafer

MATLAB - en kompakt introduktion av Tore Gustafsson

6.3. Direkta sökmetoder

Medan du läser den är det meningen och viktigt att du ska aktivera de celler där det står Mathematicakommandon(i fetstil).

MATLAB the Matrix Laboratory. Introduktion till MATLAB. Martin Nilsson. Enkel användning: Variabler i MATLAB. utvecklat av MathWorks, Inc.

Omtentamen i DV & TDV

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

Tentamen i Teknisk-Vetenskapliga Beräkningar

Uppsala Universitet Matematiska Institutionen Bo Styf. Genomgånget på föreläsningarna

4 Fler deriveringsregler

Moment Viktiga exempel Övningsuppgifter

Matriser och vektorer i Matlab

Flervariabelanalys E2, Vecka 3 Ht08

9.3. Egenvärdesproblem

1.1 MATLABs kommandon för matriser

MMA132: Laboration 1 & 2 Introduktion till MATLAB

Lösningar tentamen i kurs 2D1210,

f(x) = x 2 g(x) = x3 100

Linjära ekvationssystem

TANA19 NUMERISKA METODER

Transkript:

Vi skall nu se, hur man kan beräkna numeriska derivator. Antag att vi vill beräkna derivatan av f(x) i en punkt x = a, och att dess Taylor utveckling kring denna punkt är f(a + h) = f(a) + f (a)h + f (θ) 2 h2, θ [a, a + h]. = f(a+h) f(a) h Uttrycket D h kommer därför ge allt noggrannare approximationer för derivatan då h minskar, eftersom D h = f (a) + f (θ)h/2. Här är ett vektoriserat program med vilket man kan studera felet då man tillämpar formeln på f(x) = sin x för olika h-värden (\n anger ny rad): a = 1; h = logspace(-1,-16,16); Dh = (sin(a+h) - sin(a))./h; fel = abs(dh - cos(a)); tab = [h;fel]; disp( h fel ),fprintf( %8.1e %18.15f \n,tab) Resultaten lagrades i en matris tab, behändigt utskriven en kolumn per rad med kommandot fprintf : Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 1

h fel 1.0e-01 0.042938553332751 1.0e-02 0.004216324856271 1.0e-03 0.000420825507813 1.0e-04 0.000042074449519 1.0e-05 0.000004207362275 1.0e-06 0.000000420746809 1.0e-07 0.000000041827691 1.0e-08 0.000000002969885 1.0e-09 0.000000052541266 1.0e-10 0.000000058481036 1.0e-11 0.000001168704061 1.0e-12 0.000043240216924 1.0e-13 0.000733915900314 1.0e-14 0.003706976198187 1.0e-15 0.014809206444439 1.0e-16 0.540302305868140 Kommandot fprintf kan också användas för att skriva data till en fil (se help fprintf). Vi ser att felet först minskar, men sedan igen börjar öka. Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 2

Varje fel i täljaren multipliceras med en faktor 1/h, så att vi istället för det matematiska felet D h f (a) h 2 f (θ) i verkligheten får felet D h f (a) h 2 f (θ) + 2eps h, där eps är maskinprecisionen. Högra membrum minimeras, om h = 2 eps/ f (θ). Vi kan nu konstruera en ny rutin för beräkning av derivator. Om andra derivatan är uppifrån begränsad: f (x) M 2, så gäller följande olikhet för det matematiska felet: D h f (a) M 2 2 h. Om det absoluta felet vid en funktionsberäkning är mindre än δ, så kan det totala felet vid den numeriska beräkningen av funktionsderivatan approximeras med fel(d(h)) = M 2 h 2 + 2δ h. Detta fel minimeras om h = h min = 2 δ/m 2, vilket ger uttrycket fel(d(h min )) = M 2 δ/m2 + δ δ/m2 = 2 δm 2. Vi kan då modifiera programmet på följande sätt: Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 3

function d = deriv(fname,a,delta,m2); % % Invariabler: % fname en sträng som innehåller funktionens namn. % a: det värde av x för vilket f (x) beräknas. % delta: absoluta felet vid funktionsberäkningen. % M2: en uppskattning av andra derivatans storlek nära a. % % Utvariabler: % d: en approximation för f (a). % err: en uppskattning av felet i d. % hopt = 2*sqrt(delta/M2); d = (feval(fname,a+hopt) - feval(fname,a))/hopt; Här har använts funktionen feval, vars första argument är en sträng, som innehåller funktionsnamnet, och de övriga argumenten är funktionens egna argument. Programmet förutsätter att man kan uppskatta det absoluta felet δ och andra derivatans övre gräns M 2, men man kan använda konstanta värden av dessa parametrar för att underlätta programmets användning. Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 4

5.4. Interpolation Då vi vill approximera data, utgår vi från ett antal punkter (x 1, y 1 ), (x 2, y 2 ),..., (x n, y n ) och försöker konstruera en funktion f(x), som beskriver punkterna så bra som möjligt. Typen av funktion bestäms av punkterna. Om de t.ex. oscillerar, så är det lämpligt att använda sig av trigonometriska funktioner för att approximera dem. I många fall kan ett polynom av lågt gradtal vara lämpligt. Minsta kvadratmetoden, som vi redan använt, kan användas om man har flere datapunkter än obekanta parametrar i funktionen. Det finns en speciell typ av approximationsproblem där funktionen passerar genom datapunkterna. Detta innebär, att f(x i ) = y i, i = 1 : n. Vi säger i detta fall att f interpolerar data. Om approximationsfunktionen är ett polynom kan vi uttrycka interpolationsproblemet på följande sätt: Då x 1, x 2,..., x n och y 1, y 2,..., y n är givna, sök ett polynom p n 1 (x) av gradtalet n 1 (eller lägre) som uppfyller villkoret p n 1 (x i ) = y i för alla i = 1 : n. Sålunda interpolerar t.ex. polynomet p 2 (x) = 1 + 4x 2x 2 punkterna ( 2, 15), (3, 5) och (1, 3) (se figuren). Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 5

Varje talpar (x i, y i ) kan uppfattas som en punkt på en kurva, beskriven av någon funktion g(x) : y i = g(x i ). Funktionen g kan vara explicit definierad, t. ex. om vi vill approximera sin x i punkterna x = 0, π/2 och π med ett andragradspolynom. Men funktionen kan också vara implicit definierad, om vi t.ex. vill interpolera mätdata. Hur uttrycks interpolanten p n 1 (x)? Istället för att använda de naturliga baspolynomen 1, x och x 2, skulle vi kunna använda den alternativa basen 1, (x + 2) och (x + 2)(x 3). Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 6

I denna bas kan det tidigare nämnda interpolationspolynomet p 2 (x) uttryckas p 2 (x) = 15 + 2(x + 2) 2(x + 2)(x 3). Olika baser har olika fördelar. När vi har bestämt oss för ett sätt att representera interpolanten, hur beräknar vi därpå koefficienterna? Det visar sig att detta problem leder till lösningen av ett ekvationssystem med en koefficientmatris av en bestämd symmetri. Sedan koefficienterna blivit beräknade, hur kan vi på ett effektivt sätt beräkna interpolanten? Detta problem klarnar när vi ritat en graf av polynomet. Den klassiska metoden att beräkna ett interpolationspolynom har uppkallats efter Alexandre-Théophile Vandermonde (1735-1796, fransk matematiker, som bl.a. studerade determinanter). Som ett exempel skall vi studera problemet att finna det tredjegradspolynom p 3 (x) = a 1 + a 2 x + a 3 x 2 + a 4 x 3 som interpolerar punkterna ( 2, 10), ( 1, 4), (1, 6) och (2, 3). Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 7

Varje interpolationspunkt ger då upphov till en lineär ekvation med fyra obekanta: Vi kan uttrycka detta ekvationssystem i matrisform: a 1 2a 2 + 4a 3 8a 4 = 10 a 1 a 2 + a 3 a 4 = 4 a 1 + a 2 + a 3 + a 4 = 6 a 1 + 2a 2 + 4a 3 + 8a 4 = 3 (1) 1 2 4 8 a 1 10 1 1 1 1 a 2 1 1 1 1 a 3 = 4 6 1 2 4 8 a 4 3 Lösningen a=[4.5000 1.9167 0.5000-0.9167] till dessa fyra ekvationer får man med följande enkla MATLAB-program: y = [10; 4; 6; 3]; V = [1-2 4-8; 1-1 1-1; 1 1 1 1; 1 2 4 8]; a = V\y; Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 8

Vi skall nu studera det n dimensionella interpolationsproblemet. I detta fall skall vi bestämma koefficienterna a 1, a 2,..., a n för polynomet p n 1 (x) = a 1 + a 2 x + a 3 x 2 + + a n x n 1 så att p n 1 (x i ) = a 1 + a 2 x i + a 3 x 2 i + + a nx n 1 i för alla i = 1 : n. Genom att skriva ekvationerna i matrisform får vi 1 x 1 x 2 1 x n 1 1 1 x 2 x 2 x n 1 2 1 x 3 x 2 3 x n 1 3....... 1 x n x 2 n x n 1 n a 1 a 2 a 3. a n = y 1 y 2 y 3. y n = y i Koefficientmatrisen (Vandermondes matris) kan vi kalla V. För att vi skall kunna lösa interpolationsproblemet, måste V vara icke-singulär. Antag nu, att det finns en sådan vektor c, att V c = 0. Detta betyder, att polynomet q(x) = c 1 + c 2 x + + c n x n 1 Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 9

skulle försvinna i var och en av de (disjunkta) punkterna x = x 1, x 2,..., x n, m.a.o. q(x) är ett polynom av gradtalet n 1 som har n skilda rötter. Detta kan ast inträffa om polynomet är ett noll polynom (dvs c = 0). Alltså kan V inte vara en singulär matris. Vi skall nu beskriva några sätt att konstruera matrisen V. Eftersom den i:te raden av V innehåller potenser av x i, och exponenterna växer från 0 till n 1 då man går från vänster till höger, så kan man konstruera matriselementen med en vanlig dubbelslinga: n = length(x); V = zeros(n,n); for i = 1:n % i:te raden: for j = 1:n V(i,j) = x(i)^(j-1); Detta är en radorienterad algoritm, eftersom den verkar på matrisen rad för rad. Den inre slingan i denna skript kan vektoriseras med hjälp av elementvis exponentiering. Således ger t.ex. MATLAB-kommandot u = [1 2 3 4].^[3 5 2 3] åt radvektorn u värdet [1 32 9 64]. Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 10

För att räkna ut elementen i den i:te raden av V måste man upphöja skalären x i i var och en av exponenterna i radvektorn 0 : n 1 = (0, 1,..., n 1). Kommandot r = (x(i)*ones(1,n)).^(0:n-1) kommer därför att tillordna vektorn (1, x i, x 2 i,..., xn 1 i ) till r. Den i:te raden i V kan anges med V(i,:), och vi får då skripten n = length(x); V = zeros(n,n); for i=1:n % i:te raden i V: V(i,:) = (x(i)*ones(1,n)).^(0:n-1); Vi kan också kasta om slingorna i den ursprungliga skripten, varigenom vi får en kolumnorienterad algoritm: n = length(x); V = zeros(n,n); for j=1:n % j:te kolumnen: for i = 1:n V(i,j) = x(i)^(j-1); Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 11

Om j > 1, så kan V (i, j) uttryckas som produkten av x(i) och V (i, j 1), vilket visar att potenseringarna kan göras genom successiva multiplikationer: n = length(x); V = zeros(n,n); V = ones(n,n); for j=2:n % j:te kolumnen: for i = 1:n V(i,j) = x(i)*v(i,j-1); Den j:te kolumnen bildas alltså genom elementvis vektormultiplikation: x 1.. x n V 1,j 1. = V n,j 1 V 1,j. V n,j som kan utföras med MATLAB kommandot V(:,j) = x.*v(:,j-1). Vi kommer till sist fram till följande MATLAB-funktion för interpolering enligt Vandermondes metod: Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 12

function a = interpv(x,y) % % Invariabler: % x: en kolumnvektor med n (olika) element % y: en kolumnvektor med n element % % Utvariabel: % a: en kolumnvektor med n element för vilka gäller att om % p(x) = a(1) + a(2)x +... + a(n)x^(n-1) så är % p(x(i)) = y(i), i = 1:n % n = length(x); V = ones(n,n); for j = 2:n % j:te kolumnen: V(:,j) = x.*v(:,j-1); a = V\y; Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 13

Vi skall nu beskriva en effektiv metod för att beräkna polynomvärdena p n 1 (x) = a 1 +... + a n x n 1 för x = z, då vi känner z och a(1:n). Vi kan beräkna värdet av p n 1 (z) direkt genom att summera potenser av x: n = length(a); zk = 1; pz = a(1); for k = 2:n zk = z*zk; pz = pz + a(k)*zk; men det finns en effektivare metod. Vi skall för enkelhetens skull tillämpa den på ett tredje gradens polynom, som vi skriver i formen p 3 (x) = a 1 + a 2 x + a 3 x 2 + a 4 x 3 = ((a 4 x + a 3 )x + a 2 )x + a 1. Polynomets värde i z kan följaktligen beräknas med programfragmentet pz = a(4); pz = z*pz + a(3); pz = z*pz + a(2); pz = z*pz + a(1); Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 14

För ett godtyckligt gradtal kan man uttrycka denna kedjeregel med kommandosekvensen n = length(a); pz = a(n); for i=n-1:-1:1 pz = z*pz + a(i); Denna metod, som kallas Horners regel är uppkallad efter William George Horner, en engelsk matematiker som beskrivit den 1819 1. Låt oss anta, att vi vill beräkna interpolanten i många, skilda punkter. Vi skall anta att vektorn z(1:m) har blivit initialiserad, och att vi vill tillordna värdet p n 1 (z(i)) till pz(i) för alla i = 1 : m. Detta kan naturligtvis göras genom att man upprepar Horners metod i varje punkt: 1 W.G. Horner, A new method of solving numerical equations of all orders, by continuous approximation, Phil. Trans., Vol. 109, 1819, ss. 308-335 Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 15

m = length(z); n = length(a); pz = zeros(m,1); for j = 1:m % Beräkna p(z(j)). pz(j) = a(n); for i=n-1:-1:1 pz(j) = z(j)*pz(j) + a(i); Vi kan vektorisera detta programfragment genom att tänka på vad det innebär att man samtidigt beräknar interpolanterna i varje punkt z i. Antag, att m = 5 och n = 4 (dvs vi vill beräkna en kubisk interpolant i fem punkter). Det första steget i Horners metod kan då uttryckas pz(1) pz(2) pz(3) = pz(4) a(4) a(4) a(4) a(4) Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 16

I vektorform kan detta skrivas pz = a(n)*ones(m,1). Nästa steg kan göras simultant på analogt sätt: pz(1) z(1) pz(1) a(3) pz(2) pz(3) = z(2) pz(2) z(3) pz(3) + a(3) a(3) pz(4) z(4) pz(4) a(3) eller i vektorform pz = z.*pz + a(3). För en kubisk interpolant får vi alltså följande MATLAB-skript: pz = a(4)*ones(m,1) pz = z.*pz + a(3); pz = z.*pz + a(2); pz = z.*pz + a(1); Detta programfragment kan vi generalisera till följande MATLAB-rutin för att beräkna polynomvärden av vektorargument med Horners metod: Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 17

function pz = hornerv(a,z) % % Invariabler: % a: en kolumnvektor med n element % z: en kolumnvektor med m element % % Utvariabel: % pz: en kolumnvektor med n element, för vilka gäller att % om p(x) = a(1) +... + a(n)x^(n-1), så är % pz(i) = p(z(i)) då i=1:m. % n = length(a); m = length(z); pz = a(n)*ones(m,1); for k = n-1:-1:1 pz = z.*pz + a(k); Varje uppdatering av pz kräver 2m flyttalsoperationer, så att 2mn operationer behövs totalt. Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 18

Som en tillämpning skall vi studera ett program, som ritar kubiska interpolanter av sin x inom intervallet [0, 2π]. Punkternas x koordinater väljs slumpmässigt med rand funktionen, och sorteras i storleksordning med sort. Sinuskurvan anges med en heldragen linje, och interpolanten med en streckad linje. % programfil: intsin % Programmet ritar fyra slumpartade kubiska interpolanter för % sin(x) inom intervallet [0,2pi] och % använder Vandermondes metod. close x1 = linspace(0,2*pi,100) ; y1 = sin(x1); for k=1:4 x = 2*pi*sort(rand(4,1)); y = sin(x); a = interpv(x,y); pz = hornerv(a,x1); subplot(2,2,k) plot(x1,y1, -,x1,pz, --,x,y, o ) axis([0 2*pi -2 2]) Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 19

Nedanståe figur visar ett exempel på grafiken, och visar också hur valet av punkter påverkar överensstämmelsen mellan den ursprungliga kurvan och interpolanten. Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 20