simularea realitatii virtuale
Last Updated: May 03 2019 20:36, Started by
karax
, Apr 27 2019 11:57
·
0
#1
Posted 27 April 2019 - 11:57
Ok exista simulatoare de realitate , la universitati in fizica computationala cat si in jocuri si alte aplicatii. Dar aceste simulari sunt nerealiste pentru ca nu poti simula interactiunea unei placi de 1 m patrat de o anumita componenta cu un laser , pur si simplu pentru ca sunt prea multe date. Numai intr-o singura molecula sunt miliarde de atomi , ori probabil ca sa simulezi interactiunea fotoni-1 metru de metal trebuie calculate interactiunile a trilioane de trilioane de trilioane de trilioane de trilioane de atomi sau ceva de genul....
Nici macar pe un supercomputer nu se poate simula o astfel de realitate , pentru ca un CPU ajunge maxim la 3 miliarde de tranzistori , din care 8 iti ia ca sa ai un caracter , pentru 1 obiect cum ar fi o banala particula iti trebuie o multime de tranzistoare ....trebuiesc definite fortele fundamentale , intercatiunile , bagate formule etc etc si asta pentru fiecare obiect-atom sau obiect-molecula in parte ori chiar obiect-particula in parte (presupun ca avem OOP - object oriented programming). Chiar si daca am avea 100 000 de CPU-uri tot nu am ajunge la acel metru de placa ...nici macar la cativa centimetri .... Tocmai de aceea eu m-am orientat mai mult pe imbunatarirea algoritmilor pentru a ajunge la capaciatea aceea de a simula realitatea. Am plecat de la ideea ca o inmultire este o adunare repetata. De aici ma gandesc si ca interactiunile fotoni-atomi pot fi calculate astfel. Avem interactiunea foton-atom din care 1 singur foton sa zicem ca ricoseaza spre alti atomi. ca atare simularea nu se poate rezuma la un singur atom. Insa putem face calculul unei simetrii perfecte, in care fiecare atom are fix acelasi comportament, si dispersia luminii este fix aceeasi in toti atomii acelei placi de 1 metru. Ca atare am avea acelasi atom multiplicat de trilioande de ori. Insa am putea sa dam un coeficient de asimetrie. Adica daca adaugam o asimetrie de 0,001% in care putini fotoni ricoseaza altfel , calculul final devine diferit. De aia la formula initiala aia de simetrie perfecta se face un calcul de invers proportionalitate sau ceva , in asa fel incat asimetria creste fix cu cat se schikba formula initiala aia de simetrie perfecta. Astfel pentru a calcula simetria perfecta as lua regulile de combinari https://matematicape...ate-cate-k.html Cu diferenta ca eu in loc sa merg 100% numai pe adunare as face o formula care la cateva grupuri anume de atomi sa se faca SCADERE , astfel incat numerele finale rezultate sa nu fie prea mari. Nu stiu cat de eficienta ar fi o astfel de formula insa ma gandesc ca ar fi la final ceva de genul +10-10 care se anuleaza si iti da un rezultat pe care tu il poti compensa cu fix cat la % era daca se facea numai prin adunare si ti-ar da interactiunile finale. Evident formula ar fi una lunga si ar insemna ceva calcule insa s-ar putea face si cu procesoare normale. La o anume asimetrie , adica o interactiune neliniara fotoni-placa aia de 1 metru, se va calcula o noua formula bazata tot pe combinari , insa adaugat sau scazut invers proportional cu cat e diferenta fata de simetria perfecta. problema apare daca se vrea a se obtine rezultatul interactiunii intr-un loc anume. caz in care formula trebuie sa aiba drept rezultat acel loc. Pornim dinspre centru sa zicem cu formula si compensam interactiunile ca si cum am fi intr-un plan 2d. stiind ca interactiunile sunt simetrice si pornim spre asimetrie in formula ar trebui sa se vada. repetabilitatile si numerele bagate in combinari ar trebui sa respecte si ordinea asezarilor si interactiunilor atomice si nucleare. astfel incat in formula calculand si compensand se va respecta la final si locul unei anume interactiuni calculate. Un exemplu absolut banal ar fi in genul 10(rezultanta interactiunilor atomului din centru) - 13 (rezultanta interactiunilor atomului imediat la dreapta) - 10(rezultanta celui de-al 3 lea atom imediat la dreapta care are interactiunea ca si primul). Sau si mai complicat de genul : combinari de 10 luate cate 5 de rezultante ale interactiunilor atomilor cu fotoni la unghi x - combinari de 10 luate cate 5 de rezultante ale interactiunilor atomilor cu fotoni la unghi y impartit (sa zicem) la din cat in cat sunt atomii de diferite interactiuni. Si mai complicat ar fi de genul : (combinari de 10 luate cate 5 de rezultante al interactiunilor atomilor cu fotoni la unghi x + 2 fotoni deviati de la atomul alaturat ) + (combinari de 10 luate cate 5 de rezultante ale interactiunilor atomilor cu fotoni la unghi y +3 fotoni deviati de la atomul alaturat). Astea sunt exemple oarecum la nimereala insa in genul asta as face. Fiecare respectand locul si pozitia lor pe acel metru de placa in formula. si in rezultatul final trebuind sa respecte locul lor. Si cu chestia ca as folosi si scaderi nu numai adunari pentru ca numerele finale sa nu fie asa mari. si pentru a putea calcula astfel de combinari cu cifre cat mai putine. |
#2
Posted 27 April 2019 - 12:04
Realitatea virtuală este o simulare a realității. Tu ai găsit un procedeu prin care să simulezi simularea realității. Awesome!
Pentru orice fel de simulare, ai nevoie de IA. Niciun om nu poate anticipa variabilele apărute. Doar o IA poate lucra în timp real și, exact ca in realitate, să creeze, nu tot, ci doar ce vezi tu. |
#3
Posted 27 April 2019 - 12:04
#4
Posted 27 April 2019 - 12:12
maccip, on 27 aprilie 2019 - 12:04, said:
Ce? oricum daca e sa o luam asa pe un cm2 de substanta oare cati atomi sunt? miliarde si miliarde YOUR_GOD, on 27 aprilie 2019 - 12:04, said:
Realitatea virtuală este o simulare a realității. Tu ai găsit un procedeu prin care să simulezi simularea realității. Awesome! Pentru orice fel de simulare, ai nevoie de IA. Niciun om nu poate anticipa variabilele apărute. Doar o IA poate lucra în timp real și, exact ca in realitate, să creeze, nu tot, ci doar ce vezi tu. Edited by karax, 27 April 2019 - 12:10. |
#5
Posted 27 April 2019 - 12:17
Incepe cu ceva simplu: fa o animatie cat mai precisa a miscarii unei mingi aruncate in sus pe verticala. Dupa ce-ti iese asta, discutam si de altele mai avansate.
|
#6
Posted 27 April 2019 - 12:20
karax, on 27 aprilie 2019 - 11:57, said:
Tocmai de aceea eu m-am orientat mai mult pe imbunatarirea algoritmilor pentru a ajunge la capaciatea aceea de a simula realitatea. Am plecat de la ideea ca o inmultire este o adunare repetata. Daca tot ai adus in discutie inmultirea, stii care-i complexitatea ei? Daca o faci prin adunari repetate, e cel mai prost mod de a o face. Complexitatea ei e exponentiala raportata la cantitatea de biti sau numarul de cifre zecimale. La scoala ai invatat un algoritm cu mult mai eficient, ala de inmultesti cu cate o cifra, asezi rezultatele unele sub alte shiftate si apoi adunate. Complexitatea e patratica. Dar exista algoritmi si mai buni. De amorul artei cauta algoritmul lui Strassen pentru matrici. E un exemplu bun de reducere a complexitatii la inmultire, el se poate adapta si pentru inmultirea numerelor obisnuite, nu doar pentru matrici, folosinf Transformata Fourier Discreta si alforitmul FFT, un algoritm fundamental in algoritmica numerelor. Exista si algoritmi mai buni, dar isi arata eficienta abia la numere colosale, cu miliarde de cifre semnificative. Si exista si o limita teoretica, nu stiu daca a fost gasit pentru inmultire pentru cazul general. Apoi exista si algoritmi hardware ca o subclasa a algoritmilor. Studiul tuturor acestor chestii insamna de fapt optimizare. Ce zici? Te bagi? Cartea de baza e arta programarii calculatoarelor a lui Donald Knuth. Eu am doar 1 volum, cautare si sortare. Desi am cumparat-o acum 15 ani, nu am reusit sa trec nici macar de sfertul ei decat frunzarind-o. Dar daca vrei sa faci ceva serios in domeniul algoritmilor, trebuie neaparat sa parcurgi toata cartea, sa faci toate exercitiile de acolo care numai usoare nu sunt. Edited by maccip, 27 April 2019 - 12:24. |
#7
Posted 27 April 2019 - 12:25
#8
Posted 27 April 2019 - 12:26
dani.user, on 27 aprilie 2019 - 12:17, said:
Incepe cu ceva simplu: fa o animatie cat mai precisa a miscarii unei mingi aruncate in sus pe verticala. Dupa ce-ti iese asta, discutam si de altele mai avansate. Pana atunci pot spune doar urmatoarele vizavi de problema pusa de tine: 1 trebuie luat in considerare ca daca vrei un model aproximativ, atunci trebuie sa punem o simetrie a interactiunilor. Astfel avem constanta de atractie gravitationala (se neglijeaza alte forte precum vantul si variatia temperaturii in modelul cerut de tine?) care se aplica in mod simetric asupra fiecarui atom din aceasta minge , pe care o consideram uniforma in ceea ce priveste componenta ei si dispunerea straturilor. 2 se aplica o invartire sau nu a mingiei (dupa cum doresti sa fie simularea) si efectul atractiei gravitationale asupra fiecarui atom, tinand cont ca vectorii linie ai atractiei gravitationale isi schimba unghiul de actiune asupra fiecarui atom in timpul invartirii astfel rezultanta actiunilor este calculata in functie de fiecare unghi. 3 se ia sau nu in considerare aerul din interiorul mingiei? |
#9
Posted 27 April 2019 - 12:28
#11
Posted 27 April 2019 - 12:34
maccip, on 27 aprilie 2019 - 12:20, said:
Pai te-ai orientat bine, dar stii ce-i aia complexitate a unui algoritm? Daca tot ai adus in discutie inmultirea, stii care-i complexitatea ei? Daca o faci prin adunari repetate, e cel mai prost mod de a o face. Complexitatea ei e exponentiala raportata la cantitatea de biti sau numarul de cifre zecimale. La scoala ai invatat un algoritm cu mult mai eficient, ala de inmultesti cu cate o cifra, asezi rezultatele unele sub alte shiftate si apoi adunate. Complexitatea e patratica. Dar exista algoritmi si mai buni. De amorul artei cauta algoritmul lui Strassen pentru matrici. E un exemplu bun de reducere a complexitatii la inmultire, el se poate adapta si pentru inmultirea numerelor obisnuite, nu doar pentru matrici, folosinf Transformata Fourier Discreta si alforitmul FFT, un algoritm fundamental in algoritmica numerelor. Exista si algoritmi mai buni, dar isi arata eficienta abia la numere colosale, cu miliarde de cifre semnificative. Si exista si o limita teoretica, nu stiu daca a fost gasit pentru inmultire pentru cazul general. Apoi exista si algoritmi hardware ca o subclasa a algoritmilor. Studiul tuturor acestor chestii insamna de fapt optimizare. Ce zici? Te bagi? Cartea de baza e arta programarii calculatoarelor a lui Donald Knuth. Eu am doar 1 volum, cautare si sortare. Desi am cumparat-o acum 15 ani, nu am reusit sa trec nici macar de sfertul ei decat frunzarind-o. Dar daca vrei sa faci ceva serios in domeniul algoritmilor, trebuie neaparat sa parcurgi toata cartea, sa faci toate exercitiile de acolo care numai usoare nu sunt. Insa e clar ca ceva ceva stiu eu si caut ceva anume, pe care nu il pot exprima acum.... vedem peste 1 an cand se pare ca o sa imi opreasca injectiile. De vrut sa ma bag normal ca vreau numai ca nu stiu cat de mult pot recupera din materiile astea care sunt si foarte grele. De curiozitate zi-mi si mie cam ce fel de matematica trebuie sa invat pentru a ma pricepe la optimizari de genul? in rest , stiu si eu, daca la varsta asta mai pot invata ceva ce n-am invatat ani de zile? si cat sa ai ambitie sa inveti pe zi ca sa recuperezi? deci e greu.... |
#12
Posted 27 April 2019 - 12:36
Optimizari faci cand ceva merge prea greu/lent. Prima data trebuie sa faci sa treci de pasul "merge".
|
#13
Posted 27 April 2019 - 12:37
Quote De curiozitate zi-mi si mie cam ce fel de matematica trebuie sa invat pentru a ma pricepe la optimizari de genul? Tratat de programare a calculatoarelor a lui Donald Knuth e cu algoritmică nu e cu matematică. am: 'Algoritmi seminumerici ', 'Sortare și căutare' și 'Algoritmi fundamentali ' (zis Arta Programării calculatoarelor) Edited by jobist, 27 April 2019 - 12:46. |
#14
Posted 27 April 2019 - 12:40
@karax , la ce ora ti-a zis medicul sa iti iei medicamentele?
|
#16
Posted 27 April 2019 - 12:57
Adica vrei sa fii un autodidact?
In scoala inveti lucrurile pas cu pas, programa e facuta astfel incat sa nu ai lacune de cunoastere, daca inveti tot ce ti se cere. Optimizarea algoritmilor? Ti-am spus, incepe cu Knuth. In cartea lui Knuth ai prezentata toata harababura matematica de care ai nevoie, eventuale lacune le poti completa rapid pe wikipedia, daca simti ca e ceva ce nu intelegi. Si dupa ce ai citit un capitol, ai de facut problemele aferente. Sunt si cateva exemple si.. in rest n-ai nevoie de cat de pura inteligenta si munca individuala. Se gasesc rezolvarile si in carte si pe net, deci te poti verifica. Dupa ce terminii toata cartea, iti garantez eu ca ai o baza solida pentru a intelege un algoritm. Insa, tot trebuie sa intri in zona aia, tre sa cunosti un limbaj de programare sa implementezi ceva de test. Eu de exemplu am implementat(partial + impreuna cu altcineva) o biblioteca de lucru cu imagini de mari dimensiuni (gen 200MB-2GB), operatiuni raster geometrice si radiometrice care sa completeze biblioteca GDAL in vederea corelarii imaginilor. Biblioteca GDAL nu putea lucra cu imagini poligonale de foarte mari dimensiuni sau cu foarte multe vertexuri ale poligoanelor. Cerinta a venit de la un coleg, m-am implicat si eu si impreuna cu el(ghidat de el), am gandit cativa algoritmi, cel mai mult aport propriu a fost la operatiunile de intersectare a unor poligoane (concave) cu (posibil) milioane de vertexuri suprapuse peste un raster de mari dimensiuni (zeci de miliarde de pixeli). Era nevoie de asa ceva pentru optimizarea unor operatii de corelare a imaginilor pentru a scoate valorile paralaxelor in aerofotografierea stereografica multispectrala. Am folosit o multime de concepte, inclusiv arbori de sortare (Red-Black Tree implementat de mine), TIN/Delaunay (Triangular Irregular Network), implementat de mine, am implementat inclusiv un soi de gramatica booleana (metode care primeau drept argument un arbore reprezentand o expresie booleana). arbore quad (structura raster grosiera, ceva asemanatoare cu piramida imaginilor) Deci.. depinde de ce vrei sa faci. Pentru ce am spus eu, nu-i nevoie de o matematica colosala, e nevoie insa sa cunosti un limbaj de programare, sa intelegi functionarea conceptelor de programare pe obiecte, sa aplici algoritmi inventati de altii, nu sa reinventezi roata. Dar sa intelegi inainte de a implementa care va fi viteza de executie, sa stii unde sa optimizezi, care e bucla critica.. chestii de-astea. Edited by maccip, 27 April 2019 - 13:00. |
#17
Posted 27 April 2019 - 13:04
dani.user, on 27 aprilie 2019 - 12:17, said:
Incepe cu ceva simplu: fa o animatie cat mai precisa a miscarii unei mingi aruncate in sus pe verticala. Dupa ce-ti iese asta, discutam si de altele mai avansate. karax, on 27 aprilie 2019 - 12:12, said:
ba deloc..vreau sa simulez direct realitatea , nu sa fac separat o simulare a unei simulari.... Tu știi exact ce vrei? Discuția acestea pare că-și formează subiectul pe parcurs. Și eu ciudat... |
#18
Posted 27 April 2019 - 13:17
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users