Numerisk differentiation og integration med Python

Relaterede dokumenter
Læringsprogram. Numeriske metoder. Matematik A Programmering C Studieområdet. Roskilde Tekniske Gymnasium Klasse 3.4

lineær regression er en metode man bruger for at finde den mindste afstand mellem bestemte punkter ved at bruge denne formel: a= n i=1 i=1

Mujtaba og Farid Integralregning

Integralregning Infinitesimalregning

Opvarmningsopgaver. Gang parentesen ud: Forkort brøken: Gang parentesen ud: (1.5 + x) 2 (1 + x) 3. Forkort brøken. Gang parentesen ud: (x 0 + x) 3

Differentialregning. Ib Michelsen

Læringsprogram. - Numeriske metoder. Lavet af: Benjamin Løv Timmermann, Nicklas Nygaard Larsen og Kim Clemensen Holdt 3.4 Roskilde Tekniske Gymnasium

Mere om differentiabilitet

HTX, RTG. Rumlige Figurer. Matematik og programmering

Projekt 2.2 Omvendt funktion og differentiation af omvendt funktion

Regneark Excel fortsat

1 monotoni & funktionsanalyse

Sammenhæng mellem variable

Eksempler på problemløsning med differentialregning

Klasse 1.4 Michael Jokil

matx.dk Differentialregning Dennis Pipenbring

Projektopgave Rumlige figurer. Matematik & Programmering Lars Thomsen Klasse 3.4 HTX Roskilde Vejledere: Jørn & Karl 05/

Noter til Computerstøttet Beregning Taylors formel

Numerisk. differentiation. Erik Vestergaard

Differential- regning

MATEMATIK A. Indhold. 92 videoer.

Kom i gang-opgaver til differentialregning

2 Erik Vestergaard

matx.dk Enkle modeller

gudmandsen.net 1 Parablen 1.1 Grundlæggende forhold y = ax 2 bx c eksempelvis: y = 2x 2 2x 4 y = a x 2 b x 1 c x 0 da x 1 = x og x 0 = 1

Kapitel , altså 360. Hvad er matematik? 1 ISBN

PeterSørensen.dk : Differentiation

Kvadratrodsberegning ved hjælp af de fire regningsarter

Kapital- og rentesregning

Differentialregning med TI-Interactive! Indledende differentialregning Tangenter Monotoniforhold og ekstremum Optimering Jan Leffers (2009)

Vi har valgt at analysere vores gruppe ud fra belbins 9 grupperoller, vi har følgende roller

[FUNKTIONER] Hvornår kan vi kalde en sammenhæng en funktion, og hvilke egenskaber har disse i givet fald. Vers. 2.0

Differentialregning. Et oplæg Karsten Juul L P

Pointen med Differentiation

10. Differentialregning

Arealer som summer Numerisk integration

Asymptoter. for standardforsøgene i matematik i gymnasiet Karsten Juul

Integralregning med TI-Interactive! Stamfunktioner Integraler Arealer Jan Leffers (2005)

Eksaminanderne på hf tilvalg forventes ikke at kunne udnytte grafregnerens muligheder for regression.

Matematik B-niveau 31. maj 2016 Delprøve 1

MATEMATIK B. Videooversigt

π er irrationel Frank Nasser 10. december 2011

Eksponentielle modeller

MM501 forelæsningsslides

Funktioner - supplerende eksempler

Differential- ligninger

Matematik A. Studentereksamen. Forberedelsesmateriale til de digitale eksamensopgaver med adgang til internettet

Løsninger til eksamensopgaver på A-niveau 2019 ( ) ( )

Kapitel 3 Lineære sammenhænge

Michael Jokil

MATEMATIK A-NIVEAU-Net Forberedelsesmateriale

Undervisningsbeskrivelse

Undervisningsbeskrivelse

Matematik A og Informationsteknologi B

Løsninger til eksamensopgaver på B-niveau 2017

Matematisk modellering og numeriske metoder. Lektion 17

Brug af TI-83. Løsning af uligheder: Andre ikke simple uligheder løses ved følgende metode - skitseret ved et eksempel : Løs uligheden

Øvelse 1 a) Voksende b) Voksende c) Konstant d) Aftagende. Øvelse 2 a) f aftagende i f voksende i b) f aftagende i

Betydningen af ordet differentialkvotient...2. Sekant...2

MATEMATIK A-NIVEAU. Anders Jørgensen & Mark Kddafi. Vejledende eksempler på eksamensopgaver og eksamensopgaver i matematik, 2012.

Matematisk modellering og numeriske metoder

Vejledning til WordMat på Mac

Matematik A-niveau STX 1. juni 2010 Øvelse DELPRØVE 1 & DELPRØVE 2

Ang. skriftlig matematik B på hf

Undervisningsbeskrivelse

Undervisningsbeskrivelse

Elementær Matematik. Funktioner og deres grafer

Matematik B 2F Mundtlig eksamen Juni

Excel tutorial om lineær regression

13 -Integralregning. Hayati Balo, AAMS,Århus. 1. Det ubestemte integrale som betegnes med f (x)dx. 2. Det bestemte integrale som betegnes med b

Kapitel 7 Matematiske vækstmodeller

Løsninger til eksamensopgaver på A-niveau 2019 ny ordning

For at få tegnet en graf trykkes på knappen for graftegning. Knap for graftegning

ØVEHÆFTE FOR MATEMATIK C LINEÆR SAMMENHÆNG

Ligningsløsning som det at løse gåder

Programmering C RTG

Undervisningsbeskrivelse

Funktioner. 1. del Karsten Juul

Programmering C Eksamensprojekt. Lavet af Suayb Köse & Nikolaj Egholk Jakobsen

Newton-Raphsons metode

Indhold. Maskinstruktur Kapitel 1. Assemblersprog Indledning Hop-instruktioner Input og output...

Mini-formelsamling. Matematik 1

Løsning MatB - januar 2013

Lineære sammenhænge. Udgave Karsten Juul

Når eleverne skal opdage betydningen af koefficienterne i udtrykket:

Undervisningsbeskrivelse

Kasteparabler i din idræt øvelse 1

Undervisningsbeskrivelse

MM501 forelæsningsslides

Undervisningsbeskrivelse

Løsninger til eksamensopgaver på A-niveau 2016

Sådan bruges skydere til at undersøge funktioner, tangenter og integraler

Differentialregning Infinitesimalregning

En funktion kaldes eksponentiel, hvis den har en regneforskrift, der kan skrives således: f(x) = b a x eller y = b a x, idet a og b er positive tal.

Undervisningsbeskrivelse

Visualiseringsprogram

Transkript:

Numerisk differentiation og integration med Python En uformel prototype til en tutorial, Karl Bjarnason, maj 2010 Vi vil gerne lave et program som numerisk integrerer og differentierer funktionen f(x)=x 2 fra x=a til x=b med en præcision som svarer til den traditionelle single præcision i programmeringssprog som Fortran, Basic, Pascal, C, C++, Java og Python, altså ca. syv betydende cifre. Vi bruger Python til programmeringen af en række prototyper til programmet og Maxima (Command line Maxima) til at kontrollere resultaterne fra vores prototyper. Indsætte illustration af diff og integration, blyantstegning, som forklarer principperne, ingen detaljer!!! Princippet Det princip som vi vil bruge ved udregning af både differentialkvotienten og integralet er at dele intervallet op i mange små intervaller [x i, x i+1 ] hvor i [0 ; N 1] og N er antallet af delintervaller og udregne funktionsværdierne i begge ender af dette lille delinterval. Disse funktionsværdier og x-værdierne som definerer start og slut på delintervallet, altså a og b, kan vi så bruge til at udregne en tilnærmet værdi for hældningskoefficienten i, lad os sige højre side af delintervallet, samt det bidrag som dette delinterval giver til integralet. Og så inkrementerer (forøger med 1) vi index variablen i og laver det samme nummer for næste delinterval, indtil i = N. Det er altså vores plan. Indsætte koden til prototype 1...og en funktionstabel inkl Python programmet Differentiering For hvert delinterval, altså i den løkke (loop) som vi forudser at vi skal bruge i vores program, kan vi bestemme en tilnærmet værdi for hældningskoefficienten, lad os kalde den k i som forskellen på funktionsværdierne divideret med forskellen på de to x- værdier i delintervallets endepunkter. k i = f x i 1 f x i x i 1 x i hvor i [0 ; N 1] og N er antallet af delintervaller Disse tilnærmede værdier bliver lige så mange som antallet af delintervaller, altså N, og vi kunne inkludere dem i en funktionstabel og senere afbilde dem i en graf sammen med selve funktionen f(x). Grafisk kan man forestille sig at den linje som går i gennem de to punkter på funktionens graf, som bestemmes af delintervallens endepunkter og de tilhørende funktionsværdier, mere og mere vil nærme sig at ligge helt oven i en linje som er tangent til grafen i den ene eller anden ende på delintervallet. Ind s æ tt e ind s k a n n et bille d s o m illu str er er prin cip p et for diff er e nti erin g m e d d et alj er, ind e x e r o s v.

Inden vi går i gang med at impl vores første prototype, så lad os lige vurdere hvor store vi forventer at værdierne bliver... Integration For hvert delinterval kan vi bestemme intervallets bidrag til integralet som arealet, A i, på den søjle som er defineret af intervallets endepunkter, x i og x i+1, og deres funktionsværdier. Her er der bare desværre to valgmuligheder, -vi kan bruge enten funktionsværdien for x i eller x i+1. Vi vælger at bruge f(x i+1 ) og bidraget til arealet bliver således. deltaa i = f x i 1 x i 1 x i hvor i [0 ; N 1] og N er antallet af delintervaller Bidragene A i til det samlede areal, A, under funktionens graf bliver lige så mange som antallet af delintervaller, altså N, og vi opsummerer dem ved hjælp af en tildelingssætning (assignment statement) inde i løkken. Vi kan også inkludere dem i funktionstabellen. Ind s æ tt e ind s k a n n et bill e d s o m illu str er er prin cip p et for int e g ration m e d d et alj er, ind e x er o s v. Inden vi går i gang med vores første prototype til programmet, så lad os først bruge Maxima til at integrere funktionen og bestemme værdien af den bestemte integral fra 0 til 1. Maxima giver os altså resultatet 1/3, og det er nok analytisk korrekt, men lad os nu se efter ved at tegne funktionens graf på ternet papir og lave lidt købmandsregning på antallet af de små kvadrater. Og det ser ud for at der godt kan være omkring ca. 33 små kvadrater under kurven.

Indexering nogle observationer Vi har planlagt at vores indexvariabel, i, skal starte med værdien 0 og slutte med værdien N hvor N er antallet af delintervaller. Vi bemærker at den måde vi brugte indexerne i vores definition af formlerne til udregning af k i og A i betyder at: 1. den første x-værdi og derfor også den tilhørende y-værdi får index 0 og den sidste får index N. 2. den første k-værdi får indexnummeret 1, og den sidste får indexnummeret N. 3. den første deltaa-værdi får indexnummeret 1, og den sidste bliver nummer N. Præcision Vi vil kunne styre antallet af delintervaller fordi vi har en begrundet mistanke om at fejlen på vores tilnærmede værdier for differentialkvotienten, ki, og bidraget til integralet, Ai, vil aftage når delintervallerne bliver mindre. Praktisk får det altså ingen betydning når delintervallet bliver tilstrækkelig lille, -men hvor lille er så tilstrækkelig lille? I praksis for en ingeniør vil det oftest være nok at vi ved eller er ret så sikre på at vi kender svaret med et bestemt antal betydende ciffre, f.eks. fire eller måske i værste tilfælde syv (1,234 eller 1,234567), men for en matematiker så vil et svar med syv cifre normalt være intet værd, han eller hun vil nok helt enkelt kræve at delintervallet skal være uendelig lille, fordi så vil der nemlig være uendelig lille forskel på vores linje mellem [x i, f(x i )] og [x ii, f(x ii )] og tangenterne til funktionens graf i x i og x ii, de vil nemlig ligge oven i hinanden. Dette er jo meget fint, men det er bare det lille problem at det vil kræve at vores program arbejder uendelig længe med udregningerne, -altså helt ubrugeligt for vores lille øvelse i at lave et program til numerisk udregning af differentialkvotient og integral. Implementering af Prototype 01 Vi laver nu en hurtig prototype hvor vi implementer disse ideer, vel vidende at der bliver flere muligheder til at forbedre prototypen, både med hensyn til effektiviteten, kodens opbygning og navngivning af variabler mm.

Vores program giver 0.506 for integralet fra 0 til 1 for funktionen f(x)=x 2 når vi bruger 10 delintervaller, og Maxima giver 1/3. Kan det passe? Regner vores program forkert eller rigtigt? Kan du forklare i detaljer ved hjælp af en skitse hvorfor vores program giver dette resultat? Det kan være vigtigt til at forstå hvilke forbedringer kan laves på algoritmen. Men lad os første prøve at køre programmet igen, og nu med et langt større antal delintervaller, for eksempel 100.

Nu giver vores program resultatet 0.33835, hvilket styrker os meget i troen at vi er på ret vej! Vi laver nu lidt om på programmet således at det kun skriver en linie ud efter afslutning af udregningerne, og så kører vi programmet et antal gange med stadig mindre delintervaller. Resultaterne følger her.

Ved nærmere undersøgelse ser det ud for at vi har nu 6 ciffre rigtige i svaret for arealet, men delintervallet er så blevet kun 0.000001, altså en milionte del af intervallet fra 0 til 1, og det kræver altså 1000000 gennemløb af løkken til at udregnen værdien af vores lille intergral. Detta kan forbedres, men hvordan? Fortsættelse følger... mvh Karl PS: Dette dokument er lavet med OpenOffice Writer, Python, IDLE, IrfanView og Maxima alle programmer som er open source og gratis.