[prev in list] [next in list] [prev in thread] [next in thread]
List: ruby-talk
Subject: Re: Ruby math: Newton's Law of Cooling
From: ts <decoux () moulon ! inra ! fr>
Date: 2004-02-01 15:14:14
Message-ID: 200402011514.i11FE9A17382 () moulon ! inra ! fr
[Download RAW message or body]
>>>>> "T" == Theodore Knab <tjk@annapolislinux.org> writes:
T> http://scienceworld.wolfram.com/physics/NewtonsLawofCooling.html
T> t = time
T> T = changing temp of object
T> T_s = temp of surrounding environment
T> T_0 = initial temperature of the object
T> K = an experimental constant that has to do with water and surface area
T> T(t) = T_s + (T_0 - T_s)e^(-Kt)
well, the problem is that K is an experimental constant and must be
computed. To compute it, you must know the value of T at 2 differents
times, say t0 and t1.
This will give you the relation given in (7)
K = 1/t1 * ln((T0 - Ts) /(T1 -Ts))
then to find the time needed to reach T2, you have the equation (8)
t2 = t1 * (ln((T0 - Ts)/(T2 - Ts))/ln((T0 - Ts)/(T1 - Ts)))
which translated in ruby is just
t2 = t1 * (Math::log((T0 - Ts)/(T2 - Ts))/Math::log((T0 - Ts)/(T1 - Ts)))
this give something like this
svg% cat b.rb
#!/usr/bin/ruby
T0 = 12.0 # initial temperature
Ts = -6.0 # surrounding temperature
T1 = 6.0 # temperature after 60s
D1 = 60.0 # time to reach T1
def reach(t)
D1 * Math::log((T0 - Ts)/(t - Ts)) / Math::log((T0 - Ts)/(T1 - Ts))
end
p reach(6) # time to reach 6 (it must give D1)
p reach(0) # time to reach 0
svg%
svg% b.rb
60.0
162.570677481087
svg%
Guy Decoux
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic