A
Ajith Prasad
I would appreciate advice on how best to formulate the following
problem in Python. I have originally posted the problem to the J
Programming forum and received a one-line formulation ((#s)
(|.s)&(+/@:*)\ I)! I was wondering what the equivalent Python
formulation would be.
The Problem:
The enrolment E(n) of an institution at the beginning of year n is the
sum of the intake for year n, I(n), and the survivors from the intakes
of previous r years. Thus, if s(1) is the 1-year intake survival rate,
s(2) is the 2-year survival rate, etc, we have:
E(n)= I(n)+I(n-1)*s(1)+ I(n-2)*s(2)+...+I(n-r)*s(r)
E(n+1)= I(n+1)+I(n)*s(1)+I(n-1)*s(2)+... +I(n-r-1)*s(r)
..
..
..
E(n+k)= I(n+k)+I(n+k-1)*s(1)+I(n+k-2)*s(2)+...+I(n+k-r)*s(r)
Given:
(a) the actual intakes for the current and previous r years, I(n),
I(n-1),I(n-2),..,I(n-r), and the planned intakes for the next n+k
years: I(n+1), I(n+2),..., I(n+k), we have the intake vector I =
(I(n-r), I(n-r-1),...,I(n),I(n+1),..., I(n+k)); and
(b) the survival rate vector, s = (1,s(1), s(2),...,s(r))
Find:
The k*1 enrolment projection column vector, E =
(E(n+1),E(n+2),...,E(n+k)) in terms of a k*(r+1) matrix P (derived
from
I) and the (r+1)*1 column vector, s.
I = P*s
Is there a compact Python representation of the relevant matrix P
where:
P = [I(n+1) I(n) I(n-1).. . I(n-r)
I(n+2) I(n+1) I(n)... I(n-r-1)
.
.
I(n+k) I(n+k-1) I(n+k-2)... I(n+k-r)]
Alternatively, a non-matrix formulation of the problem would be
acceptable. Thanks in advance for any suggestions on how to proceeed.
problem in Python. I have originally posted the problem to the J
Programming forum and received a one-line formulation ((#s)
(|.s)&(+/@:*)\ I)! I was wondering what the equivalent Python
formulation would be.
The Problem:
The enrolment E(n) of an institution at the beginning of year n is the
sum of the intake for year n, I(n), and the survivors from the intakes
of previous r years. Thus, if s(1) is the 1-year intake survival rate,
s(2) is the 2-year survival rate, etc, we have:
E(n)= I(n)+I(n-1)*s(1)+ I(n-2)*s(2)+...+I(n-r)*s(r)
E(n+1)= I(n+1)+I(n)*s(1)+I(n-1)*s(2)+... +I(n-r-1)*s(r)
..
..
..
E(n+k)= I(n+k)+I(n+k-1)*s(1)+I(n+k-2)*s(2)+...+I(n+k-r)*s(r)
Given:
(a) the actual intakes for the current and previous r years, I(n),
I(n-1),I(n-2),..,I(n-r), and the planned intakes for the next n+k
years: I(n+1), I(n+2),..., I(n+k), we have the intake vector I =
(I(n-r), I(n-r-1),...,I(n),I(n+1),..., I(n+k)); and
(b) the survival rate vector, s = (1,s(1), s(2),...,s(r))
Find:
The k*1 enrolment projection column vector, E =
(E(n+1),E(n+2),...,E(n+k)) in terms of a k*(r+1) matrix P (derived
from
I) and the (r+1)*1 column vector, s.
I = P*s
Is there a compact Python representation of the relevant matrix P
where:
P = [I(n+1) I(n) I(n-1).. . I(n-r)
I(n+2) I(n+1) I(n)... I(n-r-1)
.
.
I(n+k) I(n+k-1) I(n+k-2)... I(n+k-r)]
Alternatively, a non-matrix formulation of the problem would be
acceptable. Thanks in advance for any suggestions on how to proceeed.