Download as pdf or txt
Download as pdf or txt
You are on page 1of 41

Janusz Kacerka

Podstawy Informatyki
————————————————————————————————————————
Semestr 1 AiR
Dane i działania
Spis treści
DANE I DZIAŁANIA......................................................................................................................................................................................................................3
1.1 REPREZENTACJA DANYCH................................................................................................................................................................................................................3
1.2 RODZAJE DZIAŁAŃ.........................................................................................................................................................................................................................7
1.3 NATURALNY KOD BINARNY.............................................................................................................................................................................................................8
1.4 KOD UZUPEŁNIEŃ DO DWÓCH........................................................................................................................................................................................................12
1.5 KOD UZUPEŁNIEŃ DO 1................................................................................................................................................................................................................19
1.6 KOD ZNAK – MODUŁ...................................................................................................................................................................................................................22
1.6 ZADANIA...................................................................................................................................................................................................................................23
1.7 PRZESUNIĘCIE BITOWE..................................................................................................................................................................................................................25
1.8 LICZBY ZMIENNOPRZECINKOWE (ZMIENNOPOZYCYJNE).......................................................................................................................................................................27
1.9 RACHUNEK ZMIENNOPOZYCYJNY....................................................................................................................................................................................................33
1.10 STANDARD IEEE LICZB ZMIENNOPRZECINKOWYCH.........................................................................................................................................................................35
LITERATURA................................................................................................................................................................................................................................41

2
Podstawy Informatyki
Dane i działania

Dane i działania

1.1 Reprezentacja danych

Wszystkie dane przetwarzane przez komputer (informacje kodowane w postaci


wektorów bitowych) można zaklasyfikować do jednej z trzech grup [3]:

- kody rozkazów,

- dane systemowe,

- dane użytkowe.

Kody rozkazów zawierają informację określającą rodzaj operacji i identyfikatory


argumentów tych operacji.

Dane systemowe – dane umożliwiające zapewnienie spójności programu. Są


wytwarzane przez procesor i mają strukturę określoną na poziomie architektury. Np.
3
Podstawy Informatyki
Dane i działania

organizacja kolejki danych.

Dane użytkowe

Podział danych użytkowych:

- skalarne, używane do ilościowego opisu wielkości jednowymiarowych,

- strukturalne, czyli uporządkowane zestawy danych skalarnych,

- wskaźnikowe, używane do adresowania obiektów programowych.

Typy skalarne

a) Jakościowe lub wyliczenia

- logiczne (boolean)

- znakowe (character)
4
Podstawy Informatyki
Dane i działania

- opisowe.

b) Dyskretne o ustalonej dokładności

- porządkowe – naturalne,

- całkowite,

- wymierne stałoprzecinkowe lub ułamkowe,

c) pseudorzeczywiste

- zmiennoprzecinkowe (sEw , 0.4E5),

Typy strukturalne

- zestawy – nieuporządkowane zbiory danych,

- wektory i tablice w tym łańcuchy (uporządkowane ciągi – wektory –znaków) i

5
Podstawy Informatyki
Dane i działania

liczby zespolone (uporządkowane pary liczb),

- rekordy – nieregularne struktury danych dowolnych typów.

Typy wskaźnikowe

Definiują dane lokalizujące obiekt, występujące jako operandy w trybach


adresowania

Dane wszystkich typów zakodowane są w postaci wektorów bitowych.

6
Podstawy Informatyki
Dane i działania

1.2 Rodzaje działań


Działania arytmetyczne
Zakres
Działania logiczne
Argument Wynik
Zmiana kodu
Dekodowanie Kod
Zmiana formatu
Rozpakowanie Upakowanie
Kopiowanie danych

Pobranie danych Prezechowanie

Rys. Wykaz działań na poziomie ISA (instruction set architecture – architektura listy
rozkazów)

7
Podstawy Informatyki
Dane i działania

1.3 Naturalny kod binarny

Liczby binarne

Reprezentacja liczby całkowitej bez znaku jest następująca

2n-1 2n-2 24 23 22 21 20 Wagi


Xn-1 Xn-2 X4 X3 X2 X1 X0 0 lub 1
n-1 n-2 4 3 2 1 0 Pozycja
n bitów
Wartość liczby w kodzie dziesiętnym
n 1
X10  xi 2i
0

Największa liczba zapisana na n bitach

max X = 2n-1
8
Podstawy Informatyki
Dane i działania

Dla skrócenia zapisu informacji kodowanej dwójkowo stosuje się zapis


szesnastkowy (heksadecymalny)

Tabela związku kodu binarnego i szesnastkowego

L10 L16 L2 L10 L16 L2


0 0 0000 8 8 1000
1 1 0001 9 9 1001
2 2 0010 10 A 1010
3 3 0011 11 B 1011
4 4 0100 12 C 1100
5 5 0101 13 D 1101
6 6 0110 14 E 1110
7 7 0111 15 F 1111

9
Podstawy Informatyki
Dane i działania

Przykład schematu przejścia od liczby dziesiętnej do szesnastkowej:

1995:16=124r11=124rB

124:16= 7 r12= 7 rC

7:16= 0 r 7

czyli:

1995(dec) = 7CB(hex)

Przy przejściu bezpośrednim do postaci dwójkowej

1995:2 = 997 r 1

997:2 = 498 r 1

498:2 = 249 r 0

249:2 =124 r 1
10
Podstawy Informatyki
Dane i działania

124:2 = 62 r 0

62:2=31 r 0

31:2 =15 r 1

15:2 = 7 r 1

7:2 = 3 r 1

3: 2 =1 r 1

1:2 = 0 r 1

System hex  bin

=7CB(hex)= 011111001011(bin) = 11111001011(bin) = 1995 (dec)

Przejście od liczby binarnej do szesnastkowej

11
Podstawy Informatyki
Dane i działania

bin  hex

11111001011 = 011111001011 = 7CB

1112 = 01112 = 716

11002 =C16

10112 =B16

1.4 Kod uzupełnień do dwóch


Kod uzupełnień do dwóch (w skrócie U2 lub ZU2) jest obecnie najpopularniejszym
sposobem zapisu liczb całkowitych na bitach. Jego popularność wynika z faktu, że
operacje dodawania i odejmowania są w nim wykonywane tak samo jak dla liczb
binarnych bez znaku. Z tego też powodu oszczędza się na kodach rozkazów procesora.

0000 = 0
12
Podstawy Informatyki
Dane i działania

0001=1

0010=2

0111=7

1000= - 8, ponieważ (-8+0)

1001 = -7, ponieważ (-8+1)

1010 = - 6, ponieważ (-8+2)

1111= - 1, ponieważ (-8+7)

Nazwa kodu wzięła się ze sposobu obliczania liczb przeciwnych. Dla jednobitowej
liczby wartość przeciwną obliczamy odejmując daną liczbę od 2 (uzupełniamy jej
wartość do dwóch).
X X 10
 X X 1

13
Podstawy Informatyki
Dane i działania

Dowód

Przy założeniu, że liczba jest czterobitowa


X 0101 2 X1010 2
X 0101   X 1010   1111 
2 2 2

X X 11111110000

Po odrzuceniu przeniesienia 1 do wyższej pozycji o trzymuje się liczbę 0.

W celu wyznaczenia liczby ujemnej, przeciwnej do danej, dokonuje się negacji


bitowej liczby binarnej i dodaje 1. Można to także ująć inaczej:

Dla liczb n-bitowych wartości przeciwne uzyskuje się odejmując liczbę od


dwukrotnej wagi najstarszego bitu (2·2n–1 = 2n).

Zaletą tego kodu jest również istnienie tylko jednego zera. Przedział kodowanych
liczb nie będzie symetryczny. W U2 na n bitach da się zapisać liczby z zakresu:

14
Podstawy Informatyki
Dane i działania

[ –2n–1, 2n–1-1]

Dla 8 bitów (bajtu) są to liczby

[–128 do 127].

Liczba –2n–1 nie posiada swojego przeciwieństwa w n-bitowej reprezentacji kodu U2.

W dwójkowym systemie liczbowym najstarszy bit liczby n-cyfrowej ma wagę 2n–1.


Jedyną różnicą, jaką wprowadza tu kod U2, jest zmiana wagi tego bitu na przeciwną (–
2n–1). Bit ten jest nazywany bitem znaku, ponieważ świadczy o znaku całej liczby. Jeśli
jest ustawiony (=1) cała liczba jest ujemna, jeśli jest skasowany (=0) – liczba jest
dodatnia lub równa 0.

15
Podstawy Informatyki
Dane i działania

Zwiększając obszar zajmowany przez liczbę w kodzie U2 (np. z jednego bajtu na


dwa), dodawany obszar wypełnia się bitem znaku.

1001 = -7

11111001 = -7 ponieważ –27+26+25+24+23+1 = -128+64+32+16+8+1 = -7

Analogicznie

11111111 111110012 = -710

Przedział liczb od -32768 do 32767

16
Podstawy Informatyki
Dane i działania

System może też być użyty do kodowania liczb rzeczywistych. Wówczas używa się
systemu liczb stałoprzecinkowych, bo wymagana jest wtedy umowa, co do miejsca
położenia przecinka oddzielającego część całkowitą od ułamkowej. Przyjmuje się, że
określona liczba bitów z prawej strony oznacza część ułamkową. Można je traktować
jako liczby całkowite, pamiętając o przesunięciu.

Przykład:
3
6
4
z dokładnością do 3 bitów po przecinku odpowiada liczbie 110,110, bo .
3 27
6  23   23 54 110110
4 4

Zapis dwójkowy liczb zmiennoprzecinkowych na ogół nie używa wcale kodu U2,
bądź używa go tylko do zapisu wykładnika.

Odejmowanie liczb polega na dodaniu liczby ujemnej w kodzie U2.


17
Podstawy Informatyki
Dane i działania

Przykład

0010 (2)  0010

-0011 (3) +1101

=1111 -1

0010 (2)  0010

-1101 (+3) 0011

= 0101  +5

18
Podstawy Informatyki
Dane i działania

Mnożenie liczb w kodzie U2

1 0 0 1 +9 Kod naturalny 1 0 0 1 -7 Kod U2


x 1 1 0 1 +13 1 1 0 1 -3
---------------------- --------------
1001 1111001
0000 0000000
1001 1100100
1001 0111000
1 1 1 0 1 0 1 różne od +117 0 0 0 1 0 1 0 1 +21

Po lewej stronie wynik traktowany jako wynik mnożenia liczb w kodzie U2 jest –11
i jest niepoprawny. Po prawej stronie przy mnożeniu uwzględniono znaki czynników.

1.5 Kod uzupełnień do 1


Kod uzupełnień do jedności to sposób zapisu liczb całkowitych oznaczany jako ZU1
lub U1 [8]. Liczby dodatnie zapisywane są jak w naturalnym kodzie binarnym, przy czym
19
Podstawy Informatyki
Dane i działania

najbardziej znaczący bit – traktowany jako bit znaku – musi mieć wartość 0. Do
reprezentowania liczb ujemnych wykorzystywana jest bitowa negacja danej liczby, co
sprawia, że bit znaku ma wartość 1. Wynika z tego również występowanie dwóch
reprezentacji zera: +0 (00000000U1) i -0 (11111111U1).

Liczby zapisane w ZU1 na n bitach pochodzą z zakresu:

co daje zakres identyczny jak w reprezentacji znak-moduł. Dla 8 bitów są to liczby


od -127 do 127.

Dodawanie liczb w U1 jest podobne do dodawania liczb binarnych z tym, że


powstałe przeniesienie poza najstarszy bit należy dodać do wynikowej sumy. Na
przykład obliczając wartość wyrażenia 7 + (–3) oczekujemy wyniku 4. Dodając binarnie
te liczby zapisane w kodzie U1, dostaniemy liczbę 3 oraz przeniesienie, które dodajemy
20
Podstawy Informatyki
Dane i działania

do otrzymanej liczby aby otrzymać ostateczny wynik 4:

111111 (przeniesienia na poszczególnych bitach)


00000111U1 710
+ 11111100U1 -310
------------------
100000011

00000011U1 310 (wynik obcięty do zakresu liczby)


+ 00000001U1 110 (dodajemy przeniesienie)
---------------------------
00000100U1 410 (ostateczny wynik)
W celu wykonania odejmowania wystarczy odwrócić bity drugiej liczby i tak powstałe
liczby dodać.

21
Podstawy Informatyki
Dane i działania

1.6 Kod znak – moduł


Kod znak – moduł (ZM, SM – signed magnitude) najstarszy bit jest bitem znaku.

Wartość liczby wyznacza się ze wzoru


i n 2
L10   1 x 2
xn 1 i
i
i 0

gdzie xi – cyfra 0 lub 1 na pozycji i = 0,1,2,...

xn-1 = 0 – liczba dodatnia, xn-1 = 1 – liczba ujemna.

Liczby czterobitowe

Liczba Z-M Dziesiętnie Liczba Z-M Dziesiętnie


0000 0 1000 -0
0001 1 1001 -1
0010 2 1010 -2
22
Podstawy Informatyki
Dane i działania

0011 3 1011 -3
0100 4 1100 -4
0101 5 1101 -5
0110 6 1110 -6
0111 7 1111 -7

1.6 Zadania

1. Przedstawić w kodzie znak- moduł (ZM) liczby 4710 i -4710.


Odp.: 00101111 i 10101111

2. Odjąć w kodzie znak moduł od liczby -4710.liczbę –2110.


Wskazówka. Od większego modułu odjąć mniejszy. Znak większego modułu.
Odp.: 10011010
23
Podstawy Informatyki
Dane i działania

3. Przedstawić w kodzie uzupełnień do 1 (U1) liczby 4710 i -4710.


Sprawdzić wynik przedstawiając w kodzie dziesiętnym wynik w kodzie U1.
Wskazówka. Waga najstarszego bitu: -27+1.
Odp.: 00101111 i 11010000

4. Dodać w kodzie U1 liczby -4710 i –2110.


Przeniesienie do pozycji wyższej od 7 dodaje się do wyniku.
Odp.: 10111011

5. Przedstawić w kodzie uzupełnień do 2 (U2) liczby 4710 i -4710.


Sprawdzić wynik przedstawiając w kodzie dziesiętnym wynik w kodzie U2.
Wskazówka. Waga najstarszego bitu: -27.
Odp.: 00101111 i 11010001

6. Dodać w kodzie U2 liczby -4710 i –2110.


24
Podstawy Informatyki
Dane i działania

Przeniesienie do pozycji wyższej od 7 ignoruje się.


Odp.: 10111100

7. Przedstawić liczbę 16.3110 w kodzie U2 z dokładnością do 3 miejsc po przecinku.


Wskazówka. Pomnożyć liczbę dziesiętną przez 23, znaleźć liczbę w kodzie U2 a
następnie ustawić przecinek na pozycji 3 od końca.
Odp. 10000,010

8. Przedstawić liczbę -16.3110 w kodzie U2 z dokładnością do 3 miejsc po przecinku.


Odp. 11101111,110

1.7 Przesunięcie bitowe


Przesunięcie w prawo odpowiada podzieleniu przez 2.

25
Podstawy Informatyki
Dane i działania

0100  0010 (4/2 = 2)

Przesunięcie w lewo odpowiada pomnożeniu przez 2.

0010  0100 (2*2 = 4)

Najstarszy bit może się zmienić lub nie przy przesunięciu w lewo

0010  0100 (2*2 = 4)

1110 1100 (-2*2 =-4)

Tutaj zmienia się

0100  1000 (4*2=-8 ?)

1010  0100 (-6*2= 4 ?)

Wynik interpretuje się tak, że liczba przekroczyła zakres liczb możliwych do


wyrażenia liczb w ograniczonym słowie.
26
Podstawy Informatyki
Dane i działania

Przesuwając liczbę ujemną w prawo, trzeba na najbardziej znaczącym miejscu


dopisać 1:

1010  0101 (= 5 ?)

1010 1101 (-8+5=3)

Przy przesunięciu w prawo może nastąpić utrata dokładności

01110011 (7 3)

1.8 Liczby zmiennoprzecinkowe (zmiennopozycyjne)


Liczby zmiennoprzecinkowe są zapisywane w postaci ograniczonej liczby bitów
najczęściej 32 bitowej i 64 bitowej.

S E E E E E E EE MMMMMMMMMMMMMMMMMMMMMMM
27
Podstawy Informatyki
Dane i działania

Wykładnik n cyfr Mantysa m cyfr


Znak liczby
Rys. Budowa liczby zmiennoprzecinkowej

Wartość liczby zmiennoprzecinkowej jest obliczana wg wzoru:


L S M B E

gdzie:

S (sign) - znak liczby, 1 lub -1

M (mantissa) - znormalizowana mantysa, liczba ułamkowa

B (base) - podstawa systemu liczbowego, w tym przypadku 2

E (exponent) - wykładnik, liczba całkowita.

28
Podstawy Informatyki
Dane i działania

Mantysa jest znormalizowana, tj. należy do przedziału [1,B) (przedział prawostronnie


otwarty) tzn.
2  M 1

Jeżeli M jest stałe, a E zmienia się, wówczas przesunięciu ulega przecinek – stąd
właśnie pochodzi nazwa tej reprezentacji. Przykładowo dla liczb w kodzie dziesiętnym

1,278102 = 12,78  101

Nie otrzymuje się wtedy liczby znormalizowanej.

Zarówno dla mantysy jak i wykładnika ilość cyfr jest z góry ustalona. Zatem dana
liczba jest reprezentowana z pewną skończoną dokładnością i należy do skończonego
zbioru wartości.

S E E E E EE EE M MM M M M M M M M M M M M M M M M M M M MM
n cyfr m cyfr
29
Podstawy Informatyki
Dane i działania

Znak wykładnika
Znak liczby

m - liczba cyfr przeznaczonych mantysy

n - liczba cyfr wykładnika (n-1 cyfr dla wartości i 1 dla znaku wykładnika).

Wartości maksymalne i minimalne dla M i E określone są następująco:

Wykładnik E:

Emin = − Bn-1 + 1

Emax = Bn-1 − 1
Mantysa M:

Mmin = 1
30
Podstawy Informatyki
Dane i działania

Mmax = B − B − (m − 1)

Stąd najmniejsza i największa liczba dodatnia możliwa do zapisania w takiej


reprezentacji to:
Lmin  M min B Emin 1 B E min
 
Lmax  M max B E max  B  B   m  1 B E max

Zakres liczb, które mogą być reprezentowane w danym zapisie wynosi:


 Lmax, Lmin 0 Lmin, Lmax

Zero jest wartością specjalną, która nie może zostać bezpośrednio reprezentowana
w tym formacie.

31
Podstawy Informatyki
Dane i działania

Błąd względny reprezentacji wynosi (inaczej: waga najmniej znaczącej cyfry


mantysy). Błędów bezwzględnych na ogół się nie podaje.
1
 m 1
B

Jeżeli komputer wygeneruje liczbę,


x  BEmin

to traktowana jest jako niedomiar (underflow).

Liczba
x  M max B Emax ,

traktowana jest jako nadmiar wykładniczy (overflow).

Liczby w notacji zmiennoprzecinkowej nie są rozłożone równomiernie na osi


liczbowej. Przykład. Liczby 1,002 i 1,001 różnią się wartością 0,001. Liczby 1,002101 i
32
Podstawy Informatyki
Dane i działania

1,001101 różnią się 0,001101. Liczby 1,002102 i 1,001102 różnią się 0,001102
itd.
Rozkład jest gęsty na początku osi i rzadszy w miarę oddalania się od początku osi.

1.9 Rachunek zmiennopozycyjny


Liczba rzeczywista jest przedstawiana z dokładnością maszynową [10]
ε2 m

Reprezentacja maszynowa liczby dokładnej x


rd  x x1 ε

Ocena błędów podczas różnej kolejności dodawania trzech liczb.

Wynik działania zmiennoprzecinkowego na argumentach x,y równych swoim


reprezentacjom rd(x) i rd(y) oznacza się fl(x,y).

33
Podstawy Informatyki
Dane i działania

fl  a   b  c    a   b  c  1  ε 1   1  ε 2  
⎛
 a  b  c ⎜⎜ 1 
 b  c  ε 1 ⎞⎟ 1  ε   a  b  c  1  δ 
⎝  a  b  c  ⎠
⎟ 2 1

Po zmianie kolejności dodawania


fl   a  b   c    a  b  1  ε 3   c  1  ε 4  
⎛
 a  b  c ⎜⎜ 1 
 a  b  ε 3 ⎞⎟ 1  ε   a  b  c  1  δ 
⎝  a  b  c  ⎠
⎟ 4 2

Błędy w tych przypadkach różnią się od siebie

δ 1 1  ε 2 
 b  c ε1 1  ε 2 
a  b  c

δ 2 1  ε 4 
 a  b ε 3 1  ε 4 
a  b  c

Błędy wyrażone są odmiennymi wzorami. W arytmetyce zmiennoprzecinkowej


fałszywe są prawa łączności i rozdzielności.
34
Podstawy Informatyki
Dane i działania

1.10 Standard IEEE liczb zmiennoprzecinkowych


Standard IEEE 754 liczby 32 bitowej

Bit najmłodszy 0

Bit najstarszy 31

Mantysa w zakresie 0 – 22

Wykładnik w zakresie 23- 30

Znak na pozycji 31.

Ze względu na konieczność unikania kodowania liczb ujemnych wykładnika


zastosowano przesunięcie wykładnika o 127, czyli w celu uzyskania właściwej liczby od
35
Podstawy Informatyki
Dane i działania

wartości dziesiętnej wykładnika odejmuje się 127

Wykładnik przyjmuje wartości od –127, (wszystkie 0)

do wartości 128 (wszystkie 1).

Dla wykładnika postaci


E 2 11111111
E10 28  1255
255 127 128

Mantysa jest zapisywana na 23 bitach. Normalizacja mantysy umożliwia


rozszerzenie ilości miejsc do 24. Jedynka nie jest pamiętana, ponieważ z założenia
liczba ma się mieścić w granicach [1, 2).

Zadania

36
Podstawy Informatyki
Dane i działania

1. Wyznaczyć realizację zmiennoprzecinkową liczby 47.


Liczba 4710 = 101111NKB, ale nie ma tutaj danych dotyczących znormalizowanej mantysy i
postaci wykładnika.
Liczbę 47 trzeba najpierw przedstawić w postaci
L S M 2 E

gdzie
1 M  2

Liczba jest dodatnia a zatem S=1.


47
1 2
2E

Należy wziąć E = 5 skąd


4710  1,01111  2 2 5  1,01111  2 2 132  127  1,01111  2 2  10000100  2  127 Odpowiedź

4710 01000010001111000000 00000000000  IEEE 32

37
Podstawy Informatyki
Dane i działania

#include <iostream>

#include <math.h>

using namespace std;

int main()

char c;

double x,y,INF;

x=0.0;

cout<<"x = "<<x<<"\n";
38
Podstawy Informatyki
Dane i działania

cout<<"1.0/x = "<<1.0/x<<"\n";

cout<<"INF = "<<(INF=1.0/x)<<"\n";

cout<<"1.0/INF = "<<(1.0/INF)<<"\n";

cout<<"sqrt(-1.0) = "<<sqrt(-1.0)<<"\n";

cout<<"y = "<<(y=0.0)<<"\n";

cout<<"x/y ="<<x/y<<"\n";

cout<<"INF+INF ="<<(INF+INF)<<"\n";

cout<<"INF-INF ="<<(INF-INF)<<"\n";

cout<<"INF/INF ="<<(INF/INF)<<"\n";

cout<<"0*INF ="<<(0*INF)<<"\n";

cout<<"\n"<<"Aby zakonczyc wprowadz znak ";


39
Podstawy Informatyki
Dane i działania

cin>>c;

Wyniki

x=0
1.0/x = 1.#INF
INF = 1.#INF
1.0/INF = 0
sqrt(-1.0) = -1.#IND
y=0
x/y =-1.#IND
INF+INF =1.#INF
INF-INF =-1.#IND
INF/INF =-1.#IND
0*INF =-1.#IND

40
Podstawy Informatyki
Literatura

Literatura
[1] Małecki R., Arendt D., Bryszewski A., Krasiukianis R.: Wstęp do Informatyki. Skrypt P.Ł. Łódź, 1997
[2] Kisielewicz A.: Wprowadzenie do informatyki. Helion, Gliwice 2002
[3] Biernat J.: Architektura komputerów. Politechnika Wrocławska, Wrocław 2002
[4] http://pl.wikipedia.org/wiki/Chipset
[5] pl.wikipedia.org/wiki/PCI_Express
[6] pl.wikipedia.org/wiki/Magistrala_komunikacyjna
[7] Misiurewicz P.: Systemy mikrokomputerowe.WsiP, Warszawa 1986
[8] wikipedia.org/wiki/Kod_uzupełnień_do_jedności
[9] pl.wikipedia.org/wiki/Liczba_zmiennoprzecinkowa
[10] Kącki E., Małolepszy A., Romanowicz A.: Metody numeryczne dla inżynierów. WSInf w Łodzi, Łódź
2005

You might also like