MN01LAB: Różnice pomiędzy wersjami
mNie podano opisu zmian |
mNie podano opisu zmian |
||
Linia 42: | Linia 42: | ||
Sprawdź, czy z wyłączoną optymalizacją ten kod okaże się najwolniejszy | Sprawdź, czy z wyłączoną optymalizacją ten kod okaże się najwolniejszy | ||
ze wszystkich... | ze wszystkich... | ||
(okazuje się, że nie!) | |||
</div></div></div> | </div></div></div> | ||
Linia 64: | Linia 61: | ||
Powtórz to samo w Octave. | Powtórz to samo w Octave. | ||
</div></div> | </div></div> | ||
</div></div> | <div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none"><div style="margin-left:1em"> | ||
Różnice są skutkiem konwersji liczb zmiennoprzecinkowych do formatu | |||
dziesiętnego. Oczywiście, zapis w formacie binarnym daje dokładną kopię | |||
zawartości pamięci, więc nie ma żadnych strat. | |||
</div></div></div> | |||
<div style="margin-top:1em; padding-top,padding-bottom:1em;"> | <div style="margin-top:1em; padding-top,padding-bottom:1em;"> |
Wersja z 13:48, 29 sie 2006
Ćwiczenia. Eksperymenty ze środowiskiem obliczeń numerycznych
W Linuxie, czas działania programu można zbadać poleceniem \lstux!time!.
Ćwiczenie
Który program wykona się szybciej:
x = 1.0; for( i = 0; i < N; i++) x = x/3.0;
czy
x = 1.0; f = 1.0/3.0; for( i = 0; i < N; i++) x = x*f;
Ćwiczenie
Napisz program w C, który zapisuje do pliku
- tekstowego
- binarnego
kolejne wartości , gdzie . Następnie porównaj rozmiary plików i możliwości ich odczytania zewnętrznymi narzędziami. Wreszcie, wczytaj liczby z pliku i porównaj je z oryginalnymi wartościami sinusa. Czy możesz wyjaśnić przyczyny różnic?
Powtórz to samo w Octave.
Ćwiczenie: Implementacja funkcji matematycznych
Pomyśl, jak obliczać, korzystając jedynie z czterech działań podstawowych: , wartość funkcji exp(
)
= dla
dowolnych rzeczywistych. Naszym kryterium jest, by , czyli by błąd bezwzględny aproksymacji nie przekroczył zadanego
.
Wykonaj eksperymenty w C lub w Octave, pokazujące koszt metody w zależności od
oraz w zależności od . Przeprowadź też sekwencję testów
potwierdzających Twoje rachunki co do oczekiwanej dokładności (porównując się z
funkcją biblioteczną). W C możesz korzystać ze stałej M_E
, zdefiniowanej w pliku nagłówkowym \lstux!math.h!.
Ćwiczenie: Ciag dalszy
Spróbuj obniżyć koszt wyznaczania dla dużych !