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}