Informatyka - Podstawy Programowania w Języku C++

prow. Sławomir Czarnecki

Zadania na laboratorium nr. 5

1. Zdefiniuj następującą funkcję f

sin ( 2

x ) 3 cos( x)

f ( x) =

,

10 x

3

e

którą wywołaj następnie dla pewnego x ∈ ℝ wyświetlając wynik na ekranie.

2. Zdefiniuj dwie funkcje (ich deklaracje są podane poniŜej): void XY (double x,double y); (zmienne x i y przekazywane przez wartość) void xy (double& x,double& y); (zmienne x i y przekazywane przez referencję) których celem powinna być zamiana wartości dwóch zmiennych: x i y.

Przeprowadź test polegający na wyświetleniu na ekranie wartości przekazywanych do tych funkcji zmiennych przed i po ich wywołaniu.

3. Zdefiniuj własną wersję double SIN (double x, double ε) funkcji sinus (zwracającą poprawne pod względem numerycznym wyniki dla „małych” x ) w oparciu o przybliŜoną wartość nieskończonej sumy następującego szeregu funkcyjnego: 3

5

7

x

x

x

(− ) i 2 i 1

1 x +

∞

a x = x −

+

−

+

=

x

a =

i =

∑

.

i (

)

...

sin ( ),

i

(

0,1,...)

+

=

i

i

3!

5!

7!

2

1 !

0

(

)

n

Dla ustalonej, małej liczby rzeczywistej ε > 0 obliczaj sumy cząstkowe s =

a

∑

n

i

i=0

∞

( n = 0,1,2,...) szeregu nieskończonego a = a + a + a + ...

∑

dopóty dopóki a > ε ,

i

0

1

2

i

i=0

i=0,1,2,... .Ostatnią obliczoną sumę cząstkową traktujemy jako przybliŜoną wartość sumy szeregu. Zdefiniowany powyŜej, najprostszy warunek przerwania obliczeń sformułowany został w oparciu o (nie najlepszy pod względem numerycznym) warunek konieczny lim a = 0 zbieŜności szeregów. Skonfrontuj otrzymany wynik z wartością zwracaną przez i

i→∞

funkcję biblioteczną sin(...).

Wskazówka. Mamy następują (łatwą do udowodnienia indukcyjnie) zaleŜność rekurencyjną na kolejne wyrazy szeregu funkcyjnego:

a

a

i 1

−

2

a = x , a = −

x

i ≥ 1 , k = 2, 4, 6,... lub

i 1

−

2

a = −

x

i ≥

i

(

)

1

0

i

(

)

k ( k + )

1

2 i (2 i + )

1

4. Zdefiniuj dwie funkcje

double W1 (double* a, int n, double x); double W2 (double* a, int n, double x); które dla ustalonej liczby naturalnej n i ustalonej liczby rzeczywistej x, obliczają wartość wielomianu stopnia n:

n

W ( x)

2

= a + a x + a x + ...

n

+ a x ,

0

1

2

n

gdzie a ( i = 0,1,..., n są składowymi wektora a definiującymi współczynniki tego

i

)

n 1

+

wielomianu. Wartość

n

W ( x) oblicz na dwa sposoby:

4a) bezpośrednio, na podstawie podanego wyŜej wzoru, 4b) korzystając ze schematu Hornera (opartym o rozkład wielomianu na czynniki): n

W ( x) = ((( a x + a

x + a

x + ... + a x + a

n

n 1

− )

n−2 )

1 )

0

5. Zdefiniuj funkcję

void matrix (double** A, double** B, double** C, int m, int k, int n); która oblicza iloczyn C

= A

B

∈ M

macierzy A

∈ M

i B

∈ M

.

m × n

m × k

k × n

m × n

m × k

m × k

k × n

k × n

Przetestuj funkcję wywołując ją dla losowo wygenerowanych macierzy A i B

.

m × k

k × n

Wyświetl na ekranie składowe wszystkich trzech macierzy.