Presentation is loading. Please wait.

Presentation is loading. Please wait.

מבוא מורחב למדעי המחשב בשפת Scheme תרגול 4. Outline High order procedures –Finding Roots –Compose Functions Accelerating Computations –Fibonacci 2.

Similar presentations


Presentation on theme: "מבוא מורחב למדעי המחשב בשפת Scheme תרגול 4. Outline High order procedures –Finding Roots –Compose Functions Accelerating Computations –Fibonacci 2."— Presentation transcript:

1 מבוא מורחב למדעי המחשב בשפת Scheme תרגול 4

2 Outline High order procedures –Finding Roots –Compose Functions Accelerating Computations –Fibonacci 2

3 Finding roots of equations Input: Continuous function f(x) a, b such that f(a)<0<f(b) Goal: Find a root of the equation f(x)=0 Relaxation: Settle with a “close-enough” solution 3

4 General Binary Search Search space: set of all potential solutions –e.g. every real number in the interval [a b] can be a root Divide search space into halves – e.g. [a (a+b)/2) and [(a+b)/2 b] Identify which half has a solution –e.g. r is in [a (a+b)/2) or r is in [(a+b)/2 b] Find the solution recursively in reduced search space –[a (a+b)/2) Find solution for small search spaces –E.g. if abs(a-b)<e, r=(a+b)/2 4

5 Back to finding roots Theorem: if f(a)<0<f(b) and f(x) is continuous, then there is a point c  (a,b) such that f(c)=0 –Note: if a>b then the interval is (b,a) Half interval method –Divide (a,b) into 2 halves –If interval is small enough – return middle point –Otherwise, use theorem to select correct half interval –Repeat iteratively 5

6 Example b a 6

7 Example (continued) b a And again and again… 7

8 (define (search f a b) (let ((x (average a b))) (if (close-enough? a b) (let ((y (f x))) (cond ((positive? y) ) ((negative? y) ) (else )))))) x (search f a x) (search f x b) x Scheme implementation 8 Complexity?

9 Determine positive and negative ends (define (half-interval-method f a b) (let ((fa (f a)) (fb (f b))) (cond ((and ) (search f a b)) ((and ) (search f b a)) (else (display “values are not of opposite signs”))) )) (negative? fa) (positive? fb) (negative? fb) (positive? fa) We need to define (define (close-enough? x y) (< (abs (- x y)) 0.001)) 9

10 sin(x)=0, x  (2,4) (half-interval-method 2.0 4.0) x 3 -2x-3=0, x  (1,2) (half-interval-method 1.0 2.0) Examples: sin 3.14111328125… (lambda (x) (- (* x x x) (* 2 x) 3)) 1.89306640625 10

11 Compose Compose f(x), g(x) to f(g(x)) (define (compose f g) (lambda (x) (f (g x)))) (define (inc x) (+ x 1)) ((compose inc square) 3)  10 ((compose square inc) 3)  16 11

12 (= n 1) f (repeated f (- n 1)) f(x), f(f(x)), f(f(f(x))), … apply f, n times (define (repeated f n) (if (compose f ))) ((repeated inc 5) 100) => 105 ((repeated square 2) 5) => 625 Repeated f (define (compose f g) (lambda (x) (f (g x)))) Compose now Execute later 12

13 (define (repeated f n) (lambda (x) (repeated-iter f n x))) Repeated f - iterative (define (repeated-iter f n x) (if (= n 1) (f x) (repeated-iter f (- n 1) (f x)))) Do nothing until called later 13

14 Repeated f – Iterative II (define (repeated f n) (define (repeated-iter count accum) (if (= count n) accum (repeated-iter (+ count 1) (compose f accum)))) (repeated-iter 1 f)) Compose now Execute later 14

15 (define (smooth f) (let ((dx 0.1)) )) (define (average x y z) (/ (+ x y z) 3)) (lambda (x) (average (f (- x dx)) (f x) (f (+ x dx)))) Smooth a function f: g(x) = (f(x – dx) + f(x) + f(x + dx)) / 3 ((repeated smooth n) f) Repeatedly smooth a function (define (repeated-smooth f n) ) 15

16 Normal Distribution The formula of the normal probability density function is based on two parameters: the mean (μ) and the standard deviation (σ). Its formula is: 16

17 Normal Distribution 17

18 Normal Distribution The cumulative density function: 18

19 Standard Normal Distribution If μ=0 and σ=1 then we call it Standard Normal Distribution. The formula of the standard normal probability density function is: The cumulative density function is defined: Note: F(x)=Φ((x-μ)/σ) 19

20 Standard Normal Distribution Let’s first recall two general functions: ; General sum procedure (define (sum term a next b) (if (> a b) 0 (+ (term a) (sum term (next a) next b)))) ; General Integral function (define (integral f a b) (define dx 1.0e-4) (* (sum f a (lambda (x) (+ x dx)) b) dx)) 20

21 Write a procedure std-normal that computes the standard normal cumulative function. Assume that Φ(x)=0 for x 6. (define (std-normal x) (let ((pi 3.14159) (e 2.71828) (sigma 6)) (define (phi x) ) (cond ((< x -sigma) ) ((> x sigma) ) (else ))) Standard Normal Distribution (/ (expt e (* (- 0.5) (* x x))) (sqrt (* 2 pi))) 0 1 (integral phi (- sigma) x) 21

22 Write a procedure normalize which, given a function foo and two parameters a, b returns the function G such that G(x) = foo((x – a)/b). That is, you should have: ((normalize square 5 2) 1) ==> 4 (define (normalize foo a b) (lambda (x) (if (= b 0) (display "Error in normalize: Divide by zero") ))) Standard Normal Distribution (foo (/ (- x a) b)) 22

23 Write a procedure normal that computes the normal cumulative function for any μ and σ. Remember: F(x)=Φ((x-μ)/σ) (define (normal x miu sigma) ) Normal Distribution ((normalize std-normal miu sigma) x) 23

24 Accelerating Computations 24

25 Iterative Fibonacci (define (fib n) (define (fib-iter a b count) (if (= count 0) b (fib-iter (+ a b) a (- count 1))) (fib-iter 1 0 n)) Computation time:  (n) Much better than Recursive implementation, but… Can we do better? 25

26 Slow vs Fast Expt Slow (linear) –b 0 =1 –b n =b  b n-1 Fast (logarithmic) –b n =(b 2 ) n/2 if n is even –b n =b  b n-1 if n is odd Can we do the same with Fibonacci? 26

27 Double Steps Fibonacci Transformation: 0 1 1 2 3 5 8 13 21 b a a+b 2a+b 3a+2b … Double Transformation: 27

28 A Squaring Algorithm If we can square (or multiply) linear transformations, we have an algorithm: –Apply T n on (a,b), where: –T n =(T 2 ) n/2 If n is even –T n =T  T n-1 If n is odd 28

29 Squaring Transformations General Linear Transformation: Squared: 29

30 Iterative Algorithm Initialize: Stop condition: If count=0 return b Step count is oddcount is even 30

31 Representing Transformations We need to remember x, y, z, w Fibonacci Transformations belong to a simpler family: T 01 is the basic Fibonacci transformation Squaring (verify on your own!): 31

32 Implementation (finally) (define fib n) (fib-iter 1 0 0 1 n)) (define (fib-iter a b p q count) (cond ((= count 0) b) ((even? count) (fib-iter a b (/ count 2) (else (fib-iter p q (- count 1)))) (+ (square p) (square q)) (+ (* 2 p q) (square q)) (+ (* b q) (* a q) (* a p)) (+ (* b p) (* a q)) 32


Download ppt "מבוא מורחב למדעי המחשב בשפת Scheme תרגול 4. Outline High order procedures –Finding Roots –Compose Functions Accelerating Computations –Fibonacci 2."

Similar presentations


Ads by Google