Side 1 av 1

induksjon, Python program

Lagt inn: 16/09-2012 22:55
av LIMAR
Hei !!


Kan dere hjelpe meg å forstå hva skjer i dette progremmet ..... ?
Oppgave 5. Følgende python-program er gitt:
from random import random
antfeil = 0; N = 10000
x0 = y0 = z0 = 0.0
feildistrib1 = feildistrib2 = 0.0
for i in range(N):
x = random(); y = random(); z = random()
distrib1 = (x + y) * z
distrib2 = x*z + y*z
if distrib1 != distrib2:
antfeil += 1
x0 = x; y0 = y; z0 = z
feildistrib1 = distrib1
feildistrib2 = distrib2
print (100. * antfeil/N)
print (x0, y0, z0, feildistrib1 - feildistrib2)
En kjøring av programmet ga utskriften
30.9
0.353844048298 0.0889988070385 0.276307017492 1.38777878078e-17
Forklar hva programmet gjør og hva utskriften forteller oss.
Lykke til!!




Også klarer jeg ikke siste steg i følge induksjon:
Følgen {xn} er gitt ved differensligningen
xn = cos(xn−1)xn−2 sin(xn−3) for n ≥ 3
ogx0 =3,x1 =2ogx2 =1.Visvedinduksjonat0≤xn ≤1foralle
heltall n ≥ 3. :(

Re: induksjon, Python program

Lagt inn: 16/09-2012 23:00
av JoddEHaa

Kode: Velg alt

distrib1 = (x + y) * z
distrib2 = x*z + y*z 
Dette er vel de viktigste linjene - x y og z er tilfeldige flyttall - resten av programmet tester med masse tall og finner ut hvor ofte de er forskjellige.

Poenget med oppgaven er at dere skal lære om at flyttallsaritmetikk ikke er helt nøyaktig.

Lagt inn: 16/09-2012 23:00
av Nebuchadnezzar
For det første, kan du plassere python koden inne i et kode klammer?
Da skriver du

[code.] python saker [\code.]

Husk å fjerne punktumene. Hvor er det du faller ut i koden, hvilken linje er det du ikke forstår?

Lagt inn: 16/09-2012 23:30
av LIMAR
Når jeg kjørte programmet fikk jeg forskellige svar enn på spørsmål, og når jeg kjørte den igjen fikk jeg nuller.

x = random() hva betyr det.

Hvordan kan jeg beskrive Hva gjør programmet.

Lagt inn: 16/09-2012 23:35
av LIMAR
Kan du vær så snil gi meg en kort beskrivelse av programmet som
helhet.

Lagt inn: 16/09-2012 23:58
av JoddEHaa

Kode: Velg alt

random() 
er en funksjon som gir deg et flyttall mellom 0 og 1.

Tror ikke du lærer så mye om jeg gjør leksene dine for deg, så jeg vil ikke forklare mer detaljert. Dette må du nok jobbe litt med selv.... Lær deg python, det finnes mange kurs på nettet, og gå gjennom programmet steg for steg.

Lagt inn: 17/09-2012 21:31
av FredrikM
Hei,

Poenget med oppgaven er å se at datamaskiner ikke framstiller flyttall nøyaktig. Hvordan og hvorfor dette skjer er nøye beskrevet i kompendiet til MAT-INF (kapitlene 3-5).

Spør gjerne gruppelæreren din.

Lagt inn: 19/09-2012 20:26
av fomlen
Hei

I Python - programmet: Når 100 * antfeil/N printes ut, betyr det at antfeil står for antall ganger distrib1 != distrib2 og at det uttrykkes i prosent?

Lagt inn: 19/09-2012 22:39
av 2357
Ja.