UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

advertisement

UNIVERSITETET I OSLO

Det matematisk-naturvitenskapelige fakultet

Eksamen i

Eksamensdag:

MoD 190 Prøveeksamen — Numeriske beregninger

Mai 2002

Tid for eksamen: 9.00 – 13.00

Oppgavesettet er på 7 sider.

Vedlegg: 1

Tillatte hjelpemidler: Ingen

Kontroller at oppgavesettet er komplett før du begynner å besvare spørsmålene.

Alle 8 delspørsmål vektlegges likt.

Oppgaver med Løsningsforslag

Oppgave 1 Diverse Matlab-oppgaver

1a

Bruk rand funksjonen (se vedlegg) til å finne et Monte-Carlo estimat for volumet av

{

( x

1

, x

2

, x

3

, x

4

) : x

2

1

+ x

2

2

+ x

2

3

+ x

2

4

1

}

, enhetskulen i IR

4

.

Løsning

:

Her er en løsning basert på en modifikasjon av scriptet Darts.

% Script File: FourDV

% Estimates volume of 4D-unit sphere using random numbers.

close all rand(’seed’,.123456)

NumberInside = 0;

VEstimate = zeros(500,1); for k=1:500 x = -1+2*rand(100,1); y = -1+2*rand(100,1); z = -1+2*rand(100,1); w = -1+2*rand(100,1);

NumberInside = NumberInside + sum(x.^2 + y.^2 +z.^2+w.^2<= 1);

VEstimate(k) = (NumberInside/(k*100))*16;

(Fortsettes på side 2.)

Eksamen i MoD 190 Prøveeksamen, Mai 2002 Side 2 end plot(VEstimate) title(sprintf(’Monte Carlo Estimate of 4D-unit sphere = %5.3f’,VEstimate(500))); xlabel(’Hundreds of Trials’) disp(sprintf(’Exact value = %7.5f’,pi^2/2))

1b

Istedenfor å uttrykke polynominterpolanten ved hjelp av basisfunksjonene

1 , x, . . . , x n kan vi bruke den alternative representasjonen p n

1

( x ) = k =1 a k x

− u v k

1

.

Her er u og v skalarer som translaterer og skalerer x -området. Generaliser

InterpV (se vedlegg) slik at den kan kalles med enten to, tre eller fire argumenter. I et kall på formen a=InterpV(x,y) antar vi at u = 0 og v = 1 .

I et kall på formen a=InterpV(x,y,u) antar vi at v = 1 og at u inneholder translasjonsfaktoren. I et kall på formen a=InterpV(x,y,u,v) antar vi at u og v inneholder henholdsvis translasjons- og skalerings faktoren.

Løsning

: function a = InterpV(x,y,u,v)

% a = InverpV(x,y,u,v)

% This computes the Vandermonde polynomial interpolant where

% x is a column n-vector with distinct components and y is a

% column n-vector.

%

% a is a column n-vector with the property that if

%

% p(x) = a(1) + a(2)(x-u)/v + ... a(n)((x-u)/v)^(n-1)

% then

% p(x(i)) = y(i), i=1:n

%

% InterpV can be called with two, three or four arguments.

% With three arguments it is assumed that v=1,

% while in addition u=0 if only two arguments are used.

% n = length(x);

V = ones(n,n); if nargin==2 z=x; elseif nargin==3 else z=x-u; z=(x-u)/v;

(Fortsettes på side 3.)

Eksamen i MoD 190 Prøveeksamen, Mai 2002 Side 3 end for j=2:n

% Set up column j.

V(:,j) = z.*V(:,j-1); end a = V\y;

1c

Anta at funksjonen f er tilgjengelig via en M-fil og definer

Z z

φ ( z ) =

− z f ( x ) dx.

Bruk Matlabfunksjonen quad(fname,A,B) (se vedlegg) til å generere en array phiVals(i) som inneholder φ ( t i

, t ) = linspace(0,1,100) .

Løsning

:

Vi sparer en del beregninger ved å akkumulere integralene.

% Script file phiVal

% Generates an array of integrals of the form \int_{-t(i)}^{t(i)} f(x)dx

% where t=linspace(0,1,100);

% t=linspace(0,1,100); phiVals=zeros(1,100); phiVals(2)=quad(’f’,-t(2),t(2)); for i=3:100 end; phiVals(i)=phiVals(i-1)+quad(’f’,-t(i),-t(i-1))+quad(’f’,t(i-1),t(i));

1d

La f = f ( x, y ) være en kontinuerlig funksjon av to variable. La L være linjesegmentet som forbinder de gitte punktene ( a, b ) og ( c, d ) . Lag en M-fil som bruker fzero (se vedlegg) til å beregne et punkt ( x

, y

) på L slik at f ( x

, y

) = ( f ( a, b ) + f ( c, d )) / 2 .

Løsning

: g ( x

Langs

) = f (

L x, b har vi

+ d

− b c

− a y = b + d

− b c

− a

( x

− a ) . Vi må løse ligningen

( x

− a ))

( f ( a, b ) + f ( c, d )) / 2 . Siden g ( x ) = 0 hvor g ( a ) = f ( a, b )

( f ( a, b )+ f ( c, d )) / 2 =

( f ( c, d )

( f ( a, b )+ f ( c, d )) / 2) =

− g ( c ) har ligningen g ( x ) = 0 en løsning x

∗ ∈

[ a, c ] .

(Fortsettes på side 4.)

Eksamen i MoD 190 Prøveeksamen, Mai 2002 Side 4 function [x,y]=Lzero(a,b,c,d)

%Gitt en funksjon $f=f(x,y)$. Programmet beregner

%et punkt (x,y) p\aa\ en linje L gjennom (a,b) (c,d) slik at

%f(x,y)=(f(a,b)+f(c,d))/2. Programmet bruker Matlabrutinen fzero.

% x=fzero(’g’,[a c],[],a,b,c,d); y=b+(d-b)*(x-a)/(c-a); function f2=f(x,y)

% f2=x.^2+y.^3; function gx=g(x,a,b,c,d) gx=f(x,b+(d-b)*(x-a)/(c-a))-(f(a,b)+f(c,d))/2;

Oppgave 2 En kvadratisk minimeringsmetode

Gitt en kontinuerlig og unimodal funksjon f : IR

IR . Vi skal i denne oppgaven utlede en algoritme for å finne minimumspunktet z slik at f ( z )

≤ f ( x ) for alle x . La p

2 være polynomet av grad

2 slik at p

2

( x k

) = f ( x k

) for k = 0 , 1 , 2 . Newtonformen til p

2 med interpolasjonspunktene i rekkefølge x

2

, x

1

, x

0 er gitt ved p

2

( x ) = f [ x

2

] + f [ x

1

, x

2

]( x

− x

2

) + f [ x

0

, x

1

, x

2

]( x

− x

2

)( x

− x

1

) , hvor f [ ] betegner dividerte differenser, f.eks

f [ x

0

, x

1

, x

2

] = f ( x

2 x

)

− f ( x

2

− x

1

1

) x

2

− f ( x

1 x

)

− f ( x

1

− x

0

− x

0

0

)

.

2a

La x

3

=

1

2

( x

1

+ x

2

)

1

2 f [ x

1

, x

2

] f [ x

0

, x

1

, x

2

]

.

Vis under en passelig betingelse at x

3 er et minimumspunkt for p

2

.

Løsning

:

Vi finner

(1) p

0

2

( x ) = f [ x

1

, x

2

] + f [ x

0

, x

1

, x

2

](2 x

− x

1

− x

2

) og vi ser at p

2

( x

3

) = 0 .

x

3 er et minimumspunkt dersom p

00

( x

3

) > 0 . Vi har p

00

2

( x

3

) = 2 f [ x

0

, x

1

, x

2

] = f ( x

2 x

)

− f ( x

1

2

− x

1

) − f ( x

1 x

)

− f ( x

1

− x

0 x

2

− x

0

0

)

(Fortsettes på side 5.)

Eksamen i MoD 190 Prøveeksamen, Mai 2002 Side 5 og ved middelverdisetningen er p

00

2

( x

3

) = f

0

( ξ

1

)

− f

0

( ξ

0

) x

2

− x

0

.

Dersom x

0

< x

1

< x

2 er ξ

1

> ξ

0 voksende, som er oppfylt når f og vi ser at p

00

2

( x

3

00

( x

3

) > 0

) >

. Mao, hvis

0 f dersom f

0 er strengt er konveks er x

3 et minimumspunkt.

2b

Ut fra (1) kan vi definere følgende iterasjonsprosess for å finne z : for k = 2 : n

1 x k +1

= 1

2

( x k

1

+ x k

)

− 1

2 f [ x k − 1

,x k

] f [ x k − 2

,x k − 1

,x k

]

Anta at funksjonen f er tilgjengelig via en M-fil. Lag en Mfil zt=minmin(fname,x0,x1,x2,n) som til gitte x

0

, x

1

, x

2 genererer x

3

, x

4

, . . . , x n og returnerer zt = x n

. Programmet skal kun kalle f en gang for hver k . Du kan anta at

0 for alle k .

x

0

, x

1

, . . . , x n alle er distinkte og at f [ x k

2

, x k

1

, x k

] =

Løsning

: function zt=minmin(fname,x0,x1,x2,n)

% f1=feval(fname,x1) f01=(f1-feval(fname,x0))/(x1-x0) for k=2:n-1 f2=feval(fname,x2); f12=(f2-f1)/(x2-x1); f012=(f12-f01)/(x2-x0); x3=(x1+x2)/2-f12/(2*f012); x0=x1; x1=x2; x2=x3; f1=f2; f01=f12; end zt=x2;

2c

Algoritmen bryter sammen dersom f [ x k

2 geometrisk tolkning av dette.

, x k

1

, x k

] = 0 for en k . Gi en

Løsning

:

Vi har f [ x

0

, x

1

, x

2

] = 0 hvis og bare hvis f ( x

2

)

− f ( x

1

) x

2

− x

1

= f ( x

1

)

− f ( x

0

) x

1

− x

0 som er ekvivalent med at de tre punktene ( x

0

, f ( x

0

)) , ( x

1

, f ( x

1

)) og

( x

2

, f ( x

2

)) ligger på en rett linje.

(Fortsettes på side 6.)

Eksamen i MoD 190 Prøveeksamen, Mai 2002 Side 6

2d

Forklar hvorfor vi ikke kan ha f [ x k

2 kontinuerlig 2. derivert og f

, x k

1

, x k

00

( x ) > 0 for alle x .

] = 0 for en k dersom f har

Løsning

:

Fra 2c har vi at f [ x k

2

, x k

1

, x k

] = 0 hvis og bare hvis de tre punktene ( x

0

, f ( x

0

)) , ( x

1

, f ( x

1

)) og ( x

2 følge middelverdisetningen er da f middelverdisetningen på f

0 er da f

0

( ξ

0

, f ( x

) = f

0

2

))

( ξ

1 ligger på en rett linje. I

) for ξ

0

= ξ

1

. Men utifra

00

( ξ ) = 0 for en ξ , en motsigelse.

(Fortsettes på side 7.)

Eksamen i MoD 190 Prøveeksamen, Mai 2002 Side 7

Matlab-vedlegg

RAND Uniformly distributed random numbers.

RAND(N) is an N-by-N matrix with random entries, chosen from a uniform distribution on the interval (0.0,1.0).

RAND(M,N) and RAND([M,N]) are M-by-N matrices with random entries.

RAND(M,N,P,...) or RAND([M,N,P,...]) generate random arrays.

RAND with no arguments is a scalar whose value changes each time it is referenced.

function a = InterpV(x,y)

% a = InverpV(x,y)

% This computes the Vandermonde polynomial interpolant where

% x is a column n-vector with distinct components and y is a

% column n-vector.

%

% a is a column n-vector with the property that if

%

% p(x) = a(1) + a(2)x + ... a(n)x^(n-1)

% then

% p(x(i)) = y(i), i=1:n n = length(x);

V = ones(n,n); for j=2:n

% Set up column j.

V(:,j) = x.*V(:,j-1); end a = V\y;

QUAD Numerically evaluate integral, adaptive Simpson quadrature.

Q = QUAD(FUN,A,B) tries to approximate the integral of function

FUN from A to B to within an error of 1.e-6 using recursive adaptive Simpson quadrature.

The function Y = FUN(X) should accept a vector argument X and return a vector result Y, the integrand evaluated at each element of X.

FZERO Scalar nonlinear zero finding.

X = FZERO(FUN,X0) tries to find a zero of the function FUN near X0.

FUN accepts real scalar input X and returns a real scalar function value F evaluated at X.

The value X returned by FZERO is near a point where FUN changes sign (if FUN is continuous), or NaN if the search fails.

X = FZERO(FUN,X0), where X is a vector of length 2, assumes X0 is an interval where the sign of FUN(X0(1)) differs from the sign of FUN(X0(2)).

An error occurs if this is not true.

Calling FZERO with an interval guarantees FZERO will return a value near a point where FUN changes sign.

Download