MN01LAB: Różnice pomiędzy wersjami
m Zastępowanie tekstu – „\displaystyle ” na „” |
m Zastępowanie tekstu – „,↵</math>” na „</math>,” |
||
(Nie pokazano 1 pośredniej wersji utworzonej przez tego samego użytkownika) | |||
Linia 103: | Linia 103: | ||
<center><math> | <center><math> | ||
e^x = \lim_{n\rightarrow \infty} \left( 1 + \frac{x}{n}\right)^{\frac{n}{x}} | e^x = \lim_{n\rightarrow \infty} \left( 1 + \frac{x}{n}\right)^{\frac{n}{x}}</math></center> | ||
</math></center> | |||
Drugi pomysł okazuje się niewypałem między innymi dlatego, że musi korzystać z operacji | Drugi pomysł okazuje się niewypałem między innymi dlatego, że musi korzystać z operacji | ||
Linia 113: | Linia 112: | ||
<center><math> | <center><math> | ||
e^x \approx \sum_{n=0}^N \frac{x^n}{n!} | e^x \approx \sum_{n=0}^N \frac{x^n}{n!}</math>,</center> | ||
</math></center> | |||
a dokładniej, ze wzoru na resztę w postaci Lagrange'a, | a dokładniej, ze wzoru na resztę w postaci Lagrange'a, | ||
<center><math> | <center><math> | ||
|e^x - \sum_{n=0}^N \frac{x^n}{n!} | \leq \frac{|\xi|^{N+1}}{(N+1)!} | |e^x - \sum_{n=0}^N \frac{x^n}{n!} | \leq \frac{|\xi|^{N+1}}{(N+1)!}</math></center> | ||
</math></center> | |||
Stąd dostajemy oszacowanie, oznaczając wartość szeregu obciętego na <math>N</math>-tym | Stąd dostajemy oszacowanie, oznaczając wartość szeregu obciętego na <math>N</math>-tym | ||
wyrazie, | wyrazie, | ||
<center><math> | <center><math> | ||
\exp(x,N) = \sum_{n=0}^N \frac{x^n}{n!} | \exp(x,N) = \sum_{n=0}^N \frac{x^n}{n!}</math>,</center> | ||
</math></center> | |||
<center><math> | <center><math> | ||
Linia 210: | Linia 206: | ||
Jeśli <math>x = k + t</math>, gdzie <math>t \in [0,1)</math>, a <math>k</math> jest całkowite, to oczywiście | Jeśli <math>x = k + t</math>, gdzie <math>t \in [0,1)</math>, a <math>k</math> jest całkowite, to oczywiście | ||
<center><math> | <center><math> | ||
e^x = e^{k+t} = e^k e^t = e^k \exp(t) | e^x = e^{k+t} = e^k e^t = e^k \exp(t)</math></center> | ||
</math></center> | |||
Tak więc zadanie redukuje się do wyznaczenia <math>\exp(t)</math> dla <strong>małego</strong> <math>t</math> oraz | Tak więc zadanie redukuje się do wyznaczenia <math>\exp(t)</math> dla <strong>małego</strong> <math>t</math> oraz |
Aktualna wersja na dzień 21:51, 11 wrz 2023
Eksperymenty ze środowiskiem obliczeń numerycznych
<<< Powrót do strony głównej przedmiotu Metody numeryczne
Oglądaj wskazówki i rozwiązania __SHOWALL__
Ukryj wskazówki i rozwiązania __HIDEALL__
W Linuxie czas działania programu można zbadać poleceniem time
.
Ćwiczenie
Który z poniższych programów 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 math.h
.
Ćwiczenie: Ciag dalszy
Spróbuj obniżyć koszt wyznaczania dla dużych .