Gompertz Equation 

 

 

by Reinaldo Baretti Machín

and Alfonso Baretti Huertas

  Free counter and web stats

 

home page: 

http://www1.uprh.edu/rbaretti

http://www1.uprh.edu/rbaretti/methodsoftheoreticalphysics.htm

 

References:

1. http://www.math.uic.edu/~tier/Math419/Tumor/Notes/gompertz.html

 

Abstract. We provide a numerical FORTRAN code to solve the system of DE known as Gompertz equations.

The Gompertz equation can be used to describe the growth  of numerous tumors.

The volume of a tumor may grow at a rate r ~ 1/time

  d V(t) /dt = r(t) V(t)    , with specified initial volume    V(0)= V0 ~ length3                       .     ( 1)

However the rate r may also decay in time like

 d r(t) /dt = - α r(t )       α ~ 1/time  with      IC   r(0) = β ~ 1/time       .                          (2)

 

The analytical solution is , where α is assumed to be constant ,

                                    V(t) = V0 exp {(β /α) ( 1- exp(-αt) ) }             .  ( 3)

There two time scales in the problem

 tscale1 = 1/α    , tscale2 = 1/β .  Equations (1) and (2) have solutions

V(tn) = V(tn-1 ) +  (∆t) r (tn-1 ) V(tn-1 )                                          ,      ( 4)

r(tn) = r(tn-1 )  - α  (∆t)  r(tn-1 )                                               .            (5)

The choice of ∆t must be smaller than the smallest of   tscale1  and  tscale2 .

 

Example :

Let  α  =1/.01 days-1 , β = .04 days-1  and  V0 = 5.0 cm3 .Find V(t) , solving  the set of eqs (4) -(5) .

The time scales are  tscale1 = 100 days   ,  tscale2 = 25 days .

 

The results show a  growth from V0 = 5 cm3 (radius ≈ 1.1 cm )   to  V = 253 cm3 ( radius ≈ 3.9 cm ) in 399 days.

The numerical solution matches very well the analytical calculation.

Fig 1. Tumor growth according to Gompertz equation.

FORTRAN code

c The Gomperz equation
c Ref http://www.math.uic.edu/~tier/Math419/Tumor/Notes/gompertz.html
c dV/dt = r(t) * V(t) ; dr/dt = alpha*r(t) ;IC V(0)-V0 ; r(0)= beta
c alpha ~ 1/time , beta ~ 1/time
data alpha , beta , vzero/.01 , .04 , 5. /
vgom(t)= vzero*exp( (beta/alpha)*(1.-exp(-alpha*t) ) )
tscale1=amin1(1./alpha,1./beta)
tscale2=amax1(1./alpha,1./beta)
dt=tscale1/1000.
tfinal=4.*tscale2
nstep=int(tfinal/dt)
kp=int(float(nstep)/50.)
kount=kp
r0=beta
v0=vzero
print 100 ,0., v0 ,vgom(0.)
do 10 i=1,nstep
t=dt*float(i)
v1=v0+dt*(r0*v0)
r1=r0-dt*alpha*r0
if(i.eq.kount)then
print 100 ,t, v1 ,vgom(t)
kount=kount+kp
endif
v0=v1
r0=r1
10 continue
100 format('t,v,Vgompertz=',3(3x,e10.3))
stop
end