generoi satunnainen n-ulotteinen pallo

Ajatellaan, että tietokoneohjelmalla, esim. kätevällä ohjelmistopaketti Matlabilla tulee satunnaislukugeneraattorilla generoida n-ulotteinen pallo, jossa n-pallon pinnalla olevat pisteet ovat tilastollisesti tasan jakautuneita n-pallon pinnalle. Laittakaa alkuun edes esim. 3-ulotteinen pallo. Miten tämä onnistuu? Tämä pitäisi saada HY:n tietojenkäsittelyn Graduun.

Löytyykö tähän yksinkertaista Matlab-koodia?
7<50
Äänestä

Muut lukivat myös

Vastaukset 7

Vanhimmat

Hmm. Mitä tarkoittaa "pisteet ovat tilastollisesti tasan jakautuneita n-pallon pinnalle"? Minusta pisteistä tulisi muodostaa joku numeerinen suure, ja näiden kokoelmasta voisi puhua tasajakautuneisuudesta tai ei.

Minusta gradut tulisi tehdä itse eikä keskustelupalstojen avulla. Jos on ongelmia, pikku-g:n ohjaaja varmaankin auttaa eteenpäin.

Äänestä

Käytetään hyväksi sitä, että n-ulotteinen normaalijakaantuma on pallosymmetrinen. Sen tiheysfunktiohan on muotoa k * exp(-(1/2) * (x1^2 x2^2 ... xn^2)).

Kun on muodostettava satunnaisia tasan jakaantuneita pisteitä R^3:n yksikköpallon pinnalle, määrätään kutakin pistettä kohti N(0,1)-normaalijakaantuneet toisistaan riippumattomat luvut X1, X2 ja X3. Normitetaan vektorin (X1, X2, X3) pituudeksi 1, jolloin saadaan yksikköpallon pinnan piste.

Äänestä

Matlabilla tämä menee esimerkiksi 10-ulotteiselle pallolle, kun näytevektoreita on N=1000 kpl:

n=10; N=1000; x=randn(n,N); for k=1:N, xnormalized(:,k)=x(:,k)/norm(x(:,k)); end

Seuraavasta nähdään, että kaikkien generoitujen normeerattujen vektoreiden normi=1 eli ne ovat pallon pinnalla

for k=1:N, norm(xnormalized(:,k)), end

Äänestä
  • Mutta ei kai tuo takaa tasajakaumaa? Eiko tuo vain laita pallolle 1000 pistettä?

    Äänestä

  • epäilevä kirjoitti:

    Mutta ei kai tuo takaa tasajakaumaa? Eiko tuo vain laita pallolle 1000 pistettä?

    Kyllä takaa tilastollisessa mielessä, kunhan Matlabin randn-funktio generoi normaalijakautunutta dataa kyllin luotettavasti. Siis yksi (3-ulotteinen) vektori lankeaa tilastollisesti yhtä luotettavasti niin New Yorkin, Pariisin kuin Helsinginkin kohdalle. Millä perusteella sinulla voi olla tähän epäilys?

    Äänestä

  • Ajattelin, että jos pisteitä on vain muutama, niin pisteet eivät ole välttämättä tasan jakautuneita. En tiedä, haluaako alkuperäinen kysyjä kehittää sellaisen algoritmin, joka levittää myös pienen määrän pisteitä tasaisesti pallolle vai riittääkö, että tilastollisesti iso määrä pisteitä jakautuu suht tasaisesti. Jostain luin, että ainakin 1990-luvulla oli avoin ongelma, miten n pistettä jaetaan yksikköpallon pinnalle siten, että eri pisteiden välinen lyhin etäisyys olisi mahdollisimman suuri. En tiedä, tekeekö J.Vaelimaeki tästä aiheesta gradua.

    Äänestä

  • epäilevä kirjoitti:

    Ajattelin, että jos pisteitä on vain muutama, niin pisteet eivät ole välttämättä tasan jakautuneita. En tiedä, haluaako alkuperäinen kysyjä kehittää sellaisen algoritmin, joka levittää myös pienen määrän pisteitä tasaisesti pallolle vai riittääkö, että tilastollisesti iso määrä pisteitä jakautuu suht tasaisesti. Jostain luin, että ainakin 1990-luvulla oli avoin ongelma, miten n pistettä jaetaan yksikköpallon pinnalle siten, että eri pisteiden välinen lyhin etäisyys olisi mahdollisimman suuri. En tiedä, tekeekö J.Vaelimaeki tästä aiheesta gradua.

    Itse lähden olettamuksesta, että aloittaja haluaa tehdä jonkun tietokonesimulaation, jossa tilastollisesti iso määrä pisteitä jakautuu suhteellisen tasaisesti. Oletan, että tämä liittyy johonkin tieteellisen tyyppiseen tutkimukseen. BTW: Matlab on tosi hyvä ohjelmistopaketti tehdä tutkimus- ja tuotekehitystyötä. Esimerkiksi Nokia Research Centerissä on käytetty paljon Matlabia, vaikka se ei pärjää käytännön reaaliaikateknologiassa mitenkään C :lle, Javalle jne.

    Äänestä

Kommentoi aloitusta


J.Vaelimaeki kirjoitti:

Ajatellaan, että tietokoneohjelmalla, esim. kätevällä ohjelmistopaketti Matlabilla tulee satunnaislukugeneraattorilla generoida n-ulotteinen pallo, jossa n-pallon pinnalla olevat pisteet ovat tilastollisesti tasan jakautuneita n-pallon pinnalle. Laittakaa alkuun edes esim. 3-ulotteinen pallo. Miten tämä onnistuu? Tämä pitäisi saada HY:n tietojenkäsittelyn Graduun.

Löytyykö tähän yksinkertaista Matlab-koodia?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu