4.7 -- Wprowadzenie do notacji naukowej

Zanim porozmawiamy o naszym następnym temacie, przejdziemy do tematu notacji naukowej.

Naukowe notacja to przydatny skrót do zapisywania długich liczb w zwięzły sposób. I choć notacja naukowa może początkowo wydawać się obca, zrozumienie notacji naukowej pomoże Ci zrozumieć, jak działają liczby zmiennoprzecinkowe, a co ważniejsze, jakie są ich ograniczenia.

Liczby w notacji naukowej przyjmują następującą postać: znaczna x 10wykładnik. Na przykład w notacji naukowej 1.2 x 10⁴, 1.2 jest znaczeniem, a 4 jest wykładnikiem. Ponieważ 10⁴ daje 10 000, 1,2 x 10⁴ daje 12 000.

Zgodnie z konwencją liczby w notacji naukowej zapisuje się jedną cyfrą przed przecinkiem, a resztę cyfr po przecinku.

Rozważ masę Ziemi. W zapisie dziesiętnym zapisalibyśmy to jako 5972200000000000000000000 kg. To naprawdę duża liczba (zbyt duża, aby zmieścić się nawet w 8-bajtowej liczbie całkowitej). Trudno też odczytać (czy to 19 czy 20 zer?). Nawet po zastosowaniu separatorów (5 972 200 000 000 000 000 000 000) liczba jest nadal trudna do odczytania.

W notacji naukowej można by to zapisać jako 5.9722 x 10²⁴ kg, co jest znacznie łatwiejsze do odczytania. Notacja naukowa ma tę dodatkową zaletę, że ułatwia porównanie wielkości dwóch bardzo dużych lub małych liczb po prostu przez porównanie wykładnika.

Ponieważ wpisywanie lub wyświetlanie wykładników w C++ może być trudne, używamy litery „e” (lub czasami „E”) do przedstawienia części równania „razy 10 do potęgi”. Na przykład 1.2 x 10⁴ byłaby zapisana jako 1.2e4, I 5.9722 x 10²⁴ byłaby zapisana jako 5.9722e24.

Dla liczb mniejszych niż 1 wykładnik może być ujemny. Liczba 5e-2 jest odpowiednikiem 5 * 10⁻², czyli 5 / 10² lub 0.05. Masa elektronu wynosi 9.1093837e-31 kg.

Dla użytkowników Linuksa

Jeśli używasz Arch Linux i w indeksie górnym 5 * 10⁻² brakuje znaku ujemnego, może być konieczne zainstalowanie czcionki, która wyświetli te znaki. Zobacz ten wątek na Reddicie, aby uzyskać więcej informacji.

Cyfry znaczące

Powiedzmy, że musisz znać wartość stałej matematycznej pi dla jakiegoś równania, ale zapomniałeś. Pytasz dwie osoby. Jeden mówi, że wartość pi wynosi 3.14. Drugi mówi, że wartość pi wynosi 3.14159. Obie te wartości są „poprawne”, ale ta druga jest znacznie bardziej precyzyjna.

Oto najważniejsza rzecz, którą należy zrozumieć na temat notacji naukowej: Cyfry mantysy (część przed „e”) nazywane są cyframi znaczącymi (lub cyframi znaczącymi). Im więcej cyfr znaczących, tym dokładniejsza jest liczba.

Kluczowa informacja

Im więcej cyfr w mantysie, tym bardziej precyzyjna jest liczba.

W notacji naukowej zapisalibyśmy 3.14 jak 3.14e0. Ponieważ w mantynie znajdują się 3 liczby, liczba ta ma 3 cyfry znaczące.

3.14159 byłaby zapisana jako 3.14159e0. Ponieważ mantys zawiera 6 liczb, liczba ta ma 6 cyfr znaczących.

Jak zamienić liczby dziesiętne na notację naukową

Skorzystaj z poniższej procedury:

  • Twój wykładnik zaczyna się od zera.
  • Jeśli liczba nie ma wyraźnego przecinka dziesiętnego (np. 123), domyślnie znajduje się na prawym końcu (np. 123.)
  • Przesuń przecinek w lewo lub w prawo, tak aby po lewej stronie przecinka pozostała tylko jedna cyfra różna od zera.
    • Każde miejsce, w którym przesuniesz przecinek w lewo, zwiększa wykładnik o 1.
    • Każde miejsce, w którym przesuniesz przecinek w prawo, zmniejsza wykładnik o 1.
  • Przytnij dowolne zera wiodące (na lewym końcu mantysty)
  • Utnij końcowe zera (na prawym końcu znacznika) tylko wtedy, gdy pierwotna liczba nie miała przecinka dziesiętnego. Zakładamy, że nie są one znaczące. Jeśli masz dodatkowe informacje sugerujące, że są one istotne, możesz je zachować.

Oto kilka przykładów:

Start with: 600.410
Slide decimal point left 2 spaces: 6.00410e2
No leading zeros to trim: 6.00410e2
Don't trim trailing zeros: 6.00410e2 (6 significant digits)
Start with: 0.0078900
Slide decimal point right 3 spaces: 0007.8900e-3
Trim leading zeros: 7.8900e-3
Don't trim trailing zeros: 7.8900e-3 (5 significant digits)
Start with: 42030 (no information to suggest the trailing zero is significant)
Slide decimal point left 4 spaces: 4.2030e4
No leading zeros to trim: 4.2030e4
Trim trailing zeros: 4.203e4 (4 significant digits)
Start with: 42030 (assuming the trailing zero is significant)
Slide decimal point left 4 spaces: 4.2030e4
No leading zeros to trim: 4.2030e4
Keep trailing zeros: 4.2030e4 (5 significant digits)

Obsługa zer końcowych

Rozważmy przypadek, w którym prosimy dwóch asystentów laboratoryjnych o zważenie tego samego jabłka. Jeden wraca i mówi, że jabłko waży 87,0 gramów. Drugi wraca i mówi, że jabłko waży 87 000 gramów. Załóżmy, że ważenie jest prawidłowe. W pierwszym przypadku rzeczywista waga jabłka może wynosić od 86,950 do 87,049 gramów. Może skala była dokładna tylko z dokładnością do dziesiątych części grama. A może nasz asystent trochę się zaokrąglił. W tym drugim przypadku mamy znacznie większą pewność co do rzeczywistej wagi jabłka (w rzeczywistości waży ono od 86,99950 do 87,00049 gramów, co charakteryzuje się znacznie mniejszą zmiennością).

Przy konwersji do notacji naukowej, końcowe zera po przecinku są uważane za znaczące, więc je zachowujemy:

  • 87,0g = 8.70e1
  • 87.000g = 8.7000e1

W przypadku liczb bez przecinka dziesiętnego zera końcowe są domyślnie uznawane za nieistotne. Biorąc pod uwagę liczbę 2100 (bez dodatkowych informacji), zakładamy, że końcowe zera nie są znaczące, więc je pomijamy:

  • 2100 = 2,1e3 (zakładamy, że zera końcowe są nieistotne)

Gdybyśmy jednak wiedzieli, że liczba ta została dokładnie zmierzona (lub że rzeczywista liczba mieściła się gdzieś pomiędzy 2099,5 a 2100,5), to zamiast tego powinniśmy traktować te zera jako znaczące:

  • 2100 = 2,100e3 (znane, że znaczące są zera końcowe)

Wskazówka

Czasami możesz zobaczyć liczbę zapisaną z wyraźnym końcowym przecinkiem dziesiętnym. Oznacza to, że poprzedzające zera są znaczące.

  • 2100. = 2,100e3 (znane, że znaczące są zera końcowe)

Jedną z fajnych rzeczy w notacji naukowej jest to, że zawsze wyjaśnia, ile cyfr jest znaczących.

Z technicznego punktu widzenia liczby 87,0 i 87,000 mają tę samą wartość (i tego samego typu). Kiedy C++ przechowuje w pamięci którąkolwiek z tych liczb, przechowuje tylko wartość 87. Po zapisaniu nie ma możliwości ustalenia na podstawie zapisanej wartości, która z dwóch liczb została pierwotnie wprowadzona.

Teraz, gdy omówiliśmy notację naukową, możemy zająć się liczbami zmiennoprzecinkowymi.

Czas quizu

Pytanie nr 1

Przekształć następujące liczby na notację naukową (używając e do przedstawienia wykładnika) i określ, ile cyfr znaczących każda z nich ma.

Pamiętaj, zachowaj zera na końcu po przecinku, usuń zera na końcu, jeśli nie ma przecinka.

a) 34,50

Pokaż rozwiązanie

b) 0,004000

Pokaż rozwiązanie

c) 123,005

Pokaż rozwiązanie

d) 146000

Pokaż rozwiązanie

e) 146000.001

Pokaż rozwiązanie

f) 0.0000000008

Pokaż rozwiązanie

g) 34500.0

Pokaż rozwiązanie

h) 146000 (zakładając, że wiesz, że zera to znaczące)

Pokaż rozwiązanie

guest
Twój adres e-mail nie zostanie wyświetlony
Znalazłeś błąd? Zostaw komentarz powyżej!
Komentarze związane z poprawkami zostaną usunięte po przetworzeniu, aby pomóc zmniejszyć bałagan. Dziękujemy za pomoc w ulepszaniu witryny dla wszystkich!
Awatary z https://gravatar.com/ są połączone z podanym adresem e-mail.
Powiadamiaj mnie o odpowiedziach:  
159 Komentarze
Najnowsze
Najstarsze Najczęściej głosowane
Wbudowane opinie
Wyświetl wszystkie komentarze