eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingiterowanie po kwadracie › Re: iterowanie po kwadracie
  • Data: 2012-04-02 14:51:35
    Temat: Re: iterowanie po kwadracie
    Od: g...@n...invalid (Adam Wysocki) szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    M.M. <m...@g...pl> wrote:

    > Kolejne punkty leza na prostych, wiec punkt nastepny uzyskuje
    > sie przez dodanie dx i dy do punktu poprzedniego. Ze
    > wzorow na obrot trzeb wyliczyc start_x i start_y a
    > potem odpowiednio dodawac dx i dy.

    Może to kumulować błąd, jeżeli dx i dy są w jakiś sposób przybliżone
    (np. float). Lepiej nie dodawać tylko mnożyć.

    Przykład tego o czym mówię:

    #include <stdio.h>

    int main()
    {
    long i;
    const float factor = 1.11;
    float f = 0;

    for (i = 0; i <= 100000; ++i)
    {
    if (!(i % 1000))
    printf("i=%d i*factor=%.4f f=%.4f diff=%.4f\n", i, i *
    factor, f, f - i * factor);

    f += factor;
    }

    return 0;
    }

    Ostatnia linijka outputu:

    i=100000 i*factor=111000.0014 f=110948.9922 diff=-51.0092

    Kalkulator mówi, że 100000 * 1.11 to 111000 i mniej więcej tyle wyszło
    z mnożenia, a z dodawania 0.05% mniej.

    --
    Gof

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: