Nowe posty

Autor Wątek: [bash]dokladnosc otrzymywanych liczb  (Przeczytany 4309 razy)

kordi

  • Gość
[bash]dokladnosc otrzymywanych liczb
« dnia: 2012-09-30, 11:03:48 »
Witajcie!
Mam pytnie odnosnie otrzymywanych wynikow w Bashu. Czy po uzyciu kaluatora bc, wyniki moga byc mniej dokladne?
Dokonalam kilka obliczen za pomoca komend:
pi=3.14159265358979323846264338327950288419716939937510

  C[0]=0

    for (( l=1; $l<=50; l=$((l+1)) )) ;
     do

       C[$l]=$(echo "scale=10; ${C[$l-1]} + ${w[$l]}*${n[$l]}*${n2[$l]}" | bc)

      done
     
     T=$(echo "scale=10; 3/$pi*${C[50]}" |bc)
          echo  $T ""
Otrzymany wynik w Bashu to 1938.55, natomiast w Matlbie jest to wynik 1938.78.

Mozecie mi wyjasnic skad bierze sie taka roznica? Zalezy mi by dostac jak najdokladniejsze wyniki.

Offline vanhelzing

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 314
    • Zobacz profil
[bash]dokladnosc otrzymywanych liczb
« Odpowiedź #1 dnia: 2012-09-30, 11:41:04 »
Zwiększ skalę w bc, to będziesz mieć większą dokładność.

kordi

  • Gość
[bash]dokladnosc otrzymywanych liczb
« Odpowiedź #2 dnia: 2012-09-30, 11:46:49 »
Zwiekszylam scale na 30 i dwie cyfry po przecinku sa takie same, czyli 1938.55. :(

Offline vanhelzing

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 314
    • Zobacz profil
[bash]dokladnosc otrzymywanych liczb
« Odpowiedź #3 dnia: 2012-09-30, 11:52:22 »
W obu miejscach?

kordi

  • Gość
[bash]dokladnosc otrzymywanych liczb
« Odpowiedź #4 dnia: 2012-09-30, 11:59:50 »
tak

Offline vanhelzing

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 314
    • Zobacz profil
[bash]dokladnosc otrzymywanych liczb
« Odpowiedź #5 dnia: 2012-09-30, 12:24:47 »
bc używa wewnętrznie reprezentacji dziesiętnej liczb, a matlab zmiennoprzecinkowej. Pewni stąd ta różnica. W tego typu zadaniach błędy szybko się kumulują.

kordi

  • Gość
[bash]dokladnosc otrzymywanych liczb
« Odpowiedź #6 dnia: 2012-09-30, 12:42:46 »
Rozmumiem, ze wartosci matlabowe sa w takiej sytuacji sa dokladniejsze? Czy da sie to w Bashu jakos przeskoczyc?

Offline vanhelzing

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 314
    • Zobacz profil
[bash]dokladnosc otrzymywanych liczb
« Odpowiedź #7 dnia: 2012-09-30, 13:03:37 »
Niekoniecznie. Jeżeli ustawisz odpowiednio skalę, to, przynajmniej, teoretycznie, w bc powinien być dokładniejszy wynik.

Osobiście nie ufałbym tak bardzo matlabowi.

kordi

  • Gość
[bash]dokladnosc otrzymywanych liczb
« Odpowiedź #8 dnia: 2012-09-30, 13:14:49 »
A jesli kolega w Perlu otrzymuje takie same wyniki co w Matlabie, to moze jednak Bashowskie przyblizenia nie sa az tak dobre?

Offline vanhelzing

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 314
    • Zobacz profil
[bash]dokladnosc otrzymywanych liczb
« Odpowiedź #9 dnia: 2012-09-30, 13:20:03 »
A jeśli Perl używa tej samej arytmetyki co matlab, to dziwnym nie jest, że wynik jest taki sam. Jeżeli dwa programy używać będą wartości zmiennoprzecinkowej 64. bitowej używając do obliczeń tych samych algorytmów, to nie jest dziwne, że uzyska się taki sam wynik.

kordi

  • Gość
[bash]dokladnosc otrzymywanych liczb
« Odpowiedź #10 dnia: 2012-09-30, 13:21:44 »
ok, wielkie dzieki za pomoc!