Re: Balance point of a solid
- To: mathgroup at smc.vnet.net
- Subject: [mg113812] Re: Balance point of a solid
- From: Ray Koopman <koopman at sfu.ca>
- Date: Sun, 14 Nov 2010 06:08:16 -0500 (EST)
- References: <iam332$jvn$1@smc.vnet.net> <ibgj10$ec3$1@smc.vnet.net> <ibj4pb$fik$1@smc.vnet.net>
On Nov 12, 2:26 am, Ray Koopman <koop... at sfu.ca> wrote: > On Nov 11, 3:11 am, Andreas <aa... at ix.netcom.com> wrote: > >> Daniel, Ray, Clifford -- Many thanks for the thought provoking >> contributions. >> >> Ray and others have found using integration on this problem takes >> inordinately long to calculate once you get to 5 dimensions. >> >> Could one attack this problem in another way? It occurred to me >> that given that we know the lengths of the base simplex and heights >> of the trapezoids as well as the right angles of the heights to the >> base simplex one could then calculate the length of the top lines and >> solve the entire thing geometrically without needing to integrate. >> Not necessarily pretty or elegant but it might give give a solution >> that calculates fast. >> >> Anyone think this could work? > > The solution I found, rewritten here in the notation of my Nov 5 > post as ((h/Tr@h + 1)/(1 + Length@h)).A , is fast and agrees > with the results given by integrating. What's missing is a proof. Here's a different approach to integrating. 'h' does not need to be ordered. Perhaps it will suggest a proof of the 'fastcmass' formula. In[1]:= h = {1,2,3,4} n = Length@h; A = Transpose[Prepend[#,0]& /@ CholeskyDecomposition[(IdentityMatrix[n-1]+1)/2]] fastcmass = Simplify[((h/Tr@h + 1)/(1 + n)).A] Out[1]= {1,2,3,4} Out[3]= {{0,0,0}, {1,0,0}, {1/2,Sqrt[3]/2,0}, {1/2,1/(2 Sqrt[3]),Sqrt[2/3]}} Out[4]= {51/100,53/(100 Sqrt[3]),(7 Sqrt[2/3])/25} In[5]:= vars = Append[Array[x,n-1],1] w = Simplify@LinearSolve[Append[Transpose@A,Table[1,{n}]], vars] Out[5]= {x[1],x[2],x[3],1} Out[6]= {1-x[1]-x[2]/Sqrt[3]-x[3]/Sqrt[6], x[1]-x[2]/Sqrt[3]-x[3]/Sqrt[6], (2 x[2])/Sqrt[3]-x[3]/Sqrt[6], Sqrt[3/2] x[3]} In[7]:= cmass = Most@#/Last@#& @ Integrate[Boole[And@@Thread[w >= 0]] * w.h * vars, Sequence@@Array[{x[#],0,Max@A[[All,#]]}&,n-1]] Out[7]= {51/100,53/(100 Sqrt[3]),(7 Sqrt[2/3])/25}