M E T O D Y N U M E R Y C Z N E

WYDZIAŁ ELEKTRYCZNY W-5

ĆWICZENIA LABORATORYJNE

II ROK

Zad. 4 Zadanie naleŜ y wykonać w jednym z Borland Pascal, Turbo C, Javascript

wymienionych ję zyków programowania :

Opracować funkcję umoŜliwiającą zerowanie cyfr poprawnych liczby zmienno-pozycyjnej od podanej w wywołaniu pozycji.

Dodatkowo z funkcji naleŜy wyprowadzić wartość epsilona maszynowego oraz liczbę poprawnych cyfr ułamkowych dig. JeŜeli mantysa epsilona jest mniejsza od 4.5 to liczba dig powinna być pomniejszona o jeden od modułu jego cechy (wykładnika), w przeciwnym przypadku naleŜy dig zmniejszyć o dwa.

(JeŜeli { eps = ±m10c } to { JeŜeli (m < 4.5) wtedy dig := | c | - 1 w przeciwnym przypadku dig := | c | - 2 } )

Przykład nagłówka definicji funkcji w wersji Borland Pascal: type

float = single;

var

y : float;

t : byte;

{...}

function

ps(x: float; t:byte; var eps:float; var dig: byte): float;

{WE:

x

- Zmienna dla liczby przeznaczonej do konwersji }

{WE:

t

- Zerowanie cyfr ulamkowych od pozycji t+1 }

{WY: eps - Wyprowadzenie epsilona maszynowego dla x }

{WY: dig - Wyprowadzenie liczby poprawnych cyfr ulamkowych}

{WY: ps

- Wyprowadzenie liczby x po konwersji }

Przykład wywołania w wersji Borland Pascal dla liczby PI: begin

{...}

y:=PI; t:=2; {Zerowanie cyfr ułamkowych od pozycji np: 3 (T+1) }

writeln('Konwersja liczby z zerowaniem od : ',t+1,' pozycji dla cyfr ułamkowych'); writeln('Liczba przeznaczona do konwersji : ',y);

writeln('Wyświetlane są wszystkie cyfry : ', ps( y, t, eps, dig) ); writeln('Liczba TYLKO z cyframi poprawnymi: ', ps(y, t, eps, dig):dig+9 ,

' (POPRAWNYCH : ', dig , ')' );

writeln('Epsilon maszynowy dla liczby y : ',eps);

{...}

readln; { zakoń czenie programu dopiero po naciś nię ciu klawisza Enter}

end.

____________

*) {...} - w tych miejscach moŜna/naleŜy odpowiednio program uzupełnić ...

Przykład wykonania:

Konwersja liczby z zerowaniem od :

3 pozycji dla poprawnych cyfr ułamkowych

Liczba przeznaczona do konwersji :

3.14159274101257E+0000

Wyświetlane są wszystkie cyfry

:

3. 14000010490417E+0000

Liczba TYLKO z cyframi poprawnymi: 3.140000E+0000 (POPRAWNYCH : 6) Epsilon maszynowy dla liczby y

: 9.36267596785001E-0008

Kierownik kursu:

Zespół dydaktyczny:

doc. dr inŜ. Jarosław Szymańda

dr inŜ. Lesław Ładniak, dr inŜ. Jerzy Piotrowicz, dr inŜ. Leszek Woźny