Jump to content

Theory

From Luter 345 Experiments
File:CNUPendulum.jpg

The Purpose[edit]

The purpose of the Kater Pendulum experiment is to measure the local value of gravity, g.

The Device[edit]

Kater’s pendulum is a physical pendulum composed of a metal rod with two knife edge pivots towards each end of the rod. The exact location of the knife edges, relative to the ends of the rod, is not of extreme importance, as long as they are relatively symmetrical. However, the distance between the knife edges must be measured precisely* enough to achieve the level of accuracy desired in the experiment. There is a weight attached to each end of the pendulum. These two masses are of different weights. This is done intentionally and is the reason Kater's Pendulum works. The pendulum can be suspended by the knife edges and set to swinging by resting either knife edge on a flat, level surface in the small mass down (SMD) and small mass up (SMU) orientations. The "large" weight is attached at a fixed position and the small weight is adjustable. This adjustment allows the pendulum's period to be adjusted. As an improvement to the pendulum design, a thin "needle" has been attached to each end of the pendulum. As the period must be measured very precisely (see Uncertainties), these "needles" allow for a smaller angle of oscillation while still allowing the pendulum to pass through a photogate.

The Theory[edit]

File:KaterPendulum.png

When displaced, the restoring force acting on the pendulum is:

τ=MTgh1sinθ

With θ being the angle of displacement and the pendulum orientated small mass down (SMD), MT being the total mass of the system, g being local gravity, and h1 being the distance from the pivot to the center of mass of the system. Applying Newton's Second Law rotational analog results in:

MTgh1sinθ=θ¨𝕀smd

Where 𝕀smd is the moment of inertia. Of course, when θ is small, the resulting equation can be simplified to:

θ¨+MTgh1𝕀smdθ=0

Solving the differential equation results in:

θ=Acos(ω0t)+Bcos(ω0t)

Where:

ω0=MTgh1𝕀smd

resulting in:

Tsmd=2π𝕀smdMTgh1

Where, Tsmd is the period in the SMD orientation. Similarly, we can solve for the pendulum in the small mass up (SMU) orientation which results in:

Tsmu=2π𝕀smuMTgh2

An application of the parallel axis theorm results on the equations:

𝕀smd=𝕀cm+MTh12

and

𝕀smu=𝕀cm+MTh22

Where 𝕀cm is the moment of inertia about the center of mass. By substituting these equations into our previous equations for T we get:

Tsmd=2π𝕀cm+MTh12MTgh1

and

Tsmu=2π𝕀cm+MTh22MTgh2

Now, if we can find a small mass position such that our period is the same in both the SMU and SMD orientation, we can set these equations equal to one another and solving for 𝕀cm we find:

𝕀cm=MTh1h2

Substituting this value into either equation for period results in:

T=2πh1+h2g

And, since the distance, l, between the pivots is the sum of h1 and h2 and we know this distance very well, we can write:

T=2πlg

or

g=4π2lT2

With this relationship, all we need to determine g is, the period of Kater's pendulum when the small mass is adjusted such that the period when swung in the SMU orientation is identical to the period in the SMD orientation.

Some points to consider are if the weights are of different volume -which in our current pendulum, they are- their cross-sectional area will affect results due to air resistance. Also, if the weights are positioned very asymmetrically, the effect of air resistance will affect the results. The small angle approximation has been used to determine the values and the data should be corrected for this.

A Starting Estimation from First Principles[edit]

File:KaterPendulum.png

If we know the geometry and make up of the pendulum with a reasonable degree of accuracy, we are able to calculate where the small mass should be position so that it will produce the same period in the SMU and SMD orientation.

Variable Definitions[edit]

M weight of large mass
m weight of small mass
Mbar weight of bar
MT=M+m+Mbar total weight
Lbar length of bar
g gravity
Rm radius of small mass
RM radius of large mass
radius of gyration
𝕀 moment of inertia

Equation of Center of Mass[edit]

x=Ml1ml2M+m+Mbar

Equations from the Pendulum Measurements[edit]

D=h1+h2
h2x=D2
h1+x=D2

Combining these equations results in:

x=h2h12

Equations of Period and Moment of Inertia[edit]

Ti2=4π2g(𝕀iMThi)
𝕀i=MT(2+hi2)
Ti2=4π2g(hi2+2hi)

if T1=T2 then:

h12+2h1=h22+2h2
h1h2=2
𝕀cm=2(MT)
𝕀cmsys=𝕀Mcm+𝕀mcm+𝕀barcm
𝕀Mcm=12MRM2+M(l1x)2
𝕀mcm=12mRm2+m(l2+x)2
𝕀Mbar=𝕀bar+Mbarx2
𝕀bar=112MbarL2

All of which result in:

h1h2=1M+m+Mbar[12MRM2+M(l1x)2+12mRm2+m(l2+x)2+112MbarL2+Mbarx2]

This is a somewhat difficult equation to solve. However, with the power and speed of modern computing, we don't have to. The following is a piece of code that finds a solution iteratively.

Iterative Solution[edit]

#include <iostream>
#include <TMath.h>
void solve() {
    // Author: Edward J. Brash
    TCanvas *c1 = new TCanvas("c1","Kater's Pendulum",800,800);
    c1->SetFillColor(42);
    c1->SetGrid();
    double x, M, m, Mbar, l1, h1, h2, D, L, rhs, lhs, Icm;
    double l2[1000],t1[1000],t2[1000];
    double g=9.810;
    double Pi=3.14159265;
    M=1.35928;
    m=0.72705;
    Mbar=2.90;
    D=0.9990;
    L=1.523;
    l1=D/2.0+0.0135+0.047523;
    double diff=1.0e99;
    double olddiff=1.0e99;
    int index=0;
    for(int i=0; i<1000; i++){
        l2[i]=0.500+(i/1000.0)*0.250;
        x=(M*l1-m*l2[i])/(M+m+Mbar);
        h2=D/2.0+x;
        h1=D/2.0-x;
        rhs=h1*h2;
        Icm=1.0/12.0*Mbar*L*L+Mbar*x*x+M*(l1-x)*(l1-x)+m*(l2[i]+x)*(l2[i]+x);
        lhs=Icm/(M+m+Mbar);
        diff = rhs-lhs;
        if (fabs(diff)<olddiff){olddiff=diff;index=i;}
        t1[i]=2*Pi*sqrt((h1*h1+lhs)/(g*h1));
        t2[i]=2*Pi*sqrt((h2*h2+lhs)/(g*h2));
        cout << l2[i] << " " << t1[i] << " " << t2[i] << endl;
        //cout << "i = "<<i<<" l2 = "<<l2[i]<<" rhs = "<<rhs<<" lhs = "<<lhs<<endl;
    }
    cout << "L2 position = " << l2[index] << " L1 position = " << l1 << endl;
    cout << "Predicted period T = " << t1[index]<< endl;
    TGraph *gra = new TGraph(1000,l2,t1);
    TGraph *grb = new TGraph(1000,l2,t2);
    gra->Draw("AP");
    grb->Draw("P");
    c1->Update();
    c1->GetFrame()->SetFillColor(21);
    c1->GetFrame()->SetBorderSize(12);
    c1->Modified();
}