Matematik

Maple

17. december 2002 af SP anonym (Slettet)
Det er meningen at jeg skal vise hvor mange led der skal til i en given række/formel for at bestemme pi med 10 decimaler, men hvordan får jeg Maple til det?

Svar #1
17. december 2002 af SP anonym (Slettet)

Du bliver nok nødt til at formulere dit spørgsmål noget mere præcist for at jeg kan hjælpe dig !

Brugbart svar (0)

Svar #2
17. december 2002 af 404error (Slettet)

Jeg har prøvet at fifle lidt med maple - her er et MEGET simpelt eksempel på noget kode, der giver antal led før det pi med to decimaler rammes første gang. 132 led er nødvendigt. Arctan-rækken konvergerer meget langsomt, og skal du helt op på ti cifre, må du indstille dig på en MEGET lang beregningstid, medmindre du har et gæt på omtrent hvor mange decimaler, eller kan lave noget bedre kode. F.eks. er det ikke nødvendigt, for de første mange led at lave sammenligninger for hvert led o.s.v. Mulighederne er mange, men tiden er knap :)

pidecimal:=proc();
> Digits := 3;
> i:=0;
> while 4*sum((-1.)^j/(2.*j+1),j=0..i)<>3.14 do
> i:=i+1;
> od;
> print(i+1);
> end proc;

Svar #3
17. december 2002 af SP anonym (Slettet)

For en alternerende række som arctan rækken, er fejlen ved kun at bruge de første n led mindre en det n+1'te led.

10^{-10} = 4/(2*n+1)

=>

n = 2^{10}

Det vil nok tage et par timer med fortran og 600 mhz.

Svar #4
17. december 2002 af SP anonym (Slettet)

Hvis jeg taster som 404error skriver, så kommer den med mindst 3 errors allerede i indtastningen bla. et par stykker Warning, premature end of input!
Hvad hvis jeg nu ønsker at bruge Gauss' formel som er.
pi/4 = 12arctan(1/18)+
8arctan(1/57) - 5arctan(1/239)

Svar #5
17. december 2002 af SP anonym (Slettet)

Hvis jeg taster som 404error skriver, så kommer den med mindst 3 errors allerede i indtastningen bla. et par stykker Warning, premature end of input!
Hvad hvis jeg nu ønsker at bruge Gauss' formel som er.
pi/4 = 12arctan(1/18)+
8arctan(1/57) - 5arctan(1/239)

Svar #6
17. december 2002 af SP anonym (Slettet)

Jeg fatter bare ikke helt programmet.

Brugbart svar (0)

Svar #7
17. december 2002 af 404error (Slettet)

Som koden står nu, sættes antal "digits" til 3, her svarende til to decimaler. Tælleren "i" sættes først lig nul og der laves en do-løkke; arctan-rækken (fra nul til i) sammenlignes med den ønskede værdi af pi - hvis de er forskellige, prøver programmet igen med værdien i:=i+1. Sådan fortsættes indtil man får et falsk udsagn i løkken - så afbrydes den og værdien "i+1" (antal led i rækken) skrives ud.

Hvis du har problemer med at eksekvere proceduren, så HUSK, at alle ">" skal fjernes. Koden skal bare stå linie for linie inde i maple i EN eksekveringsblok.

Hvis du vil anvende en anden formel, er det naturligvis muligt - men er det tilrådeligt? Konvergerer Gauss hurtigere; fordi umiddelbart vil jeg bare tro, at det forlænger din beregningstid (tre rækker skal udregnes i stedet for én)

vh,

Anders

Svar #8
18. december 2002 af SP anonym (Slettet)

Det virker stadig ikke helt den siger: "i" is implicitly declared local to procedure. Hmm. Har i ellers nogle ideer til hvordan jeg kan "vurdere hvor mange led der skal tages med i en given arctanrække for at bestemme pi med 10 decimaler"?


Skriv et svar til: Maple

Du skal være logget ind, for at skrive et svar til dette spørgsmål. Klik her for at logge ind.
Har du ikke en bruger på Studieportalen.dk? Klik her for at oprette en bruger.