/ Forside / Karriere / Uddannelse / Højere uddannelser / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Højere uddannelser
#NavnPoint
Nordsted1 1588
erling_l 1224
ans 1150
dova 895
gert_h 800
molokyle 661
berpox 610
creamygirl 610
3773 570
10  jomfruane 570
Algoritme for kvadratrod
Fra : LR


Dato : 18-12-02 22:42

Jeg lærte engang en algoritme, der med vilkårlig præcision kunne udregne
kvadratroden på et vilkårligt reelt tal:

* Algoritmen gav i første trin det første chiffer af resultatet, dernæst det
andet chiffer, osv.

* Metoden mindede om division i hånden. På et tidspunkt i et trin skulle man
altid addere en fast konstant. Jeg husker ikke konstanten, men det var
omkring 20 eller 30.

Det er alt jeg husker - er der nogen der kender denne algoritme?

Ps. jeg er IKKE interesseret i alle de øvrige algortimer for kvadratrødder.

Mvh,

Lasse



 
 
Lars Kyndi Laursen (18-12-2002)
Kommentar
Fra : Lars Kyndi Laursen


Dato : 18-12-02 22:51

"LR" <lar@tdcadsl.dk> enriched usenet with:

> Jeg lærte engang en algoritme, der med vilkårlig præcision kunne
> udregne kvadratroden på et vilkårligt reelt tal:
>
> * Algoritmen gav i første trin det første chiffer af resultatet,
> dernæst det andet chiffer, osv.
>
> * Metoden mindede om division i hånden. På et tidspunkt i et trin
> skulle man altid addere en fast konstant. Jeg husker ikke konstanten,
> men det var omkring 20 eller 30.
>
> Det er alt jeg husker - er der nogen der kender denne algoritme?

Gak til Google og bliv vis:
http://shor.ter.dk/373347092

--
Lars Kyndi Laursen, representatum nixi

Marge Gunderson: "I'm not sure I agree with you a hunnert percent
on your policework, there, Lou."

LR (19-12-2002)
Kommentar
Fra : LR


Dato : 19-12-02 00:14

Jubi, det var lige den jeg tænkte på :)

Tak til jer begge

Lasse


"Lars Kyndi Laursen" <spam_me_senseless@mail.dk> wrote in message
news:Xns92E8E8811EA9Flarskyndidk@aa635.kyndi.dk...
> "LR" <lar@tdcadsl.dk> enriched usenet with:
>
> > Jeg lærte engang en algoritme, der med vilkårlig præcision kunne
> > udregne kvadratroden på et vilkårligt reelt tal:
> >
> > * Algoritmen gav i første trin det første chiffer af resultatet,
> > dernæst det andet chiffer, osv.
> >
> > * Metoden mindede om division i hånden. På et tidspunkt i et trin
> > skulle man altid addere en fast konstant. Jeg husker ikke konstanten,
> > men det var omkring 20 eller 30.
> >
> > Det er alt jeg husker - er der nogen der kender denne algoritme?
>
> Gak til Google og bliv vis:
> http://shor.ter.dk/373347092
>
> --
> Lars Kyndi Laursen, representatum nixi
>
> Marge Gunderson: "I'm not sure I agree with you a hunnert percent
> on your policework, there, Lou."



karamel (20-12-2002)
Kommentar
Fra : karamel


Dato : 20-12-02 00:56

Lars Kyndi Laursen wrote:

> "LR" <lar@tdcadsl.dk> enriched usenet with:
>
> > Jeg lærte engang en algoritme, der med vilkårlig præcision kunne
> > udregne kvadratroden på et vilkårligt reelt tal:
> >
> > * Algoritmen gav i første trin det første chiffer af resultatet,
> > dernæst det andet chiffer, osv.

Der findes en sjov numerisk metode til beregning af kvadratrod.

Det tal, vi skal udregne kvadratrod af, kalder vi n. Vi tager to vilkårlige
faktorer af n, som vi kalder a og b (er n et primtal, så er a = n og b =
1).

Vi beregner det "aritmetiske gennemsnit" (der kaldes r) af disse to
faktorer. Det er jo det, vi normalt nøjes med at kalde gennemsnit:

r = (a + b) / 2

Derefter beregnes det såkaldte "harmoniske gennemsnit" (der kaldes s), som
er:

s = (2*a*b) / (a + b)

Så tager vi det aritmetiske gennemsnit r(1) af de to gennemsnit r og s,
som vi har beregnet, samt deres harmoniske gennemsnit s(1). Osv. osv.

Værdierne r og s er tilnærmede værdier for kvadratrodden. Metoden
konvergerer meget hurtigt imod den korrekte værdi.

Lad os f.eks. beregne sqrt(3): a = 3 og b = 1.
Vi får følgende tilnærmede værdier:

r = 2 r(1) = 7/4 r(2) = 97/56 r(3) = 18817/10864
s = 3/2 s(1) = 12/7 s(2) = 168/97 s(3) = 32592/18817

Standser vi her, har vi:

r(3) = 1,732050810
s(3) = 1,732050805

altså hele 7 korrekte decimaler allerede efter tre passager!

Beregningen af det aritmetiske gennemsnit er ikke specielt vanskelig. For
at beregne det armoniske gennemsnit er der en praktisk metode: Man bytter
om på tæller og nævner og man ganger med n. F.eks.:

s(2) = (56/97)*3 = 168/97

Som sagt har denne metode den fordel, at resultatet er meget præcist
allerede efter få tilnærmelser. Ulempen er, at det kan blive svært at se,
om det pågældende tal er et perfekt kvadrat (altså et tal som 25, 64, 81,
256 osv.). Desuden bliver metoden vanskelig at anvende i praksis, når
tallet har mange cifre.

Karamel



Torben Ægidius Mogen~ (20-12-2002)
Kommentar
Fra : Torben Ægidius Mogen~


Dato : 20-12-02 12:11

karamel <karamel@REMOVEoncable.dk> writes:

> Lars Kyndi Laursen wrote:
>
> > "LR" <lar@tdcadsl.dk> enriched usenet with:
> >
> > > Jeg lærte engang en algoritme, der med vilkårlig præcision kunne
> > > udregne kvadratroden på et vilkårligt reelt tal:
> > >
> > > * Algoritmen gav i første trin det første chiffer af resultatet,
> > > dernæst det andet chiffer, osv.
>
> Der findes en sjov numerisk metode til beregning af kvadratrod.

[metode slettet]

Den "almindelige" newtoniteration ser nemmere ud:

1) Start med 1 som gæt på en rod, altså r0 = 1.

2) Lad r1 = (r0 + x/r0)/2.

3) Lad r2 = (r1 + x/r1)/2.

4) Osv.

For x=3 fås:

r0 = 1, r1 = 2, r2 = 7/4, r3 = 97/56, r4 = 18817/10864 osv.

Men igen er denne metode mest interessant, hvis man har en
regnemaskine. Den divisions-lignende metode har dog den ulempe, at
den konvergerer langsomt (hvert trin giver et nyt ciffer, mens
newtoniteration ca. fordobler antallet af rigtige cifre i hver
iteration).

   Torben Mogensen

Martin Larsen (20-12-2002)
Kommentar
Fra : Martin Larsen


Dato : 20-12-02 13:37


"Torben Ægidius Mogensen" <torbenm@diku.dk> skrev i en meddelelse news:w5n0n1j677.fsf@pc-032.diku.dk...
> karamel <karamel@REMOVEoncable.dk> writes:
>
> > Lars Kyndi Laursen wrote:
> >
> > > "LR" <lar@tdcadsl.dk> enriched usenet with:
> > >
> > > > Jeg lærte engang en algoritme, der med vilkårlig præcision kunne
> > > > udregne kvadratroden på et vilkårligt reelt tal:
> > > >
> > > > * Algoritmen gav i første trin det første chiffer af resultatet,
> > > > dernæst det andet chiffer, osv.
> >
> > Der findes en sjov numerisk metode til beregning af kvadratrod.
>
> [metode slettet]
>
> Den "almindelige" newtoniteration ser nemmere ud:
>
> 1) Start med 1 som gæt på en rod, altså r0 = 1.
>
> 2) Lad r1 = (r0 + x/r0)/2.
>
> 3) Lad r2 = (r1 + x/r1)/2.
>
> 4) Osv.
>
> For x=3 fås:
>
> r0 = 1, r1 = 2, r2 = 7/4, r3 = 97/56, r4 = 18817/10864 osv.
>
> Men igen er denne metode mest interessant, hvis man har en
> regnemaskine. Den divisions-lignende metode har dog den ulempe, at
> den konvergerer langsomt (hvert trin giver et nyt ciffer, mens
> newtoniteration ca. fordobler antallet af rigtige cifre i hver
> iteration).
>
Jamen er karamels metode ikke newtons?

Mvh
Martin



karamel (20-12-2002)
Kommentar
Fra : karamel


Dato : 20-12-02 18:50

Martin Larsen wrote:

> Jamen er karamels metode ikke newtons?
>
> Mvh
> Martin

Jeg ved det ikke, men det er da muligt, for Newton har lavet så meget... det ville ikke undre mig, hvis jeg
fandt en opskrift som "Spaghetti à la Newton"

Men når man taler om Newtons iteration mener man som regel en numerisk metode for at løse ligninger, som
ikke kan løses algebraisk (man kan selvfølgelig løse enhver slags ligning ved hjælp af N.I., men når en
ligning ikke kan løses algebraisk, så bliver man ligefrem nødt til at bruge numeriske metoder). Som
f.eks.: x + cosx = 0.

Kort sagt går N.I. ud på, at man gætter en løsning, og så finder man en bedre løsning ved at erstatte
funktionen med en ret linie, som har en hældning, der er lig med funktionens differentialkvotient, hvor man
har gættet (geometrisk er det tangenten til grafen for funktionen, og løsningen er nulpunktet). Derefter
sammenlignes det fundne nulpunkt med funktionens rigtige værdi dér, og hvis det ikke ligger inden for den
tolerance, man har valgt, gætter man videre herfra.

Men med hensyn til den numeriske metode for at finde kvadratrødder, så mener jeg, at løsningen nærmer sig
eksponentielt til den rigtige værdi for hvert nyt gæt - så jeg ved ikke, hvad man kan forlange mere... Jeg
kan evt. tjekke i den bog, jeg har den fra.

Karamel




Martin Larsen (20-12-2002)
Kommentar
Fra : Martin Larsen


Dato : 20-12-02 20:33

"karamel" <karamel@REMOVEoncable.dk> skrev i en meddelelse news:3E035845.8E68AA0B@REMOVEoncable.dk...
> Martin Larsen wrote:
>
> > Jamen er karamels metode ikke newtons?
>
[snip]
>
> Men med hensyn til den numeriske metode for at finde kvadratrødder, så mener jeg, at løsningen nærmer sig
> eksponentielt til den rigtige værdi for hvert nyt gæt - så jeg ved ikke, hvad man kan forlange mere... Jeg
> kan evt. tjekke i den bog, jeg har den fra.
>
Newtons approximation for kvadratrod er som angivet af Ægidius.
Den kan skrives x1=1/2*(x0+N/x0). N = 3 i exemplet.
Dens approximerer kvadratisk (genrelt).

Ved nærmere betragtning ser vi at den er magen til din metode.
Det du kalder r svarer til x1 og det du kalder s svarer til N/x0.

Generelt for roden n har man iøvrigt x1=1/n*((n+1)x0-N/x0^(n-1))

Mvh
Martin



Martin Larsen (20-12-2002)
Kommentar
Fra : Martin Larsen


Dato : 20-12-02 20:35


(n-1) erstatter (n+1)




Ulrik Jensen (21-12-2002)
Kommentar
Fra : Ulrik Jensen


Dato : 21-12-02 10:28

karamel <karamel@REMOVEoncable.dk> writes:

> Men når man taler om Newtons iteration mener man som regel en numerisk metode for at løse ligninger, som
> ikke kan løses algebraisk (man kan selvfølgelig løse enhver slags ligning ved hjælp af N.I., men når en
> ligning ikke kan løses algebraisk, så bliver man ligefrem nødt til at bruge numeriske metoder). Som
> f.eks.: x + cosx = 0.

Hmm, sådan noget må du jo ikke sige på en lørdag hvor jeg ikke har noget
at lave... Nu sidder jeg jo og kan ikke få det ind i hovedet hvorfor den
ikke kan løses.... Jeg kan (selvfølgelig) ikke selv løse den, men "kan"
det virkelig ikke lade sig gøre? Så vidt jeg kan se har det noget at
gøre med at der faktisk er 2 ukendte, fordi man ikke i dette tilfælde
umiddelbart kan fjerne cos(x) fra udtrykket, uden at få et tilsvarende
led med acos(x) ud af det andet led... Men det /må/ da teoretisk set
kunne lade sig gøre at løse det? Eller har jeg bare for stor tillid til
algebra? Kan det så heller ikke lade sig gøre at løse 3. gradsligninger?
Jeg spørger fordi jeg på HTX 3. års matematik A-niveau er blevet
introduceret til Newtons metode som en løsning til disse... Jeg troede
det var fordi at en algebraisk/teoretisk løsning er for avanceret til
vores pensum, men det er måske simpelthen ikke muligt?

--
Ulrik Jensen
ulrik@qcom.dk - http://www.minefilm.tk
"It's only a movie, and, after all, we're all grossly overpaid."

Jeppe Stig Nielsen (21-12-2002)
Kommentar
Fra : Jeppe Stig Nielsen


Dato : 21-12-02 10:57

Ulrik Jensen wrote:
>
> > f.eks.: x + cosx = 0.
>
> Hmm, sådan noget må du jo ikke sige på en lørdag hvor jeg ikke har noget
> at lave... Nu sidder jeg jo og kan ikke få det ind i hovedet hvorfor den
> ikke kan løses.... Jeg kan (selvfølgelig) ikke selv løse den, men "kan"
> det virkelig ikke lade sig gøre?

Det kan nok ikke lade sig gøre at udtrykke løsningen med »standard-
funktioner«. Men hvis man »snyder« og indører nye funktioner, kan man
jo altid udtrykke løsningen ved dem.

Fx kan ligningen 2^x=3 heller ikke løses *før* man indfører logaritme-
funktionen.

Da funktionen f(x)=x+cosx er strengt voksende, har den en omvendt
funktion som man kunne kalde noget. Lad os kalde den invidpluscos.
Så er løsningen jo bare invidpluscos(0) .

> [...] Kan det så heller ikke lade sig gøre at løse 3. gradsligninger?

Jo, der findes (indviklede) formler til eksakt løsning af tredje- og
fjerdegradsligninger. Til gengæld kan man ikke løse femtegradsligninger
(bevist af Abel og Galois).

--
Jeppe Stig Nielsen <URL:http://jeppesn.dk/>. «

"Je n'ai pas eu besoin de cette hypothèse (I had no need of that
hypothesis)" --- Laplace (1749-1827)

Jeppe Stig Nielsen (21-12-2002)
Kommentar
Fra : Jeppe Stig Nielsen


Dato : 21-12-02 11:08

karamel wrote:
>
> f.eks.: x + cosx = 0.

På en regnemaskine findes der for resten en nem måde at finde løsningen
til denne ligning på. Indtast et tal nær 0,7, og bliv ved med at tage
cosinus (iterér). Det er naturligvis vigtigt at regnemaskinen er ind-
stillet på radianer. På mange regnemaskiner trykker man blot gentagne
gange på COS. På fx TI-83 skriver man "cos(Ans)" og trykker mange
gange på ENTER.

Det tal der kommer frem, løser ligningen

cos x = x

Løsningen til x+cosx=0 er naturligvis blot den negative værdi af det
samme tal.

--
Jeppe Stig Nielsen <URL:http://jeppesn.dk/>. «

"Je n'ai pas eu besoin de cette hypothèse (I had no need of that
hypothesis)" --- Laplace (1749-1827)

Martin Larsen (21-12-2002)
Kommentar
Fra : Martin Larsen


Dato : 21-12-02 12:56


"Jeppe Stig Nielsen" <mail@jeppesn.dk> skrev i en meddelelse news:3E043D8C.6D5019ED@jeppesn.dk...
> karamel wrote:
> >
> > f.eks.: x + cosx = 0.
>
> På en regnemaskine findes der for resten en nem måde at finde løsningen
> til denne ligning på. Indtast et tal nær 0,7, og bliv ved med at tage
> cosinus (iterér). Det er naturligvis vigtigt at regnemaskinen er ind-
> stillet på radianer. På mange regnemaskiner trykker man blot gentagne
> gange på COS. På fx TI-83 skriver man "cos(Ans)" og trykker mange
> gange på ENTER.
>
> Det tal der kommer frem, løser ligningen
>
> cos x = x
>
> Løsningen til x+cosx=0 er naturligvis blot den negative værdi af det
> samme tal.
>
Jeg brugte Newtons approximation og fik -.7390851332151607 (3 skridt)
Det nager mig lidt at jeg ikke lige fandt et "kendt" udtryk.

Mvh
Martin



Stein A. Stromme (20-12-2002)
Kommentar
Fra : Stein A. Stromme


Dato : 20-12-02 14:42

[Torben Ægidius Mogensen]

| Den "almindelige" newtoniteration ser nemmere ud:
|
| 1) Start med 1 som gæt på en rod, altså r0 = 1.
|
| 2) Lad r1 = (r0 + x/r0)/2.
|
| 3) Lad r2 = (r1 + x/r1)/2.
|
| 4) Osv.
|
| For x=3 fås:
|
| r0 = 1, r1 = 2, r2 = 7/4, r3 = 97/56, r4 = 18817/10864 osv.
|
| Men igen er denne metode mest interessant, hvis man har en
| regnemaskine.

I hvilket fall man formodentlig heller bruker sqrt-knappen på
regnemaskinen ...

| Den divisions-lignende metode har dog den ulempe, at den konvergerer
| langsomt (hvert trin giver et nyt ciffer, mens newtoniteration
| ca. fordobler antallet af rigtige cifre i hver iteration).

Fett nok, men for å fa tak på de riktige sifre må du jo nettopp utføre
en lang divisjon til slutt, med ett skritt pr siffer. Eller?
--
Stein Arild Strømme +47 55584825, +47 95801887
Universitetet i Bergen Fax: +47 55589672
Matematisk institutt www.mi.uib.no/~stromme
Johs Brunsg 12, N-5008 BERGEN stromme@mi.uib.no

LR (21-12-2002)
Kommentar
Fra : LR


Dato : 21-12-02 01:27

> Men igen er denne metode mest interessant, hvis man har en
> regnemaskine. Den divisions-lignende metode har dog den ulempe, at
> den konvergerer langsomt (hvert trin giver et nyt ciffer, mens
> newtoniteration ca. fordobler antallet af rigtige cifre i hver
> iteration).

Jeg havde et håb om, at "divisionsmetoden" havde linær tidskompleksitet mht.
præcision (har den ikke), hvilket heller ikke kan lade sig gøre, har jeg nu
erfaret.

Mvh,

Lasse




Jes Hansen (18-12-2002)
Kommentar
Fra : Jes Hansen


Dato : 18-12-02 22:51

> *> * Metoden mindede om division i hånden. På et tidspunkt i et trin
skulle man
> altid addere en fast konstant. Jeg husker ikke konstanten, men det var
> omkring 20 eller 30.

Kan det være sådan noget her?: http://tinyurl.com/3nvh


> Det er alt jeg husker - er der nogen der kender denne algoritme?

Ellers prøv at lede efter Trachtenbergs metoder på Google, der plejer at
være noget.

-----
Jes Hansen



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste