• 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.

Object Storage Arubacloud
0 głosów
231 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 (271,610 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 (271,610 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 97 wizyt
pytanie zadane 10 grudnia 2021 w Inne języki przez Ok Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 124 wizyt
pytanie zadane 2 listopada 2019 w Inne języki przez anonimgall Nowicjusz (120 p.)
0 głosów
1 odpowiedź 279 wizyt
pytanie zadane 6 czerwca 2019 w Inne języki przez Karolito Nowicjusz (120 p.)

92,661 zapytań

141,557 odpowiedzi

320,000 komentarzy

62,028 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.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...