Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # tetrahedrons in dim-dimensional space
- using LinearAlgebra,Random,Distributions
- # Juhani Kaukoranta 18.12.2023
- function TetrahedronVolume(d12,d13,d14,d23,d24,d34)
- m = [0 1 1 1 1; 1 0 d12^2 d13^2 d14^2;1 d12^2 0 d23^2 d24^2; 1 d13^2 d23^2 0 d34^2; 1 d14^2 d24^2 d34^2 0]
- return sqrt(1/288*det(m))
- end
- function tahko(a,b,c)
- # laskee tahkon pinta-alan
- p = (a+b+c)/2 # tahkon sivut
- return sqrt(p*(p-a)*(p-b)*(p-c))
- end
- function TetrahedronArea(d12,d13,d14,d23,d24,d34)
- return sum([tahko(d12,d13,d23) tahko(d12,d14,d24) tahko(d23,d24,d34) tahko(d13,d14,d34)])
- end
- function mDballtetrahedrons(dim,n)
- # dim = ulottuvuus, n = tetraedrien lukumäärä
- Volume = 0 # tetraedrien tilavuuksien summa
- Ala = 0 # tetraedrien pinta-alojen summa
- for i = 1 : n
- r = rand(4) .^(1/dim) # uniformjakauman dim-juuresta säteet
- u = randn(4,dim) # 4 kpl m-ulotteista normaalijakatunutta kärkipistettä
- norm1 = norm(u[1,:]) # kärki P1 normi
- norm2 = norm(u[2,:]) # kärki P2 normi
- norm3 = norm(u[3,:]) # kärki P3 normi
- norm4 = norm(u[4,:]) # kärki P4 normi
- normi = [norm1;norm2;norm3;norm4]
- x = @. r * u / normi # 4 normitettua m-ulotteista muuttujaa
- P1 = x[1,:] # tetraedrin kärkipiste (m kpl koordinaatteja)
- P2 = x[2,:] # tetraedrin kärkipiste
- P3 = x[3,:] # tetraedrin kärkipiste
- P4 = x[4,:] # teraedrin kärkipiste
- d12 = norm(P1-P2) # tetraedrit sivujen pituudet
- d13 = norm(P1-P3)
- d14 = norm(P1-P4)
- d23 = norm(P2-P3)
- d24 = norm(P2-P4)
- d34 = norm(P3-P4)
- Volume += TetrahedronVolume(d12,d13,d14,d23,d24,d34)
- Ala += TetrahedronArea(d12,d13,d14,d23,d24,d34)
- end
- println(n," tetraedria satunnaisesti arvottuna ",dim,"-ulotteisen yksikköpallon sisälle")
- println("Tedraedrien tilavuuksien keskiarvo = ", Volume/n)
- println("tetraedrien kokonaispinta-alan keskiarvo =",Ala/n)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement