working_code.max
assume(x>0)$
gamma : integrate((1-v(tau))*mu(tau)*delta(x,tau)*exp(-integrate(beta(u,tau)-alpha(u),u,tau,x)), tau, 0, x);
diff(gamma,x);
nu : integrate((1-v(tau))*mu(tau)*exp(-integrate(beta(u,tau)-alpha(u),u,tau,x)), tau, 0, x);
diff(nu,x);
diff(nu,x) - (nu*alpha(x) + mu(x)*(1-v(x)));d
iff(nu,x) - (nu*alpha(x) + mu(x)*(1-v(x))), expand, ratsimp;
diff(nu,x) - (nu*alpha(x) + mu(x)*(1-v(x))), ratsimp;
subst(x=x+Delta, nu) - nu;
/* what about doing this using Kolmogorov's forward integro-differential equation? */
assume(x>0)$
assume(tau>0)$
healthy : exp(-integrate(mu(u)+alpha(u),u,0,x));
illness : integrate(exp(-integrate(mu(u)+alpha(u),u,0,tau))*mu(tau)*exp(-integrate(phi(u,tau),u,tau,x)), tau, 0, x);
prev : illness/(illness + healthy);
prevOdds : illness/healthy;
mortality : integrate(exp(-integrate(mu(u)+alpha(u),u,0,tau))*mu(tau)*exp(-integrate(phi(u,tau),u,tau,x))*(phi(x,tau)-alpha(x)), tau, 0, x)/(healthy+illness);
diff(log(-log(theta)), theta);
diff(gamma,x);
fpprec : 33;
/* 1234567891123456789212345678931234567 */
xi : [0.995657163025808080735527280689003b0,
0.973906528517171720077964012084452b0,
0.930157491355708226001207180059508b0,
0.865063366688984510732096688423493b0,
0.780817726586416897063717578345042b0,
0.679409568299024406234327365114874b0,
0.562757134668604683339000099272694b0,
0.433395394129247190799265943165784b0,
0.294392862701460198131126603103866b0,
0.14887433898163121088482600112972b0,
0.0b0];
xi : append(map(lambda([x], -x), xi), rest(reverse(xi)));
w : [0.066671344308688137593568809893332b0,
0.149451349150580593145776339657697b0,
0.219086362515982043995534934228163b0,
0.269266719309996355091226921569469b0,
0.295524224714752870173892994651338b0];
w : map(lambda([x], x/2b0), append(w, reverse(w)));
wk : [0.011694638867371874278064396062192b0,
0.03255816230796472747881897245939b0,
0.05475589657435199603138130024458b0,
0.07503967481091995276704314091619b0,
0.093125454583697605535065465083366b0,
0.109387158802297641899210590325805b0,
0.123491976262065851077958109831074b0,
0.134709217311473325928054001771707b0,
0.142775938577060080797094273138717b0,
0.147739104901338491374841515972068b0,
0.149445554002916905664936468389821b0];
wk : map(lambda([x], x/2b0), append(wk, rest(reverse(wk))));
wk;
mintegrate(f, a, b) :=
block([width, olda, oldb],
width: b - a,
olda : a,
oldb : b,
ff : lambda([x], f(olda+x*width)),
step : lambda([a,b,n,side],
fx : map(lambda([xii], ff(a+(b-a)*(xii+1)/2)), xi)));