• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Octave nie porównuje zmiennych w odpowiedni sposób.

42 Warsaw Coding Academy
0 głosów
288 wizyt
pytanie zadane 30 kwietnia 2022 w Inne języki przez xTMx3 Obywatel (1,560 p.)

Witam,

rozwiązując sobie jedno z zadań na Metody Numeryczne trafiłem na pewien problem, który nie do końca rozumiem z czego wynika. Jeden z ostatnich kroków zadania mówi, abym obliczył błąd rzeczywisty, a następnie sprawdził czy jest on na poziomie epsilonu maszynowego.

Błąd wychodzi mi taki: b_rz = 1.343834447586900e-05

A kiedy sprawdzam wartość eps pojawia się taka liczba: eps = 2.220446049250313e-16

Cały problem pojawia się w momencie kiedy wpisuję następującą linijkę:

b_rz <= eps

Wynikiem tego ciągle jest 0, a wydaje mi się, że powinno być 1.

Czy jest tu może osoba, która byłaby w stanie mi wytłumaczyć czemu tak się dzieje? Czy to błąd Octave, czy ja coś źle robię lub źle rozumiem działanie porównań w tym programie?

 

 

1 odpowiedź

0 głosów
odpowiedź 30 kwietnia 2022 przez Wiciorny Ekspert (280,970 p.)

no dlatego, że EPS nie jest większy ? zauważ że b_rz jest e-05, jest większe niz e-16
to są wartości po przecinku więc potęgi -16 są znacznie mniejszymi liczbami niż potęgi liczb do -5 

0.0001 > niz 0.0000001 np. 
 

x <= y

True if x is less than or equal to y.

Jeśli analizujesz pełne wartości a nie ich odcięcia, to program działa prawidłowo.  

komentarz 30 kwietnia 2022 przez xTMx3 Obywatel (1,560 p.)
Dziękuję za odpowiedź, jest tak jak mówisz .. siedzę z tym od rana i myślenie się chyba już samo wyłącza.

Jednak skoro wynik który pokazuje Octave jest poprawny, oznacza to, że musiałem zrobić gdzieś błąd w obliczeniach, bo zgodnie z komentarzem który usłyszałem na zajęciach "błąd powinien być na poziomie epsilonu maszynowego". Czy byłbyś w stanie pomóc mi zlokalizować go gdybym wstawił polecenie ze wzorem i swoje obliczenia? Bo ja już siedzę i siedzę, ale błędu za nic w świecie znaleźć nie mogę.
komentarz 30 kwietnia 2022 przez Wiciorny Ekspert (280,970 p.)

postarać się mogę, nie obiecuje że pomogę wrzuć co masz- przeanalizujemy. Aktualnie wartości wyraźnie wskazują  

b_rz = 1.343834447586900e-05  ( e-05)

eps = 2.220446049250313e-16  (e-16)
w oby przypadkach  -> tutaj istotne jest ze epsilony sa ujemne 

 

komentarz 30 kwietnia 2022 przez xTMx3 Obywatel (1,560 p.)
edycja 2 maja 2022 przez xTMx3
OK, udało mi się jakoś ogarnąć. Dzięki mimo wszystko za poprzednią odpowiedź.

Podobne pytania

0 głosów
0 odpowiedzi 118 wizyt
pytanie zadane 10 grudnia 2021 w Inne języki przez Ok Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 151 wizyt
pytanie zadane 2 listopada 2019 w Inne języki przez anonimgall Nowicjusz (120 p.)
0 głosów
1 odpowiedź 350 wizyt
pytanie zadane 6 czerwca 2019 w Inne języki przez Karolito Nowicjusz (120 p.)

93,382 zapytań

142,381 odpowiedzi

322,538 komentarzy

62,738 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...