Jak jednoduse spocitat rosny bod

Jan Waclawek wek@evona.sk
Pátek Prosinec 3 15:15:01 CET 2004


Neviem ake kriterium mam zvolit, ale to primitivne "najvacsia chyba" sa 
zhorsilo na 0.18%.
Inak som velkom tej logike "niekolkonasobnym zaokruhlenim sa to zlepsi" 
neporozumel, podla mna sa to musi zhorsit.

wek

PS. Cela robota bola v prepisani 4 konstant, TP nebolo poruke?


Danhard wrote:
> No, tak nejak, byl to jen priklad nepresneho pocitani s nepresnymi cisly.
> Treba to priblizovani nasobenim 1.01hex budu delat v nejhorsim pripade 178x,
> takze to bude chtit aspon nejake zaokrouhleni, treba i nesymetricke, kdyz to
> snizi konecnou chybu. Lepsi zavest treba dalsi stupen priblizeni treba x
> 1.1hex (tj. pricist operand posunuty o 4 bity).
> Ta konstanta je priblizne 0.00169, presneji 0.001693158 (aspon tolik me ukaze
> moje lacina kalkulacka), tak po binarni transformaci do 16 bit cisla (x65536)
> bych byl rad aby to bylo 110,962804, na cele to bude 111, tj. 006F hex, a v
> prepoctu zpatky 0.001693725, takze ta celkova chyba bude hnedka o neco lepsi
> :o)
> VSECHNY ! vypocty s iracionalnimi cisly jsou vzdy kompromis mezi rychlosti,
> slozitosti a presnosti vypoctu.
> 
> Kdyby jsi zkusil ty priblizovaci konstanty binarne, nebylo by to lepsi ?
> x2 = + 19728
> x1.01hex = -111
> vysledek /65536
> 
> Danhard
> ----------------
> 
> Takto?
> Najvacsia chyba medzi 2 a 65535 je okolo 0.14% ak to teda mam dobre.
> 
> wek
> 
> var
>      vstup,a,l:longint;
>      i:integer;
>      f:text;
> begin
>    assign(f,'');
>    rewrite(f);
>    for vstup:=2 to 65535 do begin
>      a:= vstup shl 16;
>      l:=0;
>      while (a>(1 shl 16)) or (a<0) do begin  {a<0 znamena vlastne a>=(1
> shl 31) v pascale nemame unsigned long}
>        a:=a shr 1;
>        l:=l+30103;
>      end;
>      while a<(1 shl 16) do begin
>        a:=a + (a shr 8);
>        l:=l-169;
>      end;
>      writeln(f,vstup,' ',
>              l/100000:10:7,' ',
>              ln(vstup)/ln(10):10:7,' ',
>              (l/100000-ln(vstup)/ln(10))/(ln(vstup)/ln(10))*100:5:2,'%');
>    end;
>    close(f);
> end.
> 
> 
> 
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list@list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
> 




Další informace o konferenci Hw-list