Ingeniørhøjskolen i Århus Slide 1 Newton approximation ”Oversæt” til algoritme - Step 5: Skriv kode - Step 4: Skriv pseudokode - Step 3: Specificér pre-

Slides:



Advertisements
Lignende præsentationer
1 Problemkompleksitet 2 Problemers kompleksitet En ineffektiv algoritme: køretiden vokser eksponentielt med input- størrelsen Et problem, der ikke kan.
Advertisements

Test First Development
Almindelige ("hårde") links (i filsystemer med i-noder) opg.txt jens: pia: ln /home/pia/opg.txt /home/jens/opg.txt hård link: ny post får i-node-nummer.
1 Rekursion og algoritmedesign. 2 Rekursion Rekursiv definition af X: X defineres i termer af sig selv. Rekursion er nyttig, når en generel version af.
KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
1 Nordjyllands Erhvervakademi Lektion 6 Opsamling på opgaver Mere om rekursion: –Del&Hersk –Sortering –Kompleksitet (effektivitet – ”Store O”) Abstrakte.
1 Bevisteknikker. 2 Bevisteknikker (relevant både ved design og verifikation) Teorem: Der findes uendeligt mange primtal Bevis: Antag at der findes et.
Hex Oplæg til eksamen 28/ Dagsorden Introduktion Præsentation af spillet Vores graf MinimaxDFS/BFS Disjoint sets.
GP 10, 7/ Grundlæggende programmering Efterår 2001 Forelæsning 10 onsdag 7/ kl. 9:15 – 12:00.
MM4 Algoritmiske grundprincipper. MM1 Lister, stakke og køer. MM2 Hash-tabeller og Træer. MM3 Sortering.MM4 Søgning.MM5.
Lasse Steensgaard [xls]Opsamlende forelæsning på W2, 2. april 2003slide 1 HTML og PHP: Baglæs fra output til input PHP: Variable, strenge og arrays Funktioner,
Intro Forelæsning 6 Linux Install Party i PC-Cafeen i morgen.
FEN Rekursion og induktion1 Induktion og (især) rekursion Mange begreber defineres ud fra en basis og så en gentagen anvendelse af et antal regler.
Delphi og C++ Builder C++ Referencer og pointere.
Anvendelser I Leg og spil.
Compiler/fortolker struktur Mellem- kode Mellemk.- optimering Kode- generering Kode- optimering Lexikalsk- analyse Syntax- analyse Semantik- analyse -
1 Algoritmik ved Keld Helsgaun. 2 Plan Algoritmebegrebet et simpelt eksempel Et eksempel på algoritmedesign.
Delphi og C++ Builder C++ Builder. C++ Historie Sproget blev designet for AT&T af danskeren Bjarne Stoustrup En objektorienteret videreudvikling.
W1b1 PC baseret analyse og simulering. w1b2 Definition Digital Elektronisk beregningsmaskine, der har intern hukommelse til lagring af program og mellem-regninger.
Lektion 7 Læsestof: Kopier fra Caranno
1 JavaScript Lektion 6: Repetition i JavaScript Math TIDY Litteratur: JST lektion 10.
FEN KbP/seminar 1: Specifikationer/Notationen Q 1 Kontraktbaseret programmering: Seminar 1 Om specifikationer Algoritmenotationen Q.
DATATYPER. For at tilpasse hvert felt i databasen til dets formål og dermed øge funktionalitet 1 bit er tilstrækkelig til at angive køn (0/1) men for.
Procestræ under afvikling af cp init login shell cp cp src dest.
Paradigmer i Programmering 2. Sammensatte typer Tupler og lister Programmering med rekursion Programmering med pipe-lines Programmering med polymorfe.
Paradigmer i Programmering 1. Program for idag : Funktioner og udtryk i SML : Øvelse : Frokost – 14.00: Deklarative.
Validering af bruger-input i.NET WebForms Valideringsmuligheder i ASP.NET Fordele og ulemper Server-side vs. client-side Formatering vs. Validering.
Begreber og Redskaber 7. Plan for idag Rekursive underprogrammer Rekursive datastrukturer Rekursion vs iteration Rekursivt: Flette sortering.
Paradigmer i Programmering 1. Plan for kurset 4 x Mads R, 4 x Torben B, 2 x opgave MR: Funktionsprogrammering, SML TB: Logikprogrammering, Prolog Opgave:
Anvendelser I Leg og spil.
C#: Udtryk og metoder Kilde: Joe Hummel. 2 Nordjyllands Erhvervakademi – 2008 Indhold “With regards to programming statements and methods, C# offers what.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Intro Siden sidst: evaluering på opgaver og virtuel kursus.
Intro Siden sidst: evaluering på opgaver og virtuel kursus Kursussammensætning: forelæsning – læse – arbejde selvstændigt – newsgroup – øvelsestime – aflevering.
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
Algoritmer og Datastrukturer 1 ”Rush Hour” Gerth Stølting Brodal.
Paradigmer i Programmering 3. Højere ordens funktioner Idag: Højere ordens funktioner Algebraiske datatyper Næste gang: I/O, Filer, interaktive programmer.
1 Processer. 2 fork int fork(); Danner en ny proces med samme indhold som forældre processen. I begge processer er programtælleren placeret lige efter.
Spec. af LottotalsGenerator interface LottoTal{ // S: mgd. af udtrukne tal // min, max: int - angiver intervallet (incl.) void set(int min, int max); //PRE.
Søgning.  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringSøgning.2 Søgeproblemer... Søgning efter fil(er) Søgning i databaser.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
MATLAB Repetition og Udførelse af programmer Anders P. Ravn Institut for Datalogi Aalborg Universitet Forår 2005 >>mit_modul minf.m … minf(a) … mit_modul.m.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering7B.1 Søgning.
Type analyse i FunCalc / CoreCalc Baggrund og kontekst Formål Designovervejelser → løsning /arkitektur Strategi for implementering og afprøvning Resultater.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Trinvis forfinelse Systematisk, gradvis udvikling af programmer.
I o p o DAIMI, AU, December 1999Introducerende objektorienteret programmering14A.1 Del, løs og kombinér.
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
I o p o DAIMI, AU, November 1999Introducerende objektorienteret programmering9D.1 Del, løs og kombinér.
I o p o DAIMI, AU, September 1999Introducerende objektorienteret programmering5B.1 Sweep-algoritmer Programmering med invarianter og uden kaniner.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
 Michael E. Caspersen, 2000 Introducerende objektorienteret programmering4A.1 Sweep-algoritmer Programmering med invarianter og uden kaniner.
I o p o DAIMI, AU, Oktober 1999Introducerende objektorienteret programmering7B.1 Søgning.
Port access  Indtil nu har vi anvendt færdige metoder til at tænde og slukke for LEDs, men den metode virker kun så længe vi arbejde med Keil boardet.
Forelæsning Uge 2 – Torsdag Java syntax og style guide Sætninger –Simple sætninger (assignment, interne og eksterne metodekald) –Sammensatte sætninger.
Algoritmeskabeloner findOne, findAll, findNoOf, findSumOf Primitive typer (forfremmelse og begrænsning) Identitet versus lighed (for objekter, herunder.
Forelæsning Uge 2 – Torsdag
Nu har du installeret uVision og set at både programmet og boardet virker. Man kan ikke lære at cykle ved at se på andre, så i det efterfølgende skal du.
1587 Server - Blandet miljø Webintegrator HF1
Forelæsning Uge 4 – Mandag
Embedded SW – C & picoBlaze
I det efterfølgende vil vi prøve at opnå forbindelse til de knapper som er på boardet. Opgaven er at vi ved at trykke på knapperne kan få lyset til at.
Lav et nyt projekt og tilføj denne gang pakken Graphic LCD.
Forelæsning Uge 4 – Mandag
1587 Server - Blandet miljø Webintegrator HF1
Studiepraktik Thomas Bøgholm Mikkel Hansen Jacob Elefsen
Programmering.
Forelæsning Uge 2 – Mandag
Forelæsning Uge 4 – Torsdag
Præsentationens transcript:

Ingeniørhøjskolen i Århus Slide 1 Newton approximation ”Oversæt” til algoritme - Step 5: Skriv kode - Step 4: Skriv pseudokode - Step 3: Specificér pre- og postconditions Fra numerisk metode til implementeret algoritme - Step 1: Specificér forudsætninger - Step 2: Angiv prototype - Step 6: Test

Ingeniørhøjskolen i Århus Slide 2 Newton approximation Step1 - Forudsætninger Et maksimalt antal iterationer (hvorfor?) En acceptabel fejlmargin - Algoritmen – hvad gør den? - regneforskrift – her: - Funktionen f(x) - Funktionens 1. afledede f’(x) - Et godt “gæt” x0 som startværdi - Hvornår skal beregningen stoppe Forudsætninger:

Ingeniørhøjskolen i Århus Slide 3 Newton approximation Step2 – Angiv prototype bool newton( double (*f)(double), double (*fPrime)(double), double guess), double acceptedError, int maxIterations, double & solution ) bool newton( double (*f)(double), double (*fPrime)(double), double guess), double acceptedError, int maxIterations, double & solution ) f() and fPrime() are function pointers! f() and fPrime() are function pointers!

Ingeniørhøjskolen i Århus Slide 4 Newton approximation Step 3 - Pre- og postconditions bool newton( double (*f)(double), double (*fPrime)(double), double guess), double acceptedError, int maxIterations, double & solution ) // Precondition: // f() er en differentiabel funktion med 1. afledet fPrime(). // maxIterations > 0, acceptedError > 0, fPrime(guess) != 0 // Postcondition: // Hvis der på maxIterations (eller mindre) er fundet en løsning x // således, at |f(x)| < acceptedError, sættes solution til x, og der // returneres true. I modsat sættes solution til 0 (garbage), og der // returneres false. { } bool newton( double (*f)(double), double (*fPrime)(double), double guess), double acceptedError, int maxIterations, double & solution ) // Precondition: // f() er en differentiabel funktion med 1. afledet fPrime(). // maxIterations > 0, acceptedError > 0, fPrime(guess) != 0 // Postcondition: // Hvis der på maxIterations (eller mindre) er fundet en løsning x // således, at |f(x)| < acceptedError, sættes solution til x, og der // returneres true. I modsat sættes solution til 0 (garbage), og der // returneres false. { }

Ingeniørhøjskolen i Århus Slide 5 Newton approximation Step 4 - Pseudokode bool newton( double (*f)(double), double (*fPrime)(double), double guess, double acceptedError, int maxIterations, double & solution ) - definer nødvendige lokale variable - gør følgende: - foretag ny iteration (Newton) - sæt xN = xNPlus1 - beregn afvigelse - tæl antal iterationer 1 op - fortsæt sålænge: - afvigelse > acceptedError OG antal iterationer < maxIterationer - hvis afvigelse >= acceptedError - solution = 0 - returner false - ellers - solution = xN - returner true bool newton( double (*f)(double), double (*fPrime)(double), double guess, double acceptedError, int maxIterations, double & solution ) - definer nødvendige lokale variable - gør følgende: - foretag ny iteration (Newton) - sæt xN = xNPlus1 - beregn afvigelse - tæl antal iterationer 1 op - fortsæt sålænge: - afvigelse > acceptedError OG antal iterationer < maxIterationer - hvis afvigelse >= acceptedError - solution = 0 - returner false - ellers - solution = xN - returner true

Ingeniørhøjskolen i Århus Slide 6 Newton approximation Step 5 - Implementering bool newton( double (*f)(double), double (*fPrime)(double), double guess, double acceptedError, int maxIterations, double & solution ) // Precondition: // { unsigned int iterations = 0; double xN = guess, xNPlus1, error; do{ xNPlus1 = xN - f(xN)/fPrime(xN); xN = xNPlus1; error = abs( f(xNPlus1) ); }while( error >= acceptedError && ++iterations < maxIterations ); if( error >= acceptedError) {solution = 0; return false; } else {solution = xN; return true; } } bool newton( double (*f)(double), double (*fPrime)(double), double guess, double acceptedError, int maxIterations, double & solution ) // Precondition: // { unsigned int iterations = 0; double xN = guess, xNPlus1, error; do{ xNPlus1 = xN - f(xN)/fPrime(xN); xN = xNPlus1; error = abs( f(xNPlus1) ); }while( error >= acceptedError && ++iterations < maxIterations ); if( error >= acceptedError) {solution = 0; return false; } else {solution = xN; return true; } }

Ingeniørhøjskolen i Århus Slide 7 Newton approximation Step 6 - Test double testFkt( double x ) { return (x*x*x + 3*x*x - 6*x - 8); } double testFkt( double x ) { return (x*x*x + 3*x*x - 6*x - 8); } double testFktPrime( double x ) { return (3*x*x + 6*x - 6); } double testFktPrime( double x ) { return (3*x*x + 6*x - 6); }

Ingeniørhøjskolen i Århus Slide 8 Newton approximation Step 6 - Test int main() { const double INITIAL_GUESS = ; const double ACCEPTED_ERROR = ; const int MAX_ITERATIONS = 25; bool converges = false; double result = 0; converges = newton( testFkt, testFktPrime, INITIAL_GUESS, ACCEPTED_ERROR, MAX_ITERATIONS, result ); if( converges ) cout << "Result OK, approximated value = " << result << endl; else cout << "No convergence" << endl; } int main() { const double INITIAL_GUESS = ; const double ACCEPTED_ERROR = ; const int MAX_ITERATIONS = 25; bool converges = false; double result = 0; converges = newton( testFkt, testFktPrime, INITIAL_GUESS, ACCEPTED_ERROR, MAX_ITERATIONS, result ); if( converges ) cout << "Result OK, approximated value = " << result << endl; else cout << "No convergence" << endl; }

Ingeniørhøjskolen i Århus Slide 9 Bemærk, at prototypen KUNNE have været: double newton( double (*f)(double), double (*fPrime)(double), double guess), double acceptedError, int maxIterations, bool & succes ) Hvad vil det betyde / kræve ? Ændring af postconditions Løsningen returneres direkte Boolean svar “returneres” ved reference

Ingeniørhøjskolen i Århus Slide 10 Numeriske metoder - generelt Brug af computer algoritmer til at (forsøge at) løse matematiske eller real-world problemer Ting at tage stilling til: –Nøjagtighed –Tilstrækkelighed –Hastighed