Hollosi Information eXchange /HIX/
HIX CODER 855
Copyright (C) HIX
2000-06-18
Új cikk beküldése (a cikk tartalma az író felelőssége)
Megrendelés Lemondás
1 Re: gyokfv. (mind)  41 sor     (cikkei)
2 Re: negyzetgyok (mind)  43 sor     (cikkei)
3 palette_change_CBuilder (mind)  39 sor     (cikkei)
4 ASP, ActiveX, PHP (mind)  8 sor     (cikkei)

+ - Re: gyokfv. (mind) VÁLASZ  Feladó: (cikkei)

Sziasztok Coderesek! Ha a matekot mar nagyon unjatok, akkor bocs, es
PgDn vagy Del vagy hasonlo, bar remelem nem leszek bonyolult.

Ezt irtam tegnap ejszaka (vagy inkabb ma hajnalban :) a Newton 
iteraciorol:

> azt jelenti, hogy egy iteracio 1 bitet hoz. Ha valahol logikai
> hibat vétettem, hol. (Egyebkent a Negyjegyu fuggvenytablazat
> szerint is duplazodik a helyes jegyek szama, de ettol sem ertem
> jobban).

Ez utan nem birtam meg elaludni, es az agyban is tovabb gondolkoztam, 
aztan ra is jottem!!! Nem logikai, hanem kozelitesi hibat vétettem! 
Ugyanis rosszul altalanositottam a jol ismert 1/(1+x) ~= 1-x 
kozelitest: 1/(a+x) = (1/a)*(1/(1+x/a)) miatt ugyanis 
  1/(a+x) ~= 1/a - x/a^2   (nem pedig 1/a - x)

A kulonbseg nem oriasi, hisz a^2 jo kozelitessel = 2 (a ~= gyok2),
igy x es x/a^2=x/2 nagysagrendileg azonosak, megis az adott esetben
ez a kozelites hasznalhatatlan, hisz igy az jon ki, hogy ha egy
iteracioban 'e' a hiba, akkor a kovetkezo lepesben e/2-e=-e/2
helyett e/2-e/2=0 lenne!!

Szoval az 1/(1+x) sorfejtesenek a kovetkezo elemet is figyelembe kell 
vennunk a kozeliteskor: 1/(1+x) = 1 - x + x^2 - x^3 + ... alapjan
   1/(a+x) = 1/a - x/a^2 + x^2/a^3 - x^3/a^4 + ...

Ha ezek utan 1/(a+x)-et 1/a-x/a^2+x^2/a^3-bel kozelitjuk, akkor az
aktualis 'e' hiba (x=e, a=sqrt2) a kovetkezo iteracioban kozelitve
e/2-e/2+e^2/(2*sqrt2) ~= e^2/2.828 lesz. Ebben a 2.828-as hanyados
nem sokat szamit, csak annyit jelent, hogy az e^2-es hibahoz kepest
meg kb 1 bittel kevesebb hibas bit van (1/2.828 < 1/2). e^2 a lenyeg,
ami pedig azt jelenti, hogy a hibaban a tizedespont utani nullak
szama iteracionkent duplazodik.

Szoval elnezest mindenkitol a felrevezetesert, most mar ertem, hogy
duplazodik a helyes jegyek szama.

István
--  Istvan Marosi  --  http://www.sch.bme.hu/~marosi  --
--  Recosoft Ltd.  --  mailto:  --
+ - Re: negyzetgyok (mind) VÁLASZ  Feladó: (cikkei)

On 16 Jun 00 at 7:33,  wrote:

> Es honnan tudom, hogy meddig ismeteljem a szamolast?

Attol fugg, hogy milyen modszert hasznalsz. Ha tudod, hogy mekkora az
iteraciok utan a hiba (pl. hogy az ervenyes jegyek szama duplazodik
:), akkor abbol a lepesszam kiszamolhato elore. Ha nem Newton
iteraciot hasznalsz, es nem tudod keplettel a hibat, de tudod, hogy
az iteracioban mindig pontosabb eredmenyt kapsz, akkor nezheted, hogy
a korabbi es mostani eredmenynek hany bitje/szamjegye stb. azonos az
elejen, hisz azok mar kesobb sem fognak valtozni. Van aztan olyan
modszer is, ami minden iteracioban pontosan egy jo jegyet ad
(egyszeruen a jegyek maguk jonnek ki sorban eredmenykent), ott 
egyertelmu a dolog.

Lehet utolag is ellenorizni a vegeredmenyt (pl. annal az
algoritmusnal, ami a Pell egyenleten alapul, hisz ott csak a legvegen
jon ki egy kozelites) ugy, hogy negyzetre emeled a kiszamolt
gyok2-ot, es nezed, hogy a 2 utan hany 0-as, vagy az 1 utan hany 9-es
jegy van, nagyjabol annyi lesz a pontossag: Ha gyok2 hibaja 'e',
akkor gyok2^2 hibaja 'E' a kovetkezokeppen jon ugyanis ki:

 (gyok2+e)^2 = 2+E
  gyok2^2 + e^2 + 2*gyok2*e = 2+E
  E = e^2+2.828*e

Mivel e^2 sokkal kisebb szam 2.828*e-nel, igy E ~= 2.828*e. Ebbol
visszafele: ha a kiszamolt kozelites negyzetreemelesebol tudjuk az E
hibat (mert meg tudjuk szamolni a 0-ak vagy 9-esek szamat), akkor
e~=E/2.828, vagyis a kozelitesunk hibaja ennel meg kisebb, tehat a
kozelitesunk jo jegyeinek szama legalabb akkora (sot, kb 1 bittel
jobb), mint a negyzetenek a jo jegyeinek a szama.

Ezt az ellenorzest erdemes azert elvegezni minden esetben, akkor is, 
ha meg tudod keplettel becsulni a kozelites hibajat, hatha - mint en 
is - rosszul szamolod ki a kepletet :)

No tessek, mar megint matekoztam. A vege az lesz, hogy kirugtok
innen :)

István
--  Istvan Marosi  --  http://www.sch.bme.hu/~marosi  --
--  Recosoft Ltd.  --  mailto:  --
+ - palette_change_CBuilder (mind) VÁLASZ  Feladó: (cikkei)

Sziasztok Coderek!

Adott egy bitmap (Image1), es ennek a szineit szeretnem megvaltoztatni.
Pixelenkent persze megy, csak irtozatosan lassu! Ezert szeretnem a palettat
megvaltoztatni, de az alabbi kodreszlet nem mukodik. :( Kerem, aki tudja
javitsa ki, vagy irja meg mire valo a palVersion, illetve hogy a
GetSystemPaletteEntries parameterei mit takarnak, mert sajnos a helpben
errol egy szo sincs!

//------------------------------------------------------
typedef struct
{
  TLogPalette lpal;
  TPaletteEntry dummy[256];
} LogPal;

LogPal palettam;

palettam.lpal.palVersion=0x300;
palettam.lpal.palNumEntries=256;


for(int i=1;i<255;i++)
{
palettam.dummy[i]->peBlue=random(255);
palettam.dummy[i]->peRed=random(255);
palettam.dummy[i]->peGreen=random(255);
}

GetSystemPaletteEntries(Image1->Canvas->Handle,0,256,palettam.lpal.palPalEnt
ry);

Image1->Picture->Bitmap->Palette=
CreatePalette(palettam.lpal);
//------------------------------------------------------

Koszonom.
Otto
/ps: Aki elsokent kuld hibatlanul mukodo kodot, annak fizetek egy sôrt! :)/
+ - ASP, ActiveX, PHP (mind) VÁLASZ  Feladó: (cikkei)

sziasztok!

keresek 1-2 olyan programozot, aki a fenti temakorokben jartas!!!
eleg ha csak latott, vagy csinalt par aprosagot!!!
irjatok: 
koszi

BYE! Stenya.

AGYKONTROLL ALLAT AUTO AZSIA BUDAPEST CODER DOSZ FELVIDEK FILM FILOZOFIA FORUM GURU HANG HIPHOP HIRDETES HIRMONDO HIXDVD HUDOM HUNGARY JATEK KEP KONYHA KONYV KORNYESZ KUKKER KULTURA LINUX MAGELLAN MAHAL MOBIL MOKA MOZAIK NARANCS NARANCS1 NY NYELV OTTHON OTTHONKA PARA RANDI REJTVENY SCM SPORT SZABAD SZALON TANC TIPP TUDOMANY UK UTAZAS UTLEVEL VITA WEBMESTER WINDOWS