» »

python- pomoč pri nalogi

python- pomoč pri nalogi

ktka ::

Pozdravljeni...Rabim pomoč pri eni nalogi...ta se glasi:
Izračunaj verjetnost, da se daljici določeni z paroma naključnih točk v danem kvadratu sekata.
Izvest moram 10 ciklov po 1000 poskusov in izračunati verjetnost in standardni odklon.

Muči me ta verjetnost...

genesiss ::

Klasična definicija verjetnosti: Verjetnost @ Wikipedia

Torej, v enem ciklu imaš n=1000, m=število primerov ko se daljici sekata. P=m/n

Zgodovina sprememb…

  • spremenil: genesiss ()

ktka ::

Ja definicijo verjetnosti poznam. Ampak a ni tisti m vedno 1? Sej se daljici več kot enkrat ne moreta sekati? ALi se motim?

snow ::

m je mišljen kot število kolikokrat od 1000 random poskusov se sekata.
Iz 10 ciklov dobiš 10 verjetnosti iz katerih izračunaš potem SD in povprečno verjetnost.
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins

Randomness ::

Dve daljici se načeloma res lahko sekata le v eni točki (razen, če ne ležita na isti premici). Ti pa moraš pregledati 1000 parov (različnih) daljic in prešteti, koliko je takih parov, kjer se daljici sekata.

ktka ::

Potem moram ločiti 3 primere:
- če sta daljici mimobežnici
- če se končna točka ene daljice nahaja na drugi daljici
- če se daljici sekata
Pri prvih dveh primerih je verjetnost 0, pri tretjem pa 1.
Prav ramzišjam?

In potem? A moram narediti dve zanki? Teh ciklov ne znam, ker jih nismo nikoli uporabljali.

Spura ::

ktka je izjavil:


Pri prvih dveh primerih je verjetnost 0, pri tretjem pa 1.

8-O What? A ti je jasno kaj je to verjetnost? Lej meces kocko in stejes 6ke in mete. Na koncu je verjetnost 6ke stevilo padcev sestke deljeno stevilo vseh metov. Tukaj je isto. Delas pare daljic in gledas ce se sekajo. Verjetnost potem izracunas tako, da stevilo parov daljic ki so se sekale delis s stevilom vseh parov ki si jih naredil.

Randomness ::

Pusti verjetnost pri miru. Tvoja naloga je, da ugotoviš, ali se dve daljici sekata ali ne.

ktka ::

Se opravičujem...mislna sem prov, ampak sem malo poenostavila.
Problem imam, ker ne vem kako nej preverim če sta daljici mimobežnici? oziroma da nimata nobene skupne točke.

Spura ::

Ugotovis ali se premici na katerih sta daljci sekata in ce se premici sekata pogledas ce je presecisce na eni od daljic.

vorantz ::

maš kvadrat nafilan z 0
kjer poteka daljica ++
če je kje vrednost 2 se neki seka

mchaber ::

Kot pomoč lahko mogoče uporabiš koeficient premic nosilk daljic. Skiciraj si, pa bo marsikaj lažje.
.

Mipe ::

vorantz je izjavil:

maš kvadrat nafilan z 0
kjer poteka daljica ++
če je kje vrednost 2 se neki seka


Daljica A
Daljica B

A--B-
-AB--
-BA--
B--A-

Se sekata ali ne? V tvojem primeru ni nobena vrednost več kot 1, čeprav se daljici sekata.

vorantz ::

Mipe je izjavil:

Se sekata ali ne? V tvojem primeru ni nobena vrednost več kot 1, čeprav se daljici sekata.


pa res :s

@OP: sicer pa tle je algoritm lepo razložen (pa še v slovenščini če ti angleščina dela težave)
http://www.nauk.si/materials/5894/out/#...

Zgodovina sprememb…

  • spremenil: vorantz ()

amacar ::

On ne rabi algoritma pometanja, ker preverja le za 2 daljici naenkrat.

Recimo osnovno preveranje. Tu seveda niso zajeti robni primeri, kjer daljici sovpadata ali leži ena na drugi.

Osnova testa je vektorski produkt. Vektorski produkt dveh točk P1(x1, y1) in P2(x2, y2) se glasi:
P1 x P2 = x1*y2 - x2*y1

Glede na predznak rezultata lahko preverimo, ali točki ležita na isti strani daljice (isti predznak) ali na različnih straneh (različna predznaka).
Po urejanju enačb dobimo sledeče:
D = (y4 - y3)*(x2 - x1) - (x4 - x3)*(y2 - y1)
A = (x4 - x3)*(y1 - y3) - (y4 - y3)*(x1 - x3)
B = (x2 - x1)*(y1 - y3) - (y2 - y1)*(x1 - x3)


Definirajmo še dve vrednosti in sicer
UA = A/D
UB = B/D

Najprej preverimo, ali je D enak 0. Če je, sta daljici vzporedni in smo končali. Če nista, preverimo še dva pogoja in sicer:
0 <= UA <= 1
0 <= UB <= 1

Če oba pogoja držita, potem se daljici sekata, zato lahko nadaljujemo z naslednjim korakom, kjer izračunamo točko presečišča.

ktka ::

Imela sem že v mislih tudi vektorski produkt.
Kaj pa je v tem primeru U?

ktka ::

Se opravičujem, če se zdi da sem zelo trda...
Vektorski produkt razumem...sam ne vem kako si prišel do tistih treh enačb?
In zakaj potem preverjamo če sta UA in UB med 0 in 1?
Se res opravičujem ampak bi rada nalogo razumela.
Hvala

Mipe ::

Če obvladaš angleščino, poskusi tole.

ktka ::

Hvala za vse nasvete. S skupnimi močmi sem nalogo uspela narediti.
Zdej pa tebe amacar vprašam: Zakaj je treba A in B deliti z D? oziroma kaj to pomeni v matematičnem smislu?

In zakaj morata biti UA in UB med 0 in 1?

Najlepša hvala.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

enačba krožnice

Oddelek: Šola
121559 (1038) Unilseptij
»

Matematika - pomoč (strani: 1 2 3 )

Oddelek: Šola
10425671 (22246) daisy22
»

[SQL] časovno obdobje

Oddelek: Programiranje
71325 (1153) R33D3M33R
»

[C/C++] Konveksna lupina - brute force

Oddelek: Programiranje
71826 (1700) WarpedGone
»

Program v c++

Oddelek: Programiranje
191933 (1602) Bela01

Več podobnih tem