..I am going to share the analytics for solution of 2D stochastic volatility equations. Before I give the solution, I want to mention that in typical SV system of SDEs, there are two SDEs out of which one (usually Stochastic volatility) is independent of the other SDE and its one dimensional PDE can be solved independently. If we had a system of two SDEs which are both dependent on each other, in that case the solution though still possible would be more difficult.
I have taken both asset and SV Sdes in bessel coordinates. SV SDE can be solved independently and its PDE is given as
[$]\frac{\partial P(w,t)}{\partial t} \, = \, -\frac{\partial [\mu_w \, P(w,t)]}{\partial w} \, +\, .5 \, \frac{\partial^2 [{\sigma_w}^2 \, P(w,t)]}{\partial w^2} \,[$]
When we solve this equation with conservation of mass as I showed in a previous post, we get
[$] -\mu_w \, \frac{\partial Z_1}{\partial w} - .5 {\sigma_w}^2 \big[ -Z_1 \, {(\frac{\partial Z_1}{\partial w})}^2- P(Z_1)\, {(\frac{\partial Z_1}{\partial w})}^3 \frac{\partial^2 w}{\partial {Z_1}^2} \, \big] \,[$]
[$] + \frac{\partial w_b}{\partial t} \frac{\partial Z_1}{\partial w} =0 [$]
In the above equation b in [$]w_b[$] denotes that it is the boundary point that is moving so as to keep the probability conserved up till that point. We will need the above equation because when we move to two dimensional stochastic volatility PDE, the whole of above equation would be integrated in another dimension but since it equates to zero, it will also remain zero even after an extra integration and we will eliminate it from 2D equation.
our two dimensional SV and asset partial differential equation in bessel coordinates that we want to solve is
[$]\frac{\partial P(w,y,t)}{\partial t} \, = \, -\frac{\partial \big[\mu_y \, P(w,y,t) \big]}{\partial y} \, +\, .5 \, \frac{\partial^2 \big[{\sigma_y}^2 \, {V(w)}^{2 \gamma_V} \, P(w,y,t) \big]}{\partial y^2} \, -\frac{\partial \big[\mu_w \, P(w,y,t) \big]}{\partial w} \, +\, .5 \, \frac{\partial^2 \big[{\sigma_w}^2 \, P(w,y,t) \big]}{\partial w^2} \,+ \,\rho \, \frac{\partial^2 \big[ \sigma_y \, \sigma_w \, {V(w)}^{ \gamma_V} \, P(w,y,t) \big]}{\partial w \, \partial y} \, [$]
though correlation term is conceptually simple and when we do a two dimensional integration to preserve probability mass, this term becomes even more easy but correlation has some other issues when taking derivatives with respect of density of y with respect to Z_1 in diffusion terms. When there is no correlation our jacobian for two dimensional density when taken with respect to two independent standard nromals becomes
[$]\frac{\partial (Z_1,Z_2)}{\partial (w,y)}=\frac{\partial Z_1}{\partial w} \, \frac{\partial Z_2}{\partial y}[$]
since [$]Z_1[$] and [$]Z_2[$] are independent, we can write
[$]P(w,y)=P(Z_1) \, P(Z_2) \, \frac{\partial Z_1}{\partial w} \, \frac{\partial Z_2}{\partial y} [$]
Now we set ourselves in the probability conservation set up, and we have to write a two dimensional integral from infinity(or rather zero ) to moving boundary (boundary might be a misnomer since this is not grid boundary but rather boundary of mass conserved till a certain grid point and this so called boundary is moving or alternatively the grid point is moving) points [$]w_b[$] and [$]y_b[$]. Please note that on a two dimensional grid there are a series of these points [$]w_b[$]'s and [$]y_b[$]'s. The grid in inependent SV dimension is given by index n and the grid on dependent asset dimension is given by (n,m) and respective moving boundaries in conservation set up are indicated as [$]w_b(n)[$](that conserves mass till nth point on SV grid) and [$]y_b(n,m)[$] (that conserves mass till (n,m) points on the grid) . Please note that [$]y_b(n,m)[$] is not a straight line and is curved in both indices.
We apply the conservation of probability mass till arbitrary nth and mth points on the grid as
[$] \frac{\partial \Big[\int_0^{w_b(n)} \, \int_0^{y_b(n,m)} \, P(w,y,t) \,\, dy \, dw \Big]}{\partial t} \, =0 [$]
[$]=\int_0^{w_b(n)} \, \int_0^{y_b(n,m)} \, \frac{P(w,y,t)}{\partial t} \, \, dy \, dw \, [$]
[$]+\frac{\partial w_b}{\partial t} \int_0^{y_b(n,m)} \, P(w_b(n),y,t) dy [$]
[$]+ \int_0^{w_b(n)} \frac{\partial y_b(n,m)}{\partial t} \, P(w,y_b,t) dw =0 [$]
Substituting the 2D uncorrelated PDE in the first RHS integral, we get the expression
[$]=\int_0^{w_b(n)} \, \int_0^{y_b(n,m)} \, \Big[\, -\frac{\partial \big[\mu_y \, P(w,y,t) \big]}{\partial y} \, +\, .5 \, \frac{\partial^2 \big[{\sigma_y}^2 \, {V(w)}^{2 \gamma_V} \, P(w,y,t) \big]}{\partial y^2} \, -\frac{\partial \big[\mu_w \, P(w,y,t) \big]}{\partial w} \, +\, .5 \, \frac{\partial^2 \big[{\sigma_w}^2 \, P(w,y,t) \big]}{\partial w^2} \, \Big] \, \, dy \, dw \, [$]
[$]+\frac{\partial w_b}{\partial t} \int_0^{y_b(n,m)} \, P(w_b(n),y,t) dy [$]
[$]+ \int_0^{w_b(n)} \frac{\partial y_b(n,m)}{\partial t} \, P(w,y_b,t) dw =0 [$]
We do the integrations in the first term to get
[$]=\int_0^{w_b(n)} \, \Big[\, -\mu_y \, P(w,y,t) \, +\, .5 \, \frac{\partial \big[{\sigma_y}^2 \, {V(w)}^{2 \gamma_V} \, P(w,y,t) \big]}{\partial y} \, \Big] dw [$]
[$]\int_0^{y_b(n,m)} \Big[ -\mu_w \, P(w,y,t) \, +\, .5 \, \frac{\partial \big[{\sigma_w}^2 \, P(w,y,t) \big]}{\partial w} \, \Big] \, \, dy \, [$]
[$]+\frac{\partial w_b}{\partial t} \int_0^{y_b(n,m)} \, P(w_b(n),y,t) dy [$]
[$]+ \int_0^{w_b(n)} \frac{\partial y_b(n,m)}{\partial t} \, P(w,y_b,t) dw =0 [$]
Now we convert our coordinates to [$]Z_1[$] and [$]Z_2[$] instead of w and y as
[$]=\int_0^{w_b(n)} \, \Big[\, -\mu_y \, P(Z_1) \, P(Z_2) \, \frac{\partial Z_1}{\partial w} \, \frac{\partial Z_2}{\partial y} \, +\, .5 \, \frac{\partial \big[{\sigma_y}^2 \, {V(w)}^{2 \gamma_V} \, P(Z_1) \, P(Z_2) \, \frac{\partial Z_1}{\partial w} \, \frac{\partial Z_2}{\partial y} \big]}{\partial y} \, \Big] dw [$]
[$]\int_0^{y_b(n,m)} \Big[ -\mu_w \, P(Z_1) \, P(Z_2) \, \frac{\partial Z_1}{\partial w} \, \frac{\partial Z_2}{\partial y} \, +\, .5 \, \frac{\partial \big[{\sigma_w}^2 \, P(Z_1) \, P(Z_2) \, \frac{\partial Z_1}{\partial w} \, \frac{\partial Z_2}{\partial y} \big]}{\partial w} \, \Big] \, \, dy \, [$]
[$]+\frac{\partial w_b}{\partial t} \int_0^{y_b(n,m)} \, P(Z_1(n)) \, P(Z_2) \, \frac{\partial Z_1}{\partial w} \, \frac{\partial Z_2}{\partial y} dy [$]
[$]+ \int_0^{w_b(n)} \frac{\partial y_b(n,m)}{\partial t} \, P(Z_1) \, P(Z_2) \, \frac{\partial Z_1(n)}{\partial w} \, \frac{\partial Z_2(m)}{\partial y} dw =0 [$]
which can be further simplified as
[$]=\int_0^{w_b(n)} \, \Big[\, -\mu_y \, \frac{\partial Z_2}{\partial y} \, +\, .5 \, {\sigma_y}^2 \, {V(w)}^{2 \gamma_V} \, \big[ -Z_2 \, {(\frac{\partial Z_2}{\partial y})}^2 - {(\frac{\partial Z_2}{\partial y})}^3 \frac{\partial^2 y}{\partial {Z_2}^2} \big] \, \Big] dZ_1 [$]
[$]\int_0^{y_b(n,m)} \Big[ -\mu_w \, \frac{\partial Z_1}{\partial w} \, +\, .5 \, {\sigma_w}^2 \, \big[ -Z_1 \, {(\frac{\partial Z_1}{\partial w})}^2 - {(\frac{\partial Z_1}{\partial w})}^3 \frac{\partial^2 w}{\partial {Z_1}^2} \big] \Big] \, \, dZ_2 \, [$]
[$]+\frac{\partial w_b}{\partial t} \int_0^{y_b(n,m)} \, \frac{\partial Z_1}{\partial w} \, dZ_2 [$]
[$]+ \int_0^{w_b(n)} \frac{\partial y_b(n,m)}{\partial t} \, \frac{\partial Z_2(m)}{\partial y} dZ_1 =0 [$]
But we notice that second and third term together are merely the solution of 1D independent PDE integrated in an extra dimension and since the original solution of both terms for independent 1D PDE was zero, the integrated term should also be zero. (Even if it were not zero, we could have found this solution from solving the 1D independent PDE), therefore
[$]\int_0^{y_b(n,m)} \Big[ -\mu_w \, \frac{\partial Z_1}{\partial w} \, +\, .5 \, {\sigma_w}^2 \, \big[ -Z_1 \, {(\frac{\partial Z_1}{\partial w})}^2 - {(\frac{\partial Z_1}{\partial w})}^3 \frac{\partial^2 w}{\partial {Z_1}^2} \big] \Big] \, \, dZ_2 \,[$]
[$]+\frac{\partial w_b}{\partial t} \int_0^{y_b(n,m)} \, \frac{\partial Z_1}{\partial w} \, dZ_2=0 [$]
Now we are left with the terms to solve as
[$]=\int_0^{w_b(n)} \, \Big[\, -\mu_y \, \frac{\partial Z_2}{\partial y} \, +\, .5 \, {\sigma_y}^2 \, {V(w)}^{2 \gamma_V} \, \big[ -Z_2 \, {(\frac{\partial Z_2}{\partial y})}^2 - {(\frac{\partial Z_2}{\partial y})}^3 \frac{\partial^2 y}{\partial {Z_2}^2} \big] \, \Big] dZ_1 [$]
[$]+ \int_0^{w_b(n)} \frac{\partial y_b(n,m)}{\partial t} \, \frac{\partial Z_2(m)}{\partial y} dZ_1 =0 [$]
For a given value of m, we can recursively solve the above PDE for each value of n. To make matters simple, I write the above equation as
[$]=\int_0^{w_b(n)} \, \Big[\, -\mu_y \, \frac{\partial Z_2}{\partial y} \, +\, .5 \, {\sigma_y}^2 \, {V(w)}^{2 \gamma_V} \, \big[ -Z_2 \, {(\frac{\partial Z_2}{\partial y})}^2 - {(\frac{\partial Z_2}{\partial y})}^3 \frac{\partial^2 y}{\partial {Z_2}^2} \big] \, \Big] dZ_1 [$]
[$]+ \int_0^{w_b(n-1)} \frac{\partial y_b(n,m)}{\partial t} \, \frac{\partial Z_2}{\partial y} dZ_1 [$]
[$]+ \int_{w_b(n-1)}^{w_b(n)} \frac{\partial y_b(n,m)}{\partial t} \, \frac{\partial Z_2}{\partial y} dZ_1 =0[$]
where in the above equation, I have expanded the last terms as sum of all previous terms and one current term to solve and now the equation can be solved as
[$] \frac{\partial y_b(n,m)}{\partial t} =\Bigg[ \int_0^{w_b(n)} \, \Big[\, \mu_y \, \frac{\partial Z_2}{\partial y} \, +\, .5 \, {\sigma_y}^2 \, {V(w)}^{2 \gamma_V} \, \big[ Z_2 \, {(\frac{\partial Z_2}{\partial y})}^2 + {(\frac{\partial Z_2}{\partial y})}^3 \frac{\partial^2 y}{\partial {Z_2}^2} \big] \, \Big] dZ_1 [$]
[$]- \int_0^{w_b(n-1)} \frac{\partial y_b(n,m)}{\partial t} \, \frac{\partial Z_2}{\partial y} dZ_1 \Bigg] / \Big[ \int_{w_b(n-1)}^{w_b(n)} \, \frac{\partial Z_2}{\partial y} dZ_1 \Big][$]
please note that [$]\frac{\partial y_b(n,m)}{\partial t} \Delta t[$] is the change in coordinates y(n,m) so as to conserve the mass in a small time step according to given PDE dynamics.
The last equation solves the 2D PDE in the asset dimension. Adding correlation term should not be difficult but then we have to make a few changes as correlation will appear in jacobian. Also derivatives of asset with respect to [$]Z_1[$] would have to be included something that was making my equation unstable when I tried it last time but I will try it again to see if I could make it work.
I will be posting the program for uncorrelated PDE based on these analytics tomorrow.
.
.
Sorry friends, I made a mistake. I took both [$]P(Z_1) \, P(Z_2)[$] common out of equations which is not possible due to integrations. Sorry that I did these calculations while writing while I have not taken them common in my calculations that I implemented in matlab. Here are modified equations
[$]=\int_0^{w_b(n)} \, \Big[\, -\mu_y \, P(Z_1) \, P(Z_2) \, \frac{\partial Z_2}{\partial y} \, +\, .5 \, {\sigma_y}^2 \, {V(w)}^{2 \gamma_V} \, P(Z_1) \, P(Z_2) \, \big[ -Z_2 \, {(\frac{\partial Z_2}{\partial y})}^2 - {(\frac{\partial Z_2}{\partial y})}^3 \frac{\partial^2 y}{\partial {Z_2}^2} \big] \, \Big] dZ_1 [$]
[$]\int_0^{y_b(n,m)} \Big[ -\mu_w \, P(Z_1) \, P(Z_2) \, \frac{\partial Z_1}{\partial w} \, +\, .5 \, {\sigma_w}^2 \, P(Z_1) \, P(Z_2) \, \big[ -Z_1 \, {(\frac{\partial Z_1}{\partial w})}^2 - {(\frac{\partial Z_1}{\partial w})}^3 \frac{\partial^2 w}{\partial {Z_1}^2} \big] \Big] \, \, dZ_2 \, [$]
[$]+\frac{\partial w_b}{\partial t} \int_0^{y_b(n,m)} \, P(Z_1) \, P(Z_2) \, \frac{\partial Z_1}{\partial w} \, dZ_2 [$]
[$]+ \int_0^{w_b(n)} \frac{\partial y_b(n,m)}{\partial t} \, P(Z_1) \, P(Z_2) \, \frac{\partial Z_2(m)}{\partial y} dZ_1 =0 [$]
independent PDE for SV still goes to zero, leaving us with
[$]=\int_0^{w_b(n)} \, \Big[\, -\mu_y \, P(Z_1) \, P(Z_2) \, \frac{\partial Z_2}{\partial y} \, +\, .5 \, {\sigma_y}^2 \, {V(w)}^{2 \gamma_V} \, P(Z_1) \, P(Z_2) \, \big[ -Z_2 \, {(\frac{\partial Z_2}{\partial y})}^2 - {(\frac{\partial Z_2}{\partial y})}^3 \frac{\partial^2 y}{\partial {Z_2}^2} \big] \, \Big] dZ_1 [$]
[$]+ \int_0^{w_b(n)} \frac{\partial y_b(n,m)}{\partial t} \, P(Z_1) \, P(Z_2) \, \frac{\partial Z_2(m)}{\partial y} dZ_1 =0 [$]
We solve the above equation for a given value of m recursively over different values of n so [$]P(Z_2)[$] can be taken common in the above equation. Please note that we can eliminate P(Z_2) which is constant for a given index m even when index n changes but we cannot eliminate [$] \frac{\partial Z_2}{\partial y} [$] since we have curved lines and for given index m when n is different the value of [$] \frac{\partial Z_2}{\partial y} [$] would be different. so it gives us
[$]=\int_0^{w_b(n)} \, \Big[\, -\mu_y \, P(Z_1) \, \frac{\partial Z_2}{\partial y} \, +\, .5 \, {\sigma_y}^2 \, {V(w)}^{2 \gamma_V} \, P(Z_1) \, \big[ -Z_2 \, {(\frac{\partial Z_2}{\partial y})}^2 - {(\frac{\partial Z_2}{\partial y})}^3 \frac{\partial^2 y}{\partial {Z_2}^2} \big] \, \Big] dZ_1 [$]
[$]+ \int_0^{w_b(n)} \frac{\partial y_b(n,m)}{\partial t} \, P(Z_1) \, \frac{\partial Z_2(m)}{\partial y} dZ_1 =0 [$]
which takes us to final solution
[$] \frac{\partial y_b(n,m)}{\partial t} =\Bigg[ \int_0^{w_b(n)} \, P(Z_1) \, \Big[\, \mu_y \, \frac{\partial Z_2}{\partial y} \, +\, .5 \, {\sigma_y}^2 \, {V(w)}^{2 \gamma_V} \, \big[ Z_2 \, {(\frac{\partial Z_2}{\partial y})}^2 + {(\frac{\partial Z_2}{\partial y})}^3 \frac{\partial^2 y}{\partial {Z_2}^2} \big] \, \Big] dZ_1 [$]
[$]- \int_0^{w_b(n-1)} \frac{\partial y_b(n,m)}{\partial t} \, P(Z_1) \, \frac{\partial Z_2}{\partial y} dZ_1 \Bigg] / \Big[ \int_{w_b(n-1)}^{w_b(n)} \, P(Z_1) \, \frac{\partial Z_2}{\partial y} dZ_1 \Big][$]
function [] = FPESeriesCoeffsFromGaussiansWilmottNew02A_Lite_2DFPE()
%Copyright Ahsan Amin. Infiniti derivatives Technologies.
%Please fell free to connect on linkedin: linkedin.com/in/ahsan-amin-0a53334
%or skype ahsan.amin2999
%I have not directly simulated the SDE but simulated the transformed
%Besse1l process version of the SDE and then changed coordinates to retreive
%the SDE in original coo
%rdinates.
%The present program will analytically evolve only the Bessel Process version of the
%SDE in transformed coordinates.
dt=.125/2/2/2; % Simulation time interval.%Fodiffusions close to zero
%decrease dt for accuracy.
Tt=64*1;%16*2*4;%*4*4*1;%*4;%128*2*2*2; % Number of simulation levels. Terminal time= Tt*dt; //.125/32*32*16=2 year;
T=Tt*dt;
%
% %Below I have done calculations for smaller step size at start.
%
% %ds(1:64)=dt/16;
% %ds(65:128)=dt/4;
% if(Tt<=4)
% Ts=(Tt*16);%+(64-16);
% ds(1:Ts)=dt/16;
% end
% if(Tt>4)&&(Tt<=20)
% Ts=(64)+((Tt-4)*4);
% ds(1:64)=dt/16;
% ds(65:Ts)=dt/4;
% end
% if(Tt>20)
% Ts=(64)+((20-4)*4)+(Tt-20);
% ds(1:64)=dt/16;
% ds(65:128)=dt/4;
% ds(129:Ts)=dt;
% end
Ts=Tt;
ds(1:Tt)=dt;
T
sum(ds(1:Ts))
Ts
%Ts=4;
str=input('Check if time is right');
OrderA=4; %
OrderM=4; %
if(T>=1)
dtM=1/32;%.0625/1;
TtM=T/dtM;
else
dtM=T/32;%.0625/1;
TtM=T/dtM;
end
%dtM=dt;
%TtM=Tt;
dNn=.2/2; % Normal density subdivisions width. would change with number of subdivisions
Nn=46*2; % No of normal density subdivisions
NnMid=4.0;
v00=.10; % starting value of SDE
beta1=0.0;
beta2=1.0; % Second drift term power.
gamma=.95;%50; % volatility power.
kappa=1.0;%.950; %mean reversion parameter.
theta=.10;%mean reversion target
sigma0=.9500;%Volatility value
NoOfCumulants=6;
SeriesOrder=NoOfCumulants-1;
%you can specify any general mu1 and mu2 and beta1 and beta2.
mu1=1*theta*kappa; %first drift coefficient.
mu2=-1*kappa; % Second drift coefficient.
%mu1=0;
%mu2=-1*kappa;
alpha=1;% x^alpha is being expanded. This is currently for monte carlo only.
alpha1=1-gamma;%This is for expansion of integrals for calculation of drift
%and volatility coefficients
%yy(1:Nn)=x0;
w0=v00^(1-gamma)/(1-gamma);
%y0=x0;
x0=1;
gammaX=.95;
gammaV=.5;
sigmaX=1.20;
thetaX=.0;
kappaX=0;
mu1X=thetaX*kappaX;
mu2X=-1*kappaX;
beta1X=0.0;
beta2X=1.0;
q0=x0^(1-gammaX)/(1-gammaX);
alpha1X=1-gammaX;
Z(1:Nn)=(((1:Nn)-6.5/1)*dNn-NnMid);
Z
str=input('Look at Z');
ZProb(1)=normcdf(.5*Z(1)+.5*Z(2),0,1)-normcdf(.5*Z(1)+.5*Z(2)-dNn,0,1);
ZProb(Nn)=normcdf(.5*Z(Nn)+.5*Z(Nn-1)+dNn,0,1)-normcdf(.5*Z(Nn)+.5*Z(Nn-1),0,1);
ZProb(2:Nn-1)=normcdf(.5*Z(2:Nn-1)+.5*Z(3:Nn),0,1)-normcdf(.5*Z(2:Nn-1)+.5*Z(1:Nn-2),0,1);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
sigma11(1:OrderA+1)=0;
mu11(1:OrderA+1)=0;
mu22(1:OrderA+1)=0;
sigma22(1:OrderA+1)=0;
% index 1 correponds to zero level since matlab indexing starts at one.
sigma11(1)=1;
mu11(1)=1;
mu22(1)=1;
sigma22(1)=1;
for k=1:(OrderA+1)
if sigma0~=0
sigma11(k)=sigma0^(k-1);
end
if mu1 ~= 0
mu11(k)=mu1^(k-1);
end
if mu2 ~= 0
mu22(k)=mu2^(k-1);
end
if sigma0~=0
sigma22(k)=sigma0^(2*(k-1));
end
end
sigma11X(1:OrderA+1)=0;
mu11X(1:OrderA+1)=0;
mu22X(1:OrderA+1)=0;
sigma22X(1:OrderA+1)=0;
sigma11X(1)=1;
mu11X(1)=1;
mu22X(1)=1;
sigma22X(1)=1;
for k=1:(OrderA+1)
if sigmaX~=0
sigma11X(k)=sigmaX^(k-1);
end
if mu1X ~= 0
mu11X(k)=mu1X^(k-1);
end
if mu2X ~= 0
mu22X(k)=mu2X^(k-1);
end
if sigmaX~=0
sigma22X(k)=sigmaX^(2*(k-1));
end
end
%Ft(1:TtM+1,1:(OrderA+1),1:(OrderA+1),1:(OrderA+1),1:(OrderA+1))=0; %General time powers on hermite polynomials
Fp(1:(OrderA+1),1:(OrderA+1),1:(OrderA+1),1:(OrderA+1))=0;%General x powers on coefficients of hermite polynomials.
Fp1(1:(OrderA+1),1:(OrderA+1),1:(OrderA+1),1:(OrderA+1))=0;%General x powers for bessel transformed coordinates.
Fp1X(1:(OrderA+1),1:(OrderA+1),1:(OrderA+1),1:(OrderA+1))=0;
%YCoeff0 and YCoeff are coefficents for original coordinates monte carlo.
%YqCoeff0 and YqCoeff are bessel/lamperti version monte carlo.
YCoeff0(1:(OrderA+1),1:(OrderA+1),1:(OrderA+1),1:(OrderA+1))=0;
YqCoeff0(1:(OrderA+1),1:(OrderA+1),1:(OrderA+1),1:(OrderA+1))=0;
YqCoeff0X(1:(OrderA+1),1:(OrderA+1),1:(OrderA+1),1:(OrderA+1))=0;
%Pre-compute the time and power exponent values in small multi-dimensional arrays
YCoeff = ItoTaylorCoeffsNew(alpha,beta1,beta2,gamma); %expand y^alpha where alpha=1;
YqCoeff = ItoTaylorCoeffsNew(alpha1,beta1,beta2,gamma);%expand y^alpha1 where alpha1=(1-gamma)
YqCoeff=YqCoeff/(1-gamma); %Transformed coordinates coefficients have to be
%further divided by (1-gamma)
YqCoeffX = ItoTaylorCoeffsNew(alpha1X,beta1X,beta2X,gammaX);%expand y^alpha1 where alpha1=(1-gamma)
YqCoeffX=YqCoeffX/(1-gammaX);
for k = 0 : (OrderA)
for m = 0:k
l4 = k - m + 1;
for n = 0 : m
l3 = m - n + 1;
for j = 0:n
l2 = n - j + 1;
l1 = j + 1;
%Ft(l1,l2,l3,l4) = dtM^((l1-1) + (l2-1) + (l3-1) + .5* (l4-1));
Fp(l1,l2,l3,l4) = (alpha + (l1-1) * beta1 + (l2-1) * beta2 + (l3-1) * 2* gamma + (l4-1) * gamma ...
- (l1-1) - (l2-1) - 2* (l3-1) - (l4-1));
Fp1(l1,l2,l3,l4) = (alpha1 + (l1-1) * beta1 + (l2-1) * beta2 + (l3-1) * 2* gamma + (l4-1) * gamma ...
- (l1-1) - (l2-1) - 2* (l3-1) - (l4-1));
Fp1X(l1,l2,l3,l4) = (alpha1X + (l1-1) * beta1X + (l2-1) * beta2X + (l3-1) * 2* gammaX + (l4-1) * gammaX ...
- (l1-1) - (l2-1) - 2* (l3-1) - (l4-1));
YCoeff0(l1,l2,l3,l4) =YCoeff(l1,l2,l3,l4).*mu11(l1).*mu22(l2).*sigma22(l3).*sigma11(l4);
YqCoeff0(l1,l2,l3,l4) =YqCoeff(l1,l2,l3,l4).*mu11(l1).*mu22(l2).*sigma22(l3).*sigma11(l4);
YqCoeff0X(l1,l2,l3,l4) =YqCoeffX(l1,l2,l3,l4).*mu11X(l1).*mu22X(l2).*sigma22X(l3).*sigma11X(l4);
end
end
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ExpnOrder=5;
SeriesOrder=5;
c(1:SeriesOrder)=0;
c0=w0;
wnStart=1;
yydt(wnStart:Nn)=0.0;
tic
for tt=1:Ts
tt
if(tt<=1)
[wMu0dt,dwMu0dtdw] = BesselDriftAndDerivativesH0(w0,YqCoeff0,Fp1,gamma,ds(tt),6);
cprev(1:5)=0;
c0prev=w0;
c0=wMu0dt+w0;
c(1)=sigma0*sqrt(ds(tt));
c(2:7)=0.0;
w0=c0;
elseif(tt<=3)
[wMu0dt,dwMu0dtdw,Ratio] = BesselDriftAndDerivatives04A(w0,mu1,mu2,beta1,beta2,sigma0,gamma,ds(tt),8);
[b0,b] = CalculateDriftbCoeffs08A(wMu0dt,dwMu0dtdw,c,SeriesOrder);
c0prev=c0;
cprev=c;
c0=c0+b0;
c(1)=b(1)+sqrt(c(1)^2+sigma0^2*ds(tt));
c(2:SeriesOrder)=b(2:SeriesOrder);
w0=c0;
else
[wMu0dt,dwMu0dtdw] = BesselDriftAndDerivativesH0(w0,YqCoeff0,Fp1,gamma,ds(tt),SeriesOrder+1);
[b0,b] = CalculateDriftbCoeffs08A(wMu0dt,dwMu0dtdw,c,SeriesOrder);
[wVol0dt,dwVol0dtdw] = BesselVolAndDerivativesH1(w0,YqCoeff0,Fp1,gamma,ds(tt),SeriesOrder+1);
[wVol2dt,dwVol2dtdw] = BesselVolAndDerivativesH2(w0,YqCoeff0,Fp1,gamma,ds(tt),SeriesOrder+1);
[g10,g1] = CalculateDriftbCoeffs08A(wVol0dt,dwVol0dtdw,c,SeriesOrder);
g10=g10+sigma0*sqrt(ds(tt));
[g20,g2] = CalculateDriftbCoeffs08A(wVol2dt,dwVol2dtdw,c,SeriesOrder);
cprev=c;
c0prev=c0;
a0=c0+b0;
a(1:SeriesOrder)=c(1:SeriesOrder)+b(1:SeriesOrder);
%
[a0,a] = AdvanceSeriesCumulantSolution02NewO6Params5A_Lite_0(a0,a,g10,g1,g20,g2,sigma0,gamma,ds(tt),SeriesOrder,NoOfCumulants);
% [CC] = CalculateCumulants(a0,a,SeriesOrder,8);
% if(SeriesOrder==5)
% a(6)=0;
% a(7)=0;
% end
% if(SeriesOrder==6)
% % %a(6)=0;
% a(7)=0;
% end
% if(CC(7)>.0000005)
% SeriesOrder=6;
% NoOfCumulants=7;
% end
% if(CC(8)>.0000005)
% SeriesOrder=7;
% NoOfCumulants=8;
% end
%
c0=a0;
c(1:SeriesOrder)=a(1:SeriesOrder);
w0=c0;
end
if(tt==1)
cmid0=c0;
cmid=c;
else
cmid0=(c0+c0prev)*.5;
cmid=(c+cprev)*.5;
end
gammaV2=2*gammaV;
[vw0,dvw0] = CalculatevgammaV2AndDerivatives(cmid0,gamma,gammaV2,SeriesOrder);
[V2gamma0,V2gamma1] = CalculateDriftbCoeffs08A(vw0,dvw0,cmid,SeriesOrder);
V2gamma(1)=V2gamma0;
V2gamma(2:6)=V2gamma1(1:5)./sqrt(2:6);
if(tt==1)
cq(1:6,1:6)=0;
cq(1,1)=x0^(1-gammaX)/(1-gammaX);
end
cprev=c;
q0=cq(1,1);
DoubleExpnOrder=ExpnOrder*2;
[qMu0dt,dqMu0dtdq,qMu1dt,dqMu1dtdq] = BesselDriftAndDerivatives08A0(q0,mu1X,mu2X,beta1X,beta2X,gammaX,DoubleExpnOrder);
[q2Mu0dt,dq2Mu0dtdq,q2Mu1dt,dq2Mu1dtdq] = BesselDriftAndDerivatives08Aq(q0,sigmaX,gammaX,DoubleExpnOrder)
[Muq0] = CalculateDriftbCoeffs08A2Dim02(qMu0dt,dqMu0dtdq,cq,SeriesOrder);
[Muq2] = CalculateDriftbCoeffs08A2Dim02(q2Mu0dt,dq2Mu0dtdq,cq,SeriesOrder);
[DMuq0] = CalculateDriftbCoeffs08A2Dim02(qMu1dt,dqMu1dtdq,cq,SeriesOrder);
[DMuq2] = CalculateDriftbCoeffs08A2Dim02(q2Mu1dt,dq2Mu1dtdq,cq,SeriesOrder);
[Muq2] =SeriesProduct2D1D(Muq2,V2gamma);
[DMuq2] =SeriesProduct2D1D(DMuq2,V2gamma);
Muq=Muq0+Muq2;
DMuq=DMuq0+DMuq2;
if(tt==1)
cq=cq+Muq*dt+SeriesProduct2D(Muq,DMuq)*dt^2/2;
cq(2,1)=cq(2,1)+sigmaX*v00^gammaV*sqrt(dt);
elseif(tt<=4)
% cq
[D1cq] = Series2DZ1Derivative(cq);
% D1cq
[D1cqInv] = Series2DReciprocal02(D1cq);
% D1cqInv
[D1cqInvZ] = MultiplySeries2DWithZ1(D1cqInv);
% D1cqInvZ
fq=Muq+.5*sigmaX^2*SeriesProduct2D1D(D1cqInvZ,V2gamma);
% fq*dt
Dfq=DMuq;
cq=cq+fq*dt+SeriesProduct2D(fq,Dfq)*dt^2/2;
SeriesProduct2D1D(D1cqInvZ,V2gamma)
% str=input('Look at numbers-1111');
% D1cqInvZ
% str=input('Look at numbers-2222');
else
[D1cq] = Series2DZ1Derivative(cq);
[D1cqInv] = Series2DReciprocal02(D1cq);
[D1cqInvZ] = MultiplySeries2DWithZ1(D1cqInv);
[D2cq] = Series2DZ1Derivative(D1cq);
[D1cqInvSqr]=SeriesProduct2D(D1cqInv,D1cqInv);
[D1cqInvCub]=SeriesProduct2D(D1cqInvSqr,D1cqInv);
[D2cqD1cqInvSqr]=SeriesProduct2D(D2cq,D1cqInvSqr);
[D2cqD1cqInvCub]=SeriesProduct2D(D2cq,D1cqInvCub);
D2cqT2=D1cqInvSqr-MultiplySeries2DWithZ1(D2cqD1cqInvCub);
Dfq=DMuq+.5*sigmaX^2*SeriesProduct2D1D(D2cqT2,V2gamma);
D2cqT1=D1cqInvZ+D2cqD1cqInvSqr;
fq=Muq+.5*sigmaX^2*SeriesProduct2D1D(D2cqT1,V2gamma);
% Incr=fq*dt+SeriesProduct2D(fq,Dfq)*dt^2/2;
%Incr2(1,:)=Incr(1,:);
%Incr2(2,:)=Incr(2,:)/2;
%Incr2(3,:)=Incr(3,:)/3;
%Incr2(4,:)=Incr(4,:)/4;
%Incr2(5,:)=Incr(5,:)/5;
%Incr2(6,:)=Incr(6,:)/6;
cq=cq+fq*dt+SeriesProduct2D(fq,Dfq)*dt^2/2;
%cq=cq+Incr2;
end
%cq
if(tt>1)
%D1cqInvZ
end
%str=input('Look at numbers');
% [qVol0dt,dqVol0dtdq] = BesselVolAndDerivativesH1(q0,YqCoeff0X,Fp1X,gammaX,ds(tt),SeriesOrder+1);
% [qVol2dt,dqVol2dtdw] = BesselVolAndDerivativesH2(q0,YqCoeff0X,Fp1X,gammaX,ds(tt),SeriesOrder+1);
end
Z1=Z;
[b] = EvaluateSeriesForZ2(cq,Z1,Nn);
Mm=301;
MmMid=151;
Q(MmMid+1:Mm)=cq(1,1)+cq(2,1).*.1.*(1:MmMid-1);
Q(MmMid)=cq(1,1);
%Q(1:70)=cq(1,1)-cq(2,1).*.25.*(70:-1:1);
for mm=1:MmMid-1
Q(MmMid-mm)=cq(1,1)-cq(2,1).*.1.*mm;
end
Qa=Q-cq(2,1).*.1/2;
Qb=Q+cq(2,1).*.1/2;
Z1Prob(1:Mm)=0;
for nn=1:Nn
bq(1:6)=b(1:6,nn);
[Z0Prob] = CalculateProbabilitySeriesInv(Qa,Qb,bq);
% Z0Prob
%str=input('Look at numbers-tttt')
Z1Prob(1:Mm)=Z1Prob(1:Mm)+Z0Prob(1:Mm).*ZProb(nn);
end
pQ=Z1Prob/(cq(2,1).*.1);
xx(1:Mm)=((1-gammaX).*Q(1:Mm)).^(1/(1-gammaX));
pxx(1:Mm)=pQ(1:Mm).*xx(1:Mm).^(-gammaX);
Mean=sum(xx(1:Mm).*Z1Prob(1:Mm));
Mean
% %gH00=gx00+gx20+3*gx40;
% gH0(:)=cq(1,:)+cq(3,:)+3*cq(5,:);%Coeffs of zeroth v hermite
%
% gH1(:)=cq(2,:)+3*cq(4,:)+15*cq(6,:);%Coeffs of 1st v hermite
%
% gH2(:)=cq(3,:)+6*cq(5,:);%Coeffs of 2nd v hermite
%
% gH3(:)=cq(4,:)+10*cq(6,:);%Coeffs of third v hermite
% gH4(:)=cq(5,:);
% gH5(:)=cq(6,:); %Coeffs of fourth v hermite
%
%
% cH00=gH0(1);
% cH0(1:5)=gH0(2:6);
% cH10=gH1(1);
% cH1(1:5)=gH1(2:6);
% cH20=gH2(1);
% cH2(1:5)=gH2(2:6);
% cH30=gH3(1);
% cH3(1:5)=gH3(2:6);
% cH40=gH4(1);
% cH4(1:5)=gH4(2:6);
% cH50=gH5(1);
% cH5(1:5)=gH5(2:6);
%
% [cHH00,cHH0] =ConvertZCoeffsToHCoeffs(cH00,cH0,SeriesOrder);
% [cHH10,cHH1] =ConvertZCoeffsToHCoeffs(cH10,cH1,SeriesOrder);
% [cHH20,cHH2] =ConvertZCoeffsToHCoeffs(cH20,cH2,SeriesOrder);
% [cHH30,cHH3] =ConvertZCoeffsToHCoeffs(cH30,cH3,SeriesOrder);
% [cHH40,cHH4] =ConvertZCoeffsToHCoeffs(cH40,cH4,SeriesOrder);
% [cHH50,cHH5] =ConvertZCoeffsToHCoeffs(cH50,cH5,SeriesOrder);
%
% cq0=sign(cHH00+cHH0(1)+sqrt(2)*cHH0(2)+sqrt(6)*cHH0(3)+sqrt(24)*cHH0(4)+sqrt(120)*cHH0(5)).* ...
% sqrt(abs(sign(cHH00).*cHH00.^2+sign(cHH0(1)).*cHH0(1).^2+sign(cHH0(2)).*cHH0(2).^2*2+ ...
% sign(cHH0(3)).*cHH0(3).^2*6+sign(cHH0(4)).*cHH0(4).^2*24+sign(cHH0(5)).*cHH0(5).^2*120));
%
%
% cq(1)=sign(cHH10+cHH1(1)+sqrt(2)*cHH1(2)+sqrt(6)*cHH1(3)+sqrt(24)*cHH1(4)+sqrt(120)*cHH1(5)).* ...
% sqrt(abs(sign(cHH10).*cHH10.^2+sign(cHH1(1)).*cHH1(1).^2+sign(cHH1(2)).*cHH1(2).^2*2+ ...
% sign(cHH1(3)).*cHH1(3).^2*6+sign(cHH1(4)).*cHH1(4).^2*24+sign(cHH1(5)).*cHH1(5).^2*120));
% %
% cq(2)=sign(cHH20+cHH2(1)+sqrt(2)*cHH2(2)+sqrt(6)*cHH2(3)+sqrt(24)*cHH2(4)+sqrt(120)*cHH2(5)).* ...
% sqrt(abs(sign(cHH20).*cHH20.^2+sign(cHH2(1)).*cHH2(1).^2+sign(cHH2(2)).*cHH2(2).^2*2+ ...
% sign(cHH2(3)).*cHH2(3).^2*6+sign(cHH2(4)).*cHH2(4).^2*24+sign(cHH2(5)).*cHH2(5).^2*120));
%
% cq(3)=sign(cHH30+cHH3(1)+sqrt(2)*cHH3(2)+sqrt(6)*cHH3(3)+sqrt(24)*cHH3(4)+sqrt(120)*cHH3(5)).* ...
% sqrt(abs(sign(cHH30).*cHH30.^2+sign(cHH3(1)).*cHH3(1).^2+sign(cHH3(2)).*cHH3(2).^2*2+ ...
% sign(cHH3(3)).*cHH3(3).^2*6+sign(cHH3(4)).*cHH3(4).^2*24+sign(cHH3(5)).*cHH3(5).^2*120));
%
% cq(4)=sign(cHH40+cHH4(1)+sqrt(2)*cHH4(2)+sqrt(6)*cHH4(3)+sqrt(24)*cHH4(4)+sqrt(120)*cHH4(5)).* ...
% sqrt(abs(sign(cHH40).*cHH40.^2+sign(cHH4(1)).*cHH4(1).^2+sign(cHH4(2)).*cHH4(2).^2*2+ ...
% sign(cHH4(3)).*cHH4(3).^2*6+sign(cHH4(4)).*cHH4(4).^2*24+sign(cHH4(5)).*cHH4(5).^2*120));
%
% cq(5)=sign(cHH50+cHH5(1)+sqrt(2)*cHH5(2)+sqrt(6)*cHH5(3)+sqrt(24)*cHH5(4)+sqrt(120)*cHH5(5)).* ...
% sqrt(abs(sign(cHH50).*cHH50.^2+sign(cHH5(1)).*cHH5(1).^2+sign(cHH5(2)).*cHH5(2).^2*2+ ...
% sign(cHH5(3)).*cHH5(3).^2*6+sign(cHH5(4)).*cHH5(4).^2*24+sign(cHH5(5)).*cHH5(5).^2*120));
wnStart=1;
%c0
%c
%str=input('Look at numbers')
%
% yy0=((1-gamma).*w0).^(1/(1-gamma));
%
w(1:Nn)=c0;
for nn=1:SeriesOrder
w(1:Nn)=w(1:Nn)+c(nn)*Z(1:Nn).^nn;
end
% q(1:Nn)=cq0;
% for nn=1:SeriesOrder
% q(1:Nn)=q(1:Nn)+cq(nn)*Z(1:Nn).^nn;
% end
% %Flag=0;
% %for nn=ceil(Nn/2)-1:-1:1
% % if((w(nn)<0)&&(Flag==0))
% % wnStart=nn+1;
% % Flag=1;
% % end
% %end
%
%
% %c0
% %c
%
%
% %str=input('Look at numbers')
yy0(wnStart:Nn)=((1-gamma).*w(wnStart:Nn)).^(1/(1-gamma));
% xx0(wnStart:Nn)=((1-gammaX).*q(wnStart:Nn)).^(1/(1-gammaX));
%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
% yw0=((1-gamma).*c0).^(1/(1-gamma));
% dyw0(1)=((1-gamma).*c0).^(1/(1-gamma)-1);
% dyw0(2)=(1/(1-gamma)-1).*((1-gamma).*c0).^(1/(1-gamma)-2)*(1-gamma);
% dyw0(3)=(1/(1-gamma)-1).*(1/(1-gamma)-2).*((1-gamma).*c0).^(1/(1-gamma)-3)*(1-gamma)^2;
% dyw0(4)=(1/(1-gamma)-1).*(1/(1-gamma)-2)*(1/(1-gamma)-3)*((1-gamma).*c0).^(1/(1-gamma)-4)*(1-gamma)^3;
% dyw0(5)=(1/(1-gamma)-1).*(1/(1-gamma)-2)*(1/(1-gamma)-3)*(1/(1-gamma)-4)*((1-gamma).*c0).^(1/(1-gamma)-5)*(1-gamma)^4;
% dyw0(6)=(1/(1-gamma)-1).*(1/(1-gamma)-2)*(1/(1-gamma)-3)*(1/(1-gamma)-4)*(1/(1-gamma)-5)*((1-gamma).*c0).^(1/(1-gamma)-6)*(1-gamma)^5;
% dyw0(7)=(1/(1-gamma)-1).*(1/(1-gamma)-2)*(1/(1-gamma)-3)*(1/(1-gamma)-4)*(1/(1-gamma)-5)*(1/(1-gamma)-6)*((1-gamma).*c0).^(1/(1-gamma)-7)*(1-gamma)^6;
% dyw0(8)=(1/(1-gamma)-1).*(1/(1-gamma)-2)*(1/(1-gamma)-3)*(1/(1-gamma)-4)*(1/(1-gamma)-5)*(1/(1-gamma)-6)*(1/(1-gamma)-7)*((1-gamma).*c0).^(1/(1-gamma)-8)*(1-gamma)^7;
% %
% % c(6)=0;
% % c(7)=0;
% % c(8)=0;
% %
% [y10,y1] = CalculateDriftbCoeffs08A(yw0,dyw0,c,SeriesOrder);
% [y20,y2] = CalculateDriftbCoeffs08A(yw0,dyw0,c,5);
% %
%
% yy1(1:Nn)=y10;
% %y(1:SeriesOrder)=c(1:SeriesOrder);
% for nn=1:SeriesOrder
% yy1(1:Nn)=yy1(1:Nn)+y1(nn)*Z(1:Nn).^nn;
% end
%
% yy2(1:Nn)=y20;
% %y(1:SeriesOrder)=c(1:SeriesOrder);
% for nn=1:5
% yy2(1:Nn)=yy2(1:Nn)+y2(nn)*Z(1:Nn).^nn;
% end
% plot(Z(1:Nn),yy0(1:Nn),'r',Z(1:Nn),yy1(1:Nn),'b',Z(1:Nn),yy2(1:Nn),'k');
% title(sprintf('x0 = %.4f,theta=%.3f,kappa=%.2f,gamma=%.3f,sigma=%.2f,T=%.2f,dt=%.5f', x0,theta,kappa,gamma,sigma0,T,dt));%,sprintf('theta= %f', theta), sprintf('kappa = %f', kappa),sprintf('sigma = %f', sigma0),sprintf('T = %f', T));
%
% legend({'SDE Variable Converted on Grid','SDE Variable From Eight Cumulants','SDE Variable From Six Cumulants'},'Location','northeast')
%
% %str=input('red line is density of SDE from Ito-Hermite method, green is monte carlo.');
%
%
% str=input('red line is SDE from Ito-Hermite method.');
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
yy=yy0;
% xx=xx0;
Dfyy(wnStart:Nn)=0;
%Dfyy1(wnStart:Nn)=0;
%Dfyy2(wnStart:Nn)=0;
%Dfxx(wnStart:Nn)=0;
for nn=wnStart+1:Nn-1
Dfyy(nn) = (yy(nn + 1) - yy(nn - 1))/(Z(nn + 1) - Z(nn - 1));
% Dfyy1(nn) = (yy1(nn + 1) - yy1(nn - 1))/(Z(nn + 1) - Z(nn - 1));
% Dfyy2(nn) = (yy2(nn + 1) - yy2(nn - 1))/(Z(nn + 1) - Z(nn - 1));
% Dfxx(nn) = (xx(nn + 1) - xx(nn - 1))/(Z(nn + 1) - Z(nn - 1));
%Change of variable derivative for densities
end
%Dfyy(Nn)=Dfyy(Nn-1);
%Dfyy(1)=Dfyy(2);
%Dfyydt(Nn)=Dfyydt(Nn-1);
%Dfyydt(1)=Dfyydt(2);
pyy(1:Nn)=0;
%pyy1(1:Nn)=0;
%pyy2(1:Nn)=0;
%pxx(1:Nn)=0;
for nn = wnStart+1:Nn-1
pyy(nn) = (normpdf(Z(nn),0, 1))/abs(Dfyy(nn));
% pyy1(nn) = (normpdf(Z(nn),0, 1))/abs(Dfyy1(nn));
% pyy2(nn) = (normpdf(Z(nn),0, 1))/abs(Dfyy2(nn));
% pxx(nn) = (normpdf(Z(nn),0, 1))/abs(Dfxx(nn));
end
toc
ItoHermiteMeanVar=sum(yy(wnStart:Nn).*ZProb(wnStart:Nn)) %Original process average from coordinates
ItoHermiteMeanAsset=Mean
disp('true Mean only applicable to standard SV mean reverting type models otherwise disregard');
%TrueMean=theta+(v0-theta)*exp(-kappa*T)%Mean reverting SDE original variable true average
%yy0
theta1=1;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%rng(29079137, 'twister')
rng(15898837, 'twister')
paths=350000;
V(1:paths)=v00; %Original process monte carlo.
X=0.0;
X(1:paths)=x0;
alpha1=0;
alpha2=1;
a=mu1X;
b=mu2X;
rho=0;
sigma1=sigmaX;
gammaV=.5;
Random1(1:paths)=0;
Random2(1:paths)=0;
for ttM=1:TtM
Random1=randn(size(Random1));
Random2=randn(size(Random2));
X(1:paths)=X(1:paths)+ ...
(a* X(1:paths).^alpha1 + b* X(1:paths).^alpha2)* dtM + ...
sqrt(1-rho^2)* sigma1* V(1:paths).^gammaV.* X(1:paths).^gammaX .*Random1(1:paths) * sqrt(dtM) + ...
rho* sigma1* V(1:paths).^gammaV .*X(1:paths).^gammaX .*Random2(1:paths)*sqrt(dtM) + ...
(a*alpha1* X(1:paths).^(alpha1-1)+b*alpha2* X(1:paths).^(alpha2-1)).* ...
(((a* X(1:paths).^alpha1 + b* X(1:paths).^alpha2)* dtM^2/2)+ ...
(sqrt(1-rho^2)* sigma1* V(1:paths).^gammaV.* X(1:paths).^gammaX .*Random1(1:paths) *(1-1/sqrt(3)).*dtM^1.5+ ...
rho* sigma1* V(1:paths).^gammaV .*X(1:paths).^gammaX .*Random2(1:paths)*(1-1/sqrt(3)).*dtM^1.5))+ ...
.5*(a*alpha1*(alpha1-1)* X(1:paths).^(alpha1-2)+b*alpha2*(alpha2-1).* X(1:paths).^(alpha2-2)).* ...
( sigma1^2* V(1:paths).^(2*gammaV).* X(1:paths).^(2*gammaX)) *dtM^2/2 + ...
sqrt(1-rho^2)* sigma1* V(1:paths).^gammaV.*gammaX.* X(1:paths).^(gammaX-1).* ...
((a* X(1:paths).^alpha1 + b* X(1:paths).^alpha2).*Random1(1:paths) * 1/sqrt(3).* dtM^1.5 + ...
sqrt(1-rho^2)* sigma1* V(1:paths).^gammaV.* X(1:paths).^gammaX .*(Random1(1:paths).^2-1) * dtM/2 + ...
rho* sigma1* V(1:paths).^gammaV .*X(1:paths).^gammaX .*Random1(1:paths).*Random2(1:paths)*dtM/2)+ ...
.5*sqrt(1-rho^2)* sigma1* V(1:paths).^gammaV.*gammaX.*(gammaX-1).* X(1:paths).^(gammaX-2).* ...
(sigma1^2* V(1:paths).^(2*gammaV).* X(1:paths).^(2*gammaX) .*Random1(1:paths).*1/sqrt(3).*dtM^1.5)+ ...
sqrt(1-rho^2)* sigma1*gammaV.* V(1:paths).^(gammaV-1).* X(1:paths).^(gammaX).* ...
((mu1.*V(1:paths).^beta1 + mu2.*V(1:paths).^beta2).*Random1(1:paths) * 1/sqrt(3).* dtM^1.5 + ...
sigma0*V(1:paths).^gamma.*Random1(1:paths).*Random2(1:paths)*dtM/2)+ ...
.5*sqrt(1-rho^2)* sigma1*gammaV.*(gammaV-1).* V(1:paths).^(gammaV-2).* X(1:paths).^(gammaX).* ...
(sigma0^2*V(1:paths).^(2*gamma).*Random1(1:paths)*1/sqrt(3)*dtM^1.5)+ ...
sqrt(1-rho^2)* sigma1*gammaV.* V(1:paths).^(gammaV-1).*gammaX.* X(1:paths).^(gammaX-1).* ...
rho.* sigma1.* V(1:paths).^gammaV .*X(1:paths).^gammaX .*sigma0.*V(1:paths).^gamma.*Random1(1:paths)*1/sqrt(3)*dtM^1.5+ ...
rho* sigma1* V(1:paths).^gammaV.*gammaX.* X(1:paths).^(gammaX-1).* ...
((a* X(1:paths).^alpha1 + b* X(1:paths).^alpha2).*Random2(1:paths) * 1/sqrt(3).* dtM^1.5 + ...
sqrt(1-rho^2)* sigma1* V(1:paths).^gammaV.* X(1:paths).^gammaX .*Random1(1:paths).*Random2(1:paths) * dtM/2 + ...
rho* sigma1* V(1:paths).^gammaV .*X(1:paths).^gammaX .*(Random2(1:paths).^2-1)*dtM/2)+ ...
.5*rho* sigma1* V(1:paths).^gammaV.*gammaX.*(gammaX-1).* X(1:paths).^(gammaX-2).* ...
(sigma1^2* V(1:paths).^(2*gammaV).* X(1:paths).^(2*gammaX) .*Random2(1:paths).*1/sqrt(3).*dtM^1.5)+ ...
rho* sigma1*gammaV.* V(1:paths).^(gammaV-1).* X(1:paths).^(gammaX).* ...
((mu1.*V(1:paths).^beta1 + mu2.*V(1:paths).^beta2).*Random2(1:paths) * 1/sqrt(3).* dtM^1.5 + ...
sigma0*V(1:paths).^gamma.*(Random2(1:paths).^2-1)*dtM/2)+ ...
.5*rho* sigma1*gammaV.*(gammaV-1).* V(1:paths).^(gammaV-2).* X(1:paths).^(gammaX).* ...
sigma0^2.*V(1:paths).^(2*gamma).*Random2(1:paths) * 1/sqrt(3).* dtM^1.5+ ...
rho* sigma1*gammaV.* V(1:paths).^(gammaV-1).*gammaX.* X(1:paths).^(gammaX-1).* ...
rho.* sigma1.* V(1:paths).^gammaV .*X(1:paths).^gammaX .*sigma0.*V(1:paths).^gamma.*Random2(1:paths)*1/sqrt(3)*dtM^1.5;
VBefore=V;
V(1:paths)=V(1:paths)+ ...
(mu1.*V(1:paths).^beta1 + mu2.*V(1:paths).^beta2)*dtM + ...
sigma0*V(1:paths).^gamma .*Random2(1:paths)*sqrt(dtM) + ...
(mu1.*beta1*V(1:paths).^(beta1-1) + mu2.*beta2.*V(1:paths).^(beta2-1)).* ...
((mu1.*V(1:paths).^beta1 + mu2.*V(1:paths).^beta2)*dtM^2/2 + ...
sigma0*V(1:paths).^gamma .*Random2(1:paths)*(1-1/sqrt(3))*dtM^1.5) + ...
.5*(mu1.*beta1.*(beta1-1).*V(1:paths).^(beta1-2) + mu2.*beta2.*(beta2-1).*V(1:paths).^(beta2-2)).* ...
sigma0^2.*V(1:paths).^(2*gamma).*dtM^2/2 + ...
sigma0*gamma*V(1:paths).^(gamma-1) .* ...
((mu1.*V(1:paths).^beta1 + mu2.*V(1:paths).^beta2).*Random2(1:paths).*1/sqrt(3)*dtM^1.5 + ...
sigma0.*V(1:paths).^gamma .*(Random2(1:paths).^2-1)*dtM/2) + ...
.5*sigma0*gamma*(gamma-1).*V(1:paths).^(gamma-2) .* ...
sigma0^2.*V(1:paths).^(2*gamma) .*Random2(1:paths).*1/sqrt(3)*dtM^1.5;
%Vm=.5*VBefore+.5*V;
Vm=V;
% X(1:paths)=X(1:paths)+ ...
% sigma1* Vm(1:paths).^gammaV.* X(1:paths).^gammaX .*Random1(1:paths) * sqrt(dtM) + ...
% sigma1* Vm(1:paths).^gammaV.*gammaX.* X(1:paths).^(gammaX-1).* ...
% (sigma1* Vm(1:paths).^gammaV.* X(1:paths).^gammaX .*(Random1(1:paths).^2-1) * dtM/2)+ ...
% .5*sigma1* Vm(1:paths).^gammaV.*gammaX.*(gammaX-1).* X(1:paths).^(gammaX-2).* ...
% (sigma1^2* Vm(1:paths).^(2*gammaV).* X(1:paths).^(2*gammaX) .*Random1(1:paths).*1/sqrt(3).*dtM^1.5);%+ ...
end
%SVolMeanAnalytic=thetaV+(V0-thetaV)*exp(-kappaV*dt*Tt)
SVolMeanAnalytic=theta+(v00-theta)*exp(-kappa*dt*Tt)
SVolMeanMC=sum(V(1:paths))/paths
AssetMeanAnalytic=x0
AssetMeanMC=sum(X(1:paths))/paths
theta
v00
kappa
dt
Tt
T
%MeanX
disp('true Mean only applicble to standard SV mean reverting type models otherwise disregard');
TrueMean=theta+(v00-theta)*exp(-kappa*T)%Mean reverting SDE original variable true average
MaxCutOff=30;
NoOfBins=1000;%round(1*500*gamma^2*4*sigma0/sqrt(MCMean)/(1+kappa));%Decrease the number of bins if the graph is too
[XDensity,IndexOutX,IndexMaxX] = MakeDensityFromSimulation_Infiniti_NEW(X,paths,NoOfBins,MaxCutOff );
plot(xx(wnStart+1:Mm-1),pxx(wnStart+1:Mm-1),'r',IndexOutX(1:IndexMaxX),XDensity(1:IndexMaxX),'g');
%plot(y_w(wnStart+1:Nn-1),fy_w(wnStart+1:Nn-1),'r',IndexOutY(1:IndexMaxY),YDensity(1:IndexMaxY),'g',Z(wnStart+1:Nn-1),fy_w(wnStart+1:Nn-1),'b');
title(sprintf('x0 = %.2f,thetaX=%.2f,kappaX=%.2f,gammaX=%.2f,sigmaX=%.2f,v0 =%.2f,kappa=%.2f,theta=%.2f,gamma=%.2f,sigma0=%.2f,T=%.2f,dt=%.3f,M=%.4f',x0,thetaX,kappaX,gammaX,sigmaX,v00,kappa,theta,gamma,sigma0,T,dt,ItoHermiteMeanAsset));
%,sprintf('theta= %f', theta), sprintf('kappa = %f', kappa),sprintf('sigma = %f', sigma0),sprintf('T = %f', T));
legend({'Ito-Hermite Density','Monte Carlo Density'},'Location','northeast')
str=input('red line is density of SDE from Ito-Hermite method, green is monte carlo.');
%plot(y_w(wnStart+1:Nn-1),fy_w(wnStart+1:Nn-1),'r',IndexOutY(1:IndexMaxY),YDensity(1:IndexMaxY),'g',Z(wnStart+1:Nn-1),fy_w(wnStart+1:Nn-1),'b');
NoOfBins=round(1*500*gamma^2*4*sigma0/sqrt(SVolMeanMC)/(1+kappa))/10;
[VDensity,IndexOutV,IndexMaxV] = MakeDensityFromSimulation_Infiniti_NEW(V,paths,NoOfBins,MaxCutOff );
%[YdtDensity,IndexOutYdt,IndexMaxYdt] = MakeDensityFromSimulation_Infiniti_NEW(YYdt,paths,NoOfBins,MaxCutOff );
plot(yy(wnStart+1:Nn-1),pyy(wnStart+1:Nn-1),'r',IndexOutV(1:IndexMaxV),VDensity(1:IndexMaxV),'g');
title(sprintf('v0 =%.2f,kappa=%.2f,theta=%.2f,gamma=%.2f,sigma0=%.2f,T=%.2f,dt=%.3f,M=%.4f',v00,kappa,theta,gamma,sigma0,T,dt,ItoHermiteMeanVar));
end
function [Y] = ItoTaylorCoeffsNew(alpha,beta1,beta2,gamma)
%In the coefficient calculation program which calculates Y(l1,l2,l3,l4),
%I have used four levels of looping each for relevant expansion order.
%The first loop takes four values and second loop takes 16 values and
%third loop takes 64 values and so on. And then each coefficient
%term can be individually calculated while carefully accounting
%for path dependence.
%So for example in a nested loop structure
%m1= 1:mDim
% m2=1:mDim
% m3=1:mDim
% l(m1)=l(m1)+1;
% l(m2)=l(m2)+1;
% l(m3)=l(m3)+1;
%in the above looping loop takes values from one to four with one
%indicating the first drift term, two indicating the second drift term
%and three indicating quadratic variation term and
%four indicating the volatility term. And with this looping structure
%we can So in the above looping m1=1 would mean that all terms are
%descendent of first drift term and m2=4 would mean that all terms are
%descendent of first drift term on first expansion order and descendent
%of volatility term on the second order and so we can keep track of path
%dependence perfectly.
%And on each level, we individually calculate the descendent terms. While
%keeping track of path dependence and calculating the coefficients with
%careful path dependence consideration, we update the appropriate element
%in our polynomial like expansion coefficient array
%explaining the part of code
%m1= 1:mDim
% m2=1:mDim
% m3=1:mDim
% l(m1)=l(m1)+1;
% l(m2)=l(m2)+1;
% l(m3)=l(m3)+1;
%Y(l(1)+1,l(2),l(3),l(4))=Y(l(1)+1,l(2),l(3),l(4))+Coeff1st*IntegralCoeff(1,1,1,2);
%Here l(1) denotes l1 but written as l(1) so it can be conveniently
%updated with the loop variable when the loop variable takes value one
%indicating first drift term . And l(2) could be conveniently updated when
%the loop variable takes value equal to two indicating second
%drift term and so on.
%Here is the part of code snippet for that
%for m1=1:mDim
% l(1)=1;
% l(2)=1;
% l(3)=1;
% l(4)=1;
% l(m1)=l(m1)+1;
%CoeffDX1 = alpha + (l(1)-1) *beta1 + (l(2)-1) *beta2 + (l(3)-1) *2*gamma + (l(4)-1)*gamma - (l(1)-1) - (l(2)-1) - 2*(l(3)-1) - (l(4)-1);
% CoeffDX2 = CoeffDX1 - 1;
% ArrIndex0=m1;
% ArrIndex=(m1-1)*mDim;
% Coeff1st=Y1(ArrIndex0)*CoeffDX1;
% Coeff2nd=Y1(ArrIndex0)*.5*CoeffDX1*CoeffDX2;
% Y2(1+ArrIndex)=Coeff1st;
% Y(l(1)+1,l(2),l(3),l(4))=Y(l(1)+1,l(2),l(3),l(4))+Coeff1st*IntegralCoeff(1,1,2,n1(m1));
% Y2(2+ArrIndex)=Coeff1st;
% Y(l(1),l(2)+1,l(3),l(4))=Y(l(1),l(2)+1,l(3),l(4))+Coeff1st*IntegralCoeff(1,1,2,n1(m1));
% Y2(3+ArrIndex)=Coeff2nd;
% Y(l(1),l(2),l(3)+1,l(4))=Y(l(1),l(2),l(3)+1,l(4))+Coeff2nd*IntegralCoeff(1,1,2,n1(m1));
% Y2(4+ArrIndex)=Coeff1st;
% Y(l(1),l(2),l(3),l(4)+1)=Y(l(1),l(2),l(3),l(4)+1)+Coeff1st*IntegralCoeff(1,1,3,n1(m1));
%The first four lines update the array indices according to the parent term.
%And then CoeffDX1 and CoeffDX2 are calculated according to algebraic exponents on parent terms.
%ArrIndex0=m1; calculates the array index of the parent term
%And ArrIndex=(m1-1)*mDim; calculates the array index of the descendent terms
%And coefficient of the drift and volatility descendent terms is
%calculated by multiplying the coefficient of the parent term by
%Coeff1st=Y1(ArrIndex0)*CoeffDX1;
%And coefficient of the quadratic variation descendent terms is
%calculated by multiplying the coefficient of the parent term by
%Coeff2nd=Y1(ArrIndex0)*.5*CoeffDX1*CoeffDX2;
%And then each of the four descendent terms are updated with Coeff1st
%if they are drift or volatility descendent terms or Coeff2nd if
%they are quadratic variation descendent terms.
%Here Y1 indicates the temporary coefficient array with parent terms on
%first level. And Y2 denotes temporary coefficient array with parent terms
%on second level and Y3 indicates temporary coefficient array with parent terms on third level.
[IntegralCoeff,IntegralCoeffdt,IntegralCoeffdz] = ComputeIntegralCoeffs();
n1(1)=2;
n1(2)=2;
n1(3)=2;
n1(4)=3;
%n1(1), n1(2), n1(3) are drift and quadratic variation term variables
%and take a value equal to 2 indicating a dt integral.
%n1(4) is volatility term variable and indicates a dz-integral by taking a
%value of 3.
mDim=4; % four descendent terms in each expansion
Y(1:5,1:5,1:5,1:5)=0;
Y1(1:mDim)=0;
Y2(1:mDim*mDim)=0;
Y3(1:mDim*mDim*mDim)=0;
%First Ito-hermite expansion level starts here. No loops but four
%descendent terms.
l(1)=1;
l(2)=1;
l(3)=1;
l(4)=1;
CoeffDX1 = alpha;
CoeffDX2 = CoeffDX1 - 1;
Coeff1st=CoeffDX1;
Coeff2nd=.5*CoeffDX1*CoeffDX2;
Y1(1)=Coeff1st;
Y(l(1)+1,l(2),l(3),l(4))=Y(l(1)+1,l(2),l(3),l(4))+Coeff1st*IntegralCoeff(1,1,1,2);
Y1(2)=Coeff1st;
Y(l(1),l(2)+1,l(3),l(4))=Y(l(1),l(2)+1,l(3),l(4))+Coeff1st*IntegralCoeff(1,1,1,2);
Y1(3)=Coeff2nd;
Y(l(1),l(2),l(3)+1,l(4))=Y(l(1),l(2),l(3)+1,l(4))+Coeff2nd*IntegralCoeff(1,1,1,2);
Y1(4)=Coeff1st;
Y(l(1),l(2),l(3),l(4)+1)=Y(l(1),l(2),l(3),l(4)+1)+Coeff1st*IntegralCoeff(1,1,1,3);
%Second Ito-hermite expansion level starts. It has a loop over four parent
%terms and there are four descendent terms for each parent term.
%The coefficient terms are then lumped in a polynomial-like expansion
%array of coefficients.
for m1=1:mDim
l(1)=1;
l(2)=1;
l(3)=1;
l(4)=1;
l(m1)=l(m1)+1;
CoeffDX1 = alpha + (l(1)-1) *beta1 + (l(2)-1) *beta2 + (l(3)-1) *2*gamma + (l(4)-1)*gamma ...
- (l(1)-1) - (l(2)-1) - 2*(l(3)-1) - (l(4)-1);
CoeffDX2 = CoeffDX1 - 1;
ArrIndex0=m1;
ArrIndex=(m1-1)*mDim;
Coeff1st=Y1(ArrIndex0)*CoeffDX1;
Coeff2nd=Y1(ArrIndex0)*.5*CoeffDX1*CoeffDX2;
Y2(1+ArrIndex)=Coeff1st;
Y(l(1)+1,l(2),l(3),l(4))=Y(l(1)+1,l(2),l(3),l(4))+Coeff1st*IntegralCoeff(1,1,2,n1(m1));
Y2(2+ArrIndex)=Coeff1st;
Y(l(1),l(2)+1,l(3),l(4))=Y(l(1),l(2)+1,l(3),l(4))+Coeff1st*IntegralCoeff(1,1,2,n1(m1));
Y2(3+ArrIndex)=Coeff2nd;
Y(l(1),l(2),l(3)+1,l(4))=Y(l(1),l(2),l(3)+1,l(4))+Coeff2nd*IntegralCoeff(1,1,2,n1(m1));
Y2(4+ArrIndex)=Coeff1st;
Y(l(1),l(2),l(3),l(4)+1)=Y(l(1),l(2),l(3),l(4)+1)+Coeff1st*IntegralCoeff(1,1,3,n1(m1));
%Third Ito-hermite expansion level starts and it is a nested loop with
%a total of sixteen parents and each parent takes four descendent
%terms.
for m2=1:mDim
l(1)=1;
l(2)=1;
l(3)=1;
l(4)=1;
l(m1)=l(m1)+1;
l(m2)=l(m2)+1;
CoeffDX1 = alpha + (l(1)-1) *beta1 + (l(2)-1) *beta2 + (l(3)-1) *2*gamma + (l(4)-1)*gamma ...
- (l(1)-1) - (l(2)-1) - 2*(l(3)-1) - (l(4)-1);
CoeffDX2=CoeffDX1-1;
ArrIndex0=(m1-1)*mDim+m2;
ArrIndex=((m1-1)*mDim+(m2-1))*mDim;
Coeff1st=Y2(ArrIndex0)*CoeffDX1;
Coeff2nd=Y2(ArrIndex0)*.5*CoeffDX1*CoeffDX2;
Y3(1+ArrIndex)=Coeff1st;
Y(l(1)+1,l(2),l(3),l(4))=Y(l(1)+1,l(2),l(3),l(4))+Coeff1st*IntegralCoeff(1,2,n1(m2),n1(m1));
Y3(2+ArrIndex)=Coeff1st;
Y(l(1),l(2)+1,l(3),l(4))=Y(l(1),l(2)+1,l(3),l(4))+Coeff1st*IntegralCoeff(1,2,n1(m2),n1(m1));
Y3(3+ArrIndex)=Coeff2nd;
Y(l(1),l(2),l(3)+1,l(4))=Y(l(1),l(2),l(3)+1,l(4))+Coeff2nd*IntegralCoeff(1,2,n1(m2),n1(m1));
Y3(4+ArrIndex)=Coeff1st;
Y(l(1),l(2),l(3),l(4)+1)=Y(l(1),l(2),l(3),l(4)+1)+Coeff1st*IntegralCoeff(1,3,n1(m2),n1(m1));
%fourht Ito-hermite expansion level starts and it is a triply-nested loop with
%a total of sixteen parents and each parent takes four descendent
%terms. We then lump the terms in a relatively sparse polynomial
%like expansion coefficient array that has smaller number of
%non-zero terms.
for m3=1:mDim
l(1)=1;
l(2)=1;
l(3)=1;
l(4)=1;
l(m1)=l(m1)+1;
l(m2)=l(m2)+1;
l(m3)=l(m3)+1;
CoeffDX1 = alpha + (l(1)-1) *beta1 + (l(2)-1) *beta2 + (l(3)-1) *2*gamma + (l(4)-1)*gamma ...
- (l(1)-1) - (l(2)-1) - 2*(l(3)-1) - (l(4)-1);
CoeffDX2=CoeffDX1-1;
ArrIndex0=((m1-1)*mDim+(m2-1))*mDim+m3;
%ArrIndex=(((m1-1)*mDim+(m2-1))*mDim+(m3-1))*mDim;
Coeff1st=Y3(ArrIndex0)*CoeffDX1;
Coeff2nd=Y3(ArrIndex0)*.5*CoeffDX1*CoeffDX2;
%Y4(1+ArrIndex)=Coeff1st;
Y(l(1)+1,l(2),l(3),l(4))=Y(l(1)+1,l(2),l(3),l(4))+Coeff1st*IntegralCoeff(2,n1(m3),n1(m2),n1(m1));
%Y4(2+ArrIndex)=Coeff1st;
Y(l(1),l(2)+1,l(3),l(4))=Y(l(1),l(2)+1,l(3),l(4))+Coeff1st*IntegralCoeff(2,n1(m3),n1(m2),n1(m1));
%Y4(3+ArrIndex)=Coeff2nd;
Y(l(1),l(2),l(3)+1,l(4))=Y(l(1),l(2),l(3)+1,l(4))+Coeff2nd*IntegralCoeff(2,n1(m3),n1(m2),n1(m1));
%Y4(4+ArrIndex)=Coeff1st;
Y(l(1),l(2),l(3),l(4)+1)=Y(l(1),l(2),l(3),l(4)+1)+Coeff1st*IntegralCoeff(3,n1(m3),n1(m2),n1(m1));
end
end
end
end
function [IntegralCoeff0,IntegralCoeffdt,IntegralCoeffdz] = ComputeIntegralCoeffs()
IntegralCoeff(1:3,1:3,1:3,1:3)=0;
IntegralCoeffdt(1:3,1:3,1:3,1:3)=0;
IntegralCoeffdz(1:3,1:3,1:3,1:3)=0;
IntegralCoeff0(1:3,1:3,1:3,1:3)=0;
IntegralCoeff0(1,1,1,2)=1;
IntegralCoeff0(1,1,1,3)=1;
IntegralCoeff0(1,1,2,2)=1/2;
IntegralCoeff0(1,1,3,2)=1-1/sqrt(3);
IntegralCoeff0(1,1,2,3)=1/sqrt(3);
IntegralCoeff0(1,1,3,3)=1/2;
IntegralCoeff0(1,2,2,2)=1/6;
IntegralCoeff0(1,3,2,2)=(1-1/sqrt(3))*1/2*(1-1/sqrt(5));
IntegralCoeff0(1,2,3,2)=1/sqrt(3)/2*(1-1/sqrt(5));
IntegralCoeff0(1,3,3,2)=1/2*(1-sqrt(2)/2);
IntegralCoeff0(1,2,2,3)=1/2*1/sqrt(5);
IntegralCoeff0(1,3,2,3)=(1-1/sqrt(3))*1/sqrt(2)*1/2;
IntegralCoeff0(1,2,3,3)=1/sqrt(3)/sqrt(2)*1/(2);
IntegralCoeff0(1,3,3,3)=1/6;
IntegralCoeff0(2,2,2,2)=1/24;
IntegralCoeff0(2,2,3,2)=1/2*1/sqrt(5)*1/3*(1-1/sqrt(7));
IntegralCoeff0(2,3,2,2)=1/sqrt(3)*1/2*(1-1/sqrt(5))*1/3*(1-1/sqrt(7));
IntegralCoeff0(3,2,2,2)=(1-1/sqrt(3))*1/2*(1-1/sqrt(5))*1/3*(1-1/sqrt(7));
IntegralCoeff0(3,3,2,2)=1/2*(1-sqrt(2)/2)*1/2*(1-sqrt(2)/sqrt(6));
IntegralCoeff0(2,3,3,2)=1/sqrt(3)*1/sqrt(2)*1/2*1/2*(1-sqrt(2)/sqrt(6));
IntegralCoeff0(3,2,3,2)=(1-1/sqrt(3))*1/sqrt(2)*1/2*1/2*(1-sqrt(2)/sqrt(6));
IntegralCoeff0(3,3,3,2)=1/6*(1-sqrt(3)/sqrt(5));
IntegralCoeff0(2,2,2,3)=1/6*1/sqrt(7);
IntegralCoeff0(2,2,3,3)=1/2*1/sqrt(5)*1/sqrt(2)*1/sqrt(6);
IntegralCoeff0(2,3,2,3)=1/sqrt(3)*1/2*(1-1/sqrt(5))*1/sqrt(2)*1/sqrt(6);
IntegralCoeff0(3,2,2,3)=(1-1/sqrt(3))*1/2*(1-1/sqrt(5))*1/sqrt(2)*1/sqrt(6);
IntegralCoeff0(3,3,2,3)=1/2*(1-sqrt(2)/2)*1/sqrt(3)*1/sqrt(5);
IntegralCoeff0(2,3,3,3)=1/sqrt(3)*1/sqrt(2)*1/sqrt(4)*1/sqrt(3)*(1/sqrt(5));
IntegralCoeff0(3,2,3,3)=(1-1/sqrt(3))*1/sqrt(2)*1/2*1/sqrt(3)*1/sqrt(5);
IntegralCoeff0(3,3,3,3)=1/24;
%Can also be calculated with algorithm below.
%here IntegralCoeffdt indicates the coefficients of a dt-integral.
%This dt-integral means that you are calculating the Ito-hermite expansion
%of Integral X(t)^alpha dt with X(t) dynamics given by the SDE
%here IntegralCoeffdz indicates the coefficients of a dz-integral.
%This dz-integral means that you are calculating the Ito-hermite expansion
%of Integral X(t)^alpha dz(t) with X(t) dynamics given by the SDE
%IntegralCoeff is is associated with expansion of X(t)^alpha.
%IntegralCoeff below is not returned and IntegralCoeff0 manually calculated
%above is returned but both are the same.
l0(1:2)=1;
for m4=1:2
l0(1)=1;
l0(2)=1;
%IntegralCoeff4(m4,1,1,1)=1;
%IntegralCoeff4(m4,1,1,1)=1;
%1 is added to m4 since index 1 stands for zero, 2 for one and three
%for two.
IntegralCoeff(1,1,1,m4+1)=1;
l0(m4)=l0(m4)+1;
IntegralCoeffdt(1,1,1,m4+1)=IntegralCoeff(1,1,1,m4+1)* ...
1/(l0(1)-1+1)*(1-sqrt(l0(2)-1)/sqrt(2*(l0(1)-1)+(l0(2)-1)+2));
IntegralCoeffdz(1,1,1,m4+1)= IntegralCoeff(1,1,1,m4+1)* ...
1/sqrt(l0(2)-1+1)/sqrt(2*(l0(1)-1)+(l0(2)-1)+1);
for m3=1:2
l0(1)=1;
l0(2)=1;
l0(m4)=l0(m4)+1;
if(m3==1)
IntegralCoeff(1,1,m4+1,m3+1)=1/(l0(1)-1+1)*(1-sqrt(l0(2)-1)/sqrt(2*(l0(1)-1)+(l0(2)-1)+2));
end
if(m3==2)
IntegralCoeff(1,1,m4+1,m3+1)= 1/sqrt(l0(2)-1+1)/sqrt(2*(l0(1)-1)+(l0(2)-1)+1);
end
l0(m3)=l0(m3)+1;
%IntegralCoeff(1,1,m4+1,m3+1)=IntegralCoeff4(m4,m3,1,1);
IntegralCoeffdt(1,1,m4+1,m3+1)=IntegralCoeff(1,1,m4+1,m3+1)* ...
1/(l0(1)-1+1)*(1-sqrt(l0(2)-1)/sqrt(2*(l0(1)-1)+(l0(2)-1)+2));
IntegralCoeffdz(1,1,m4+1,m3+1)= IntegralCoeff(1,1,m4+1,m3+1)* ...
1/sqrt(l0(2)-1+1)/sqrt(2*(l0(1)-1)+(l0(2)-1)+1);
for m2=1:2
l0(1)=1;
l0(2)=1;
l0(m4)=l0(m4)+1;
l0(m3)=l0(m3)+1;
if(m2==1)
IntegralCoeff(1,m4+1,m3+1,m2+1)=IntegralCoeff(1,1,m4+1,m3+1)*1/(l0(1)-1+1)*(1-sqrt(l0(2)-1)/sqrt(2*(l0(1)-1)+(l0(2)-1)+2));
end
if(m2==2)
IntegralCoeff(1,m4+1,m3+1,m2+1)= IntegralCoeff(1,1,m4+1,m3+1)*1/sqrt(l0(2)-1+1)/sqrt(2*(l0(1)-1)+(l0(2)-1)+1);
end
l0(m2)=l0(m2)+1;
%IntegralCoeff(1,m4+1,m3+1,m2+1)=IntegralCoeff4(m4,m3,m2,1);
IntegralCoeffdt(1,m4+1,m3+1,m2+1)=IntegralCoeff(1,m4+1,m3+1,m2+1)* ...
1/(l0(1)-1+1)*(1-sqrt(l0(2)-1)/sqrt(2*(l0(1)-1)+(l0(2)-1)+2));
IntegralCoeffdz(1,m4+1,m3+1,m2+1)= IntegralCoeff(1,m4+1,m3+1,m2+1)* ...
1/sqrt(l0(2)-1+1)/sqrt(2*(l0(1)-1)+(l0(2)-1)+1);
for m1=1:2
l0(1)=1;
l0(2)=1;
l0(m4)=l0(m4)+1;
l0(m3)=l0(m3)+1;
l0(m2)=l0(m2)+1;
if(m1==1)
IntegralCoeff(m4+1,m3+1,m2+1,m1+1)=IntegralCoeff(1,m4+1,m3+1,m2+1)*1/(l0(1)-1+1)*(1-sqrt(l0(2)-1)/sqrt(2*(l0(1)-1)+(l0(2)-1)+2));
end
if(m1==2)
IntegralCoeff(m4+1,m3+1,m2+1,m1+1)= IntegralCoeff(1,m4+1,m3+1,m2+1)*1/sqrt(l0(2)-1+1)/sqrt(2*(l0(1)-1)+(l0(2)-1)+1);
end
l0(m1)=l0(m1)+1;
%IntegralCoeff(m4+1,m3+1,m2+1,m1+1)=IntegralCoeff4(m4,m3,m2,m1);
IntegralCoeffdt(m4+1,m3+1,m2+1,m1+1)=IntegralCoeff(m4+1,m3+1,m2+1,m1+1)* ...
1/(l0(1)-1+1)*(1-sqrt(l0(2)-1)/sqrt(2*(l0(1)-1)+(l0(2)-1)+2));
IntegralCoeffdz(m4+1,m3+1,m2+1,m1+1)= IntegralCoeff(m4+1,m3+1,m2+1,m1+1)* ...
1/sqrt(l0(2)-1+1)/sqrt(2*(l0(1)-1)+(l0(2)-1)+1);
end
end
end
end
end
function [wMu0dt,dwMu0dtdw] = BesselDriftAndDerivativesH0(w0,YqCoeff0,Fp1,gamma,dt,ExpnOrder)
NoOfTerms=19;
%NoOfTerms=9;
YqCoeffa(1:NoOfTerms)=0.0;
%Fp1
Fp1=Fp1/(1-gamma);
%Fp1
%gamma
YqCoeffa(1)=YqCoeff0(1,1,2,1)*dt;%*(1-gamma)^Fp1(1,1,2,1)*dt;
YqCoeffa(2)=YqCoeff0(1,2,1,1)*dt;%*(1-gamma)^Fp1(1,2,1,1)*dt;
YqCoeffa(3)=YqCoeff0(2,1,1,1)*dt;%*(1-gamma)^Fp1(2,1,1,1)*dt;
YqCoeffa(4)=YqCoeff0(1,1,3,1)*dt^2;%*(1-gamma)^Fp1(1,1,3,1)*dt^2;
YqCoeffa(5)=YqCoeff0(1,2,2,1)*dt^2;%*(1-gamma)^Fp1(1,2,2,1)*dt^2;
YqCoeffa(6)=YqCoeff0(2,1,2,1)*dt^2;%*(1-gamma)^Fp1(2,1,2,1)*dt^2;
YqCoeffa(7)=YqCoeff0(1,3,1,1)*dt^2;%*(1-gamma)^Fp1(1,3,1,1)*dt^2;
YqCoeffa(8)=YqCoeff0(2,2,1,1)*dt^2;%*(1-gamma)^Fp1(2,2,1,1)*dt^2;
YqCoeffa(9)=YqCoeff0(3,1,1,1)*dt^2;%*(1-gamma)^Fp1(3,1,1,1)*dt^2;
YqCoeffa(10)=YqCoeff0(1,1,4,1)*dt^3;%;*(1-gamma)^Fp1(1,1,4,1)*dt^3;
YqCoeffa(11)=YqCoeff0(1,2,3,1)*dt^3;%;*(1-gamma)^Fp1(1,2,3,1)*dt^3;
YqCoeffa(12)=YqCoeff0(2,1,3,1)*dt^3;%*(1-gamma)^Fp1(2,1,3,1)*dt^3;
YqCoeffa(13)=YqCoeff0(1,3,2,1)*dt^3;%*(1-gamma)^Fp1(1,3,2,1)*dt^3;
YqCoeffa(14)=YqCoeff0(2,2,2,1)*dt^3;%*(1-gamma)^Fp1(2,2,2,1)*dt^3;
YqCoeffa(15)=YqCoeff0(3,1,2,1)*dt^3;%*(1-gamma)^Fp1(3,1,2,1)*dt^3;
YqCoeffa(16)=YqCoeff0(1,4,1,1)*dt^3;%*(1-gamma)^Fp1(1,4,1,1)*dt^3;
YqCoeffa(17)=YqCoeff0(2,3,1,1)*dt^3;%*(1-gamma)^Fp1(2,3,1,1)*dt^3;
YqCoeffa(18)=YqCoeff0(3,2,1,1)*dt^3;%*(1-gamma)^Fp1(3,2,1,1)*dt^3;
YqCoeffa(19)=YqCoeff0(4,1,1,1)*dt^3;%*(1-gamma)^Fp1(4,1,1,1)*dt^3;
Fp2(1)=Fp1(1,1,2,1);
Fp2(2)=Fp1(1,2,1,1);
Fp2(3)=Fp1(2,1,1,1);
Fp2(4)=Fp1(1,1,3,1);
Fp2(5)=Fp1(1,2,2,1);
Fp2(6)=Fp1(2,1,2,1);
Fp2(7)=Fp1(1,3,1,1);
Fp2(8)=Fp1(2,2,1,1);
Fp2(9)=Fp1(3,1,1,1);
Fp2(10)=Fp1(1,1,4,1);
Fp2(11)=Fp1(1,2,3,1);
Fp2(12)=Fp1(2,1,3,1);
Fp2(13)=Fp1(1,3,2,1);
Fp2(14)=Fp1(2,2,2,1);
Fp2(15)=Fp1(3,1,2,1);
Fp2(16)=Fp1(1,4,1,1);
Fp2(17)=Fp1(2,3,1,1);
Fp2(18)=Fp1(3,2,1,1);
Fp2(19)=Fp1(4,1,1,1);
%YqCoeffa
%Fp2
%str=input('Look at numbers');
wMu0dt0=0;
dwMu0dt(1:ExpnOrder)=0.0;
wMu0dt=0;
dwMu0dtdw(1:ExpnOrder)=0.0;
for mm=1:NoOfTerms
wMu0dt0=YqCoeffa(mm).*((1-gamma)*w0).^Fp2(mm);
for nn=1:ExpnOrder
if(nn==1)
dwMu0dt(nn)=wMu0dt0*Fp2(mm)/w0;
else
dwMu0dt(nn)=dwMu0dt(nn-1)*(Fp2(mm)-(nn-1))/w0;
end
end
wMu0dt=wMu0dt+wMu0dt0;
for nn=1:ExpnOrder
dwMu0dtdw(nn)=dwMu0dtdw(nn)+dwMu0dt(nn);
end
end
end
function [wMu0dt,dwMu0dtdw,Ratio] = BesselDriftAndDerivatives04A(w0,mu1,mu2,beta1,beta2,sigma0,gamma,dt,ExpnOrder)
NoOfTerms=9;%excluding dt^3 terms
YqCoeff(1:NoOfTerms)=0.0;
Fp(1:NoOfTerms)=0.0;
a0=((beta1-gamma)/(1-gamma));
b0=((beta2-gamma)/(1-gamma));
A=mu1;
B=mu2;
C=-.5*sigma0^2*gamma;
dt2=dt^2/2;
YqCoeff(1:9)=0;
YqCoeff(1)=A*dt;
YqCoeff(2)=B*dt;
YqCoeff(3)=C*dt;
YqCoeff(4)=A^2*a0*dt2*(1-gamma);
YqCoeff(5)=B^2*b0*dt2*(1-gamma);
YqCoeff(6)=1*1.5*.66*C^2*(-1)*dt2*(1-gamma)+1*1.5*.66* C*(-1)*(-2)*.5*sigma0^2 *dt2*(1-gamma)^2;
YqCoeff(7)=A*B*(a0+b0)*dt2*(1-gamma);
YqCoeff(8)=1*1.5*.66*A*C*(a0-1)*dt2*(1-gamma)^1+1*1.5*.66*.5*sigma0^2*A*a0*(a0-1)*dt2*(1-gamma)^2;
YqCoeff(9)=1*1.5*.66*B*C*(b0-1)*dt2*(1-gamma)^1+1*1.5*.66*.5*sigma0^2*B*b0*(b0-1)*dt2*(1-gamma)^2;
Fp(1)=(beta1-gamma)/(1-gamma);
Fp(2)=(beta2-gamma)/(1-gamma);
Fp(3)=-1;
Fp(4)=2*(beta1-gamma)/(1-gamma)-1;
Fp(5)=2*(beta2-gamma)/(1-gamma)-1;
Fp(6)=-3;
Fp(7)=(beta1-gamma)/(1-gamma)+(beta2-gamma)/(1-gamma)-1;
Fp(8)=(beta1-gamma)/(1-gamma)-2;
Fp(9)=(beta2-gamma)/(1-gamma)-2;
Ratio=2/dt*(YqCoeff(4)*((1-gamma)*w0).^Fp(4)+YqCoeff(5)*((1-gamma)*w0).^Fp(5)+YqCoeff(6)*((1-gamma)*w0).^Fp(6)+ ...
YqCoeff(7)*((1-gamma)*w0).^Fp(7)+YqCoeff(8)*((1-gamma)*w0).^Fp(8)+YqCoeff(9)*((1-gamma)*w0).^Fp(9))/ ...
(YqCoeff(1)*((1-gamma)*w0).^Fp(1)+YqCoeff(2)*((1-gamma)*w0).^Fp(2)+YqCoeff(3)*((1-gamma)*w0).^Fp(3));
Fp2(1:9)=Fp(1:9);%/(1-gamma);
wMu0dt0=0;
dwMu0dt(1:ExpnOrder)=0.0;
wMu0dt=0;
dwMu0dtdw(1:ExpnOrder)=0.0;
for mm=1:NoOfTerms
wMu0dt0=YqCoeff(mm).*((1-gamma)*w0).^Fp2(mm);
for nn=1:ExpnOrder
if(nn==1)
dwMu0dt(nn)=wMu0dt0*Fp2(mm)*1/w0;
else
dwMu0dt(nn)=dwMu0dt(nn-1)*(Fp2(mm)-(nn-1))/w0;
end
end
wMu0dt=wMu0dt+wMu0dt0;
for nn=1:ExpnOrder
dwMu0dtdw(nn)=dwMu0dtdw(nn)+dwMu0dt(nn);
end
end
end
function [b0,b] = CalculateDriftbCoeffs08A(wMu0dt,dwMu0dtdw,a,SeriesOrder)
b0=wMu0dt;
b(1)=a(1) *dwMu0dtdw(1);
b(2)=1/2*(2* a(2) *dwMu0dtdw(1)+a(1)^2 *dwMu0dtdw(2));
b(3)=1/6*(6 *a(3) *dwMu0dtdw(1)+6 *a(1)* a(2) *dwMu0dtdw(2)+a(1)^3 *dwMu0dtdw(3));
b(4)=1/24*(24* a(4) *dwMu0dtdw(1)+12* a(2)^2 *dwMu0dtdw(2)+24 *a(1)* a(3) *dwMu0dtdw(2)+ ...
12* a(1)^2* a(2) *dwMu0dtdw(3)+a(1)^4 *dwMu0dtdw(4));
if(SeriesOrder>=5)
b(5)=1/120*(120* a(5) *dwMu0dtdw(1)+120* a(2) *a(3) *dwMu0dtdw(2)+120* a(1)* a(4) *dwMu0dtdw(2)+ ...
60 *a(1)* a(2)^2 *dwMu0dtdw(3)+60* a(1)^2* a(3) *dwMu0dtdw(3)+ ...
20 *a(1)^3* a(2) *dwMu0dtdw(4)+a(1)^5 *dwMu0dtdw(5));
end
if(SeriesOrder>=6)
b(6)=1/720*(720* a(6) *dwMu0dtdw(1)+360* a(3)^2 *dwMu0dtdw(2)+720* a(2)* a(4) *dwMu0dtdw(2)+720* a(1)* a(5) *dwMu0dtdw(2)+ ...
120* a(2)^3 *dwMu0dtdw(3)+720* a(1)* a(2)* a(3) *dwMu0dtdw(3)+360* a(1)^2* a(4) *dwMu0dtdw(3)+ ...
180* a(1)^2* a(2)^2 *dwMu0dtdw(4)+120* a(1)^3* a(3) *dwMu0dtdw(4)+ ...
30* a(1)^4 *a(2) *dwMu0dtdw(5)+a(1)^6 *dwMu0dtdw(6));
end
if(SeriesOrder>=7)
b(7)=1/(720*7)*(5040* a(7)*dwMu0dtdw(1)+5040* a(3)* a(4)*dwMu0dtdw(2)+5040* a(2)* a(5) *dwMu0dtdw(2)+5040 *a(1)* a(6) *dwMu0dtdw(2)+ ...
2520* a(2)^2* a(3) *dwMu0dtdw(3)+2520* a(1)* a(3)^2 *dwMu0dtdw(3)+5040 *a(1)* a(2)* a(4) *dwMu0dtdw(3)+2520* a(1)^2 *a(5) *dwMu0dtdw(3)+ ...
840* a(1)* a(2)^3 *dwMu0dtdw(4)+2520* a(1)^2* a(2)* a(3) *dwMu0dtdw(4)+840* a(1)^3* a(4) *dwMu0dtdw(4)+ ...
420* a(1)^3* a(2)^2 *dwMu0dtdw(5)+210* a(1)^4* a(3) *dwMu0dtdw(5)+ ...
42* a(1)^5* a(2) *dwMu0dtdw(6)+a(1)^7 *dwMu0dtdw(7));
end
if(SeriesOrder>=8)
b(8)=1/(720*7*8)*(40320* a(8) *dwMu0dtdw(1)+20160* a(4)^2 *dwMu0dtdw(2)+40320* a(3)* a(5) *dwMu0dtdw(2)+40320* a(2) *a(6) *dwMu0dtdw(2)+ ...
40320* a(1) *a(7) *dwMu0dtdw(2)+ ...
20160* a(2)* a(3)^2 *dwMu0dtdw(3)+20160* a(2)^2* a(4) *dwMu0dtdw(3)+40320* a(1)* a(3)* a(4) *dwMu0dtdw(3)+40320* a(1)* a(2)* a(5) *dwMu0dtdw(3)+ ...
20160* a(1)^2* a(6) *dwMu0dtdw(3)+ ...
1680* a(2)^4 *dwMu0dtdw(4)+20160* a(1)* a(2)^2* a(3) *dwMu0dtdw(4)+10080* a(1)^2* a(3)^2 *dwMu0dtdw(4)+20160* a(1)^2* a(2) *a(4) *dwMu0dtdw(4)+ ...
6720* a(1)^3* a(5) *dwMu0dtdw(4)+ ...
3360* a(1)^2* a(2)^3 *dwMu0dtdw(5)+6720* a(1)^3 *a(2)* a(3) *dwMu0dtdw(5)+1680* a(1)^4* a(4) *dwMu0dtdw(5)+ ...
840* a(1)^4* a(2)^2 *dwMu0dtdw(6)+336* a(1)^5* a(3) *dwMu0dtdw(6)+ ...
56* a(1)^6* a(2) *dwMu0dtdw(7)+a(1)^8 *dwMu0dtdw(8));
end
%b(9:10)=0.0;
%Bound=abs(b(1)/b0)*gamma/(1-gamma);
%Bound=1/abs(b0/b(1))*gamma;%/(1-gamma);
%for nn=1:9
%
% if(abs(b(nn+1))>abs(b(nn)*Bound))
% % b(nn+1)=sign(b(nn+1))*abs(b(nn))*Bound;
% end
%end
%[b0,b] = ApplyBoundsOnSeriesCoeffs(b0,b);
%
%
%
% b(9)=1/(720*7*8*9)*(362880* a(9) *dwMu0dtdw(1)+ ...
% 362880* a(4)* a(5) *dwMu0dtdw(2)+ 362880* a(3)* a(6) *dwMu0dtdw(2) +362880* a(2)* a(7) *dwMu0dtdw(2) +362880* a(1) *a(8) *dwMu0dtdw(2) + ...
% 60480* a(3)^3 *dwMu0dtdw(3)+362880* a(2)* a(3)* a(4) *dwMu0dtdw(3)+181440* a(1)* a(4)^2 *dwMu0dtdw(3)+181440* a(2)^2* a(5) *dwMu0dtdw(3) + ...
% 362880* a(1)* a(3)* a(5) *dwMu0dtdw(3)+362880 *a(1)* a(2)* a(6) *dwMu0dtdw(3) +181440 *a(1)^2* a(7) *dwMu0dtdw(3)+ ...
% 60480* a(2)^3* a(3) *dwMu0dtdw(4)+181440* a(1)* a(2)* a(3)^2 *dwMu0dtdw(4)+181440* a(1)* a(2)^2 *a(4) *dwMu0dtdw(4)+ ...
% 181440* a(1)^2* a(3)* a(4) *dwMu0dtdw(4)+181440* a(1)^2* a(2)* a(5) *dwMu0dtdw(4)+60480* a(1)^3* a(6) *dwMu0dtdw(4)+ ...
% 15120* a(1)* a(2)^4 *dwMu0dtdw(5)+90720* a(1)^2* a(2)^2* a(3) *dwMu0dtdw(5)+30240* a(1)^3* a(3)^2 *dwMu0dtdw(5)+ ...
% 60480 *a(1)^3* a(2)* a(4) *dwMu0dtdw(5)+15120* a(1)^4* a(5) *dwMu0dtdw(5)+ ...
% 10080* a(1)^3* a(2)^3 *dwMu0dtdw(6)+15120* a(1)^4 *a(2)* a(3) *dwMu0dtdw(6)+3024* a(1)^5* a(4) *dwMu0dtdw(6)+ ...
% 1512* a(1)^5* a(2)^2 *dwMu0dtdw(7)+504* a(1)^6* a(3) *dwMu0dtdw(7)+ ...
% 72* a(1)^7 *a(2) *dwMu0dtdw(8)+a(1)^9 *dwMu0dtdw(9));
%
%
%
%
% b(10)=1/(720*7*8*9*10)*(3628800* a(10)* dwMu0dtdw(1)+ ...
% 1814400 * a(5)^2 *dwMu0dtdw(2)+3628800 *a(4)* a(6)* dwMu0dtdw(2)+3628800* a(3)* a(7)* dwMu0dtdw(2)+3628800 *a(2)* a(8)* dwMu0dtdw(2)+ ...
% 3628800* a(1)* a(9)* dwMu0dtdw(2)+ ...
% 1814400* a(3)^2* a(4)* dwMu0dtdw(3)+1814400* a(2)* a(4)^2* dwMu0dtdw(3)+3628800* a(2)* a(3)* a(5)* dwMu0dtdw(3)+3628800* a(1)* a(4)* a(5) *dwMu0dtdw(3)+ ...
% 1814400* a(2)^2* a(6)* dwMu0dtdw(3)+3628800* a(1)* a(3)* a(6)* dwMu0dtdw(3)+3628800 *a(1)* a(2)* a(7)* dwMu0dtdw(3)+1814400* a(1)^2* a(8)* dwMu0dtdw(3)+ ...
% 907200* a(2)^2 *a(3)^2* dwMu0dtdw(4)+604800* a(1)* a(3)^3* dwMu0dtdw(4)+604800* a(2)^3* a(4)* dwMu0dtdw(4)+3628800* a(1)* a(2)* a(3)* a(4)* dwMu0dtdw(4)+ ...
% 907200* a(1)^2* a(4)^2* dwMu0dtdw(4)+1814400* a(1)* a(2)^2* a(5)* dwMu0dtdw(4)+1814400* a(1)^2* a(3)* a(5)* dwMu0dtdw(4)+ ...
% 1814400* a(1)^2* a(2)* a(6)* dwMu0dtdw(4)+ 604800* a(1)^3* a(7) *dwMu0dtdw(4)+ ...
% 30240 *a(2)^5* dwMu0dtdw(5)+604800* a(1)* a(2)^3* a(3)* dwMu0dtdw(5)+907200 *a(1)^2* a(2)* a(3)^2* dwMu0dtdw(5)+907200* a(1)^2* a(2)^2* a(4) *dwMu0dtdw(5)+ ...
% 604800* a(1)^3* a(3)* a(4)* dwMu0dtdw(5)+604800* a(1)^3* a(2)* a(5)* dwMu0dtdw(5)+151200* a(1)^4* a(6)* dwMu0dtdw(5)+ ...
% 75600* a(1)^2* a(2)^4* dwMu0dtdw(6)+302400 *a(1)^3* a(2)^2* a(3)* dwMu0dtdw(6)+75600* a(1)^4 *a(3)^2* dwMu0dtdw(6)+151200* a(1)^4* a(2)* a(4) *dwMu0dtdw(6)+ ...
% 30240* a(1)^5* a(5)* dwMu0dtdw(6)+ ...
% 25200* a(1)^4* a(2)^3* dwMu0dtdw(7)+30240* a(1)^5* a(2)* a(3)* dwMu0dtdw(7)+5040* a(1)^6* a(4)* dwMu0dtdw(7)+ ...
% 2520* a(1)^6* a(2)^2* dwMu0dtdw(8)+720* a(1)^7* a(3)* dwMu0dtdw(8)+ ...
% 90 *a(1)^8* a(2)* dwMu0dtdw(9)+ ...
% a(1)^10* dwMu0dtdw(10));
end
function [wVol0dt,dwVol0dtdw] = BesselVolAndDerivativesH1(w0,YqCoeff0,Fp1,gamma,dt,ExpnOrder)
% c1(wnStart:Nn)=YqCoeff0(1,1,1,2).*yy(wnStart:Nn).^Fp1(1,1,1,2).*sqrt(dt)+ ...
% (YqCoeff0(1,1,2,2).*yy(wnStart:Nn).^Fp1(1,1,2,2)+YqCoeff0(1,2,1,2).*yy(wnStart:Nn).^Fp1(1,2,1,2)+ ...
% YqCoeff0(2,1,1,2).*yy(wnStart:Nn).^Fp1(2,1,1,2)).*dt^1.5+ ...
% (YqCoeff0(1,1,3,2).*yy(wnStart:Nn).^Fp1(1,1,3,2)+YqCoeff0(1,2,2,2).*yy(wnStart:Nn).^Fp1(1,2,2,2)+ ...
% YqCoeff0(2,1,2,2).*yy(wnStart:Nn).^Fp1(2,1,2,2)+YqCoeff0(1,3,1,2).*yy(wnStart:Nn).^Fp1(1,3,1,2)+ ...
% YqCoeff0(2,2,1,2).*yy(wnStart:Nn).^Fp1(2,2,1,2)+YqCoeff0(3,1,1,2).*yy(wnStart:Nn).^Fp1(3,1,1,2)).*dt^2.5;
NoOfTerms=3;%excluding dt^3 terms
YqCoeffa(1:NoOfTerms)=0.0;
Fp1=Fp1/(1-gamma);
YqCoeffa(1)=YqCoeff0(1,1,2,2)*(1-gamma)^Fp1(1,1,2,2)*dt^1.5;
YqCoeffa(2)=YqCoeff0(1,2,1,2)*(1-gamma)^Fp1(1,2,1,2)*dt^1.5;
YqCoeffa(3)=YqCoeff0(2,1,1,2)*(1-gamma)^Fp1(2,1,1,2)*dt^1.5;
%YqCoeffa(4)=YqCoeff0(1,1,3,2)*(1-gamma)^Fp1(1,1,3,2)*dt^2.5;
%YqCoeffa(5)=YqCoeff0(1,2,2,2)*(1-gamma)^Fp1(1,2,2,2)*dt^2.5;
%YqCoeffa(6)=YqCoeff0(2,1,2,2)*(1-gamma)^Fp1(2,1,2,2)*dt^2.5;
%YqCoeffa(7)=YqCoeff0(1,3,1,2)*(1-gamma)^Fp1(1,3,1,2)*dt^2.5;
%YqCoeffa(8)=YqCoeff0(2,2,1,2)*(1-gamma)^Fp1(2,2,1,2)*dt^2.5;
%YqCoeffa(9)=YqCoeff0(3,1,1,2)*(1-gamma)^Fp1(3,1,1,2)*dt^2.5;
Fp2(1)=Fp1(1,1,2,2);
Fp2(2)=Fp1(1,2,1,2);
Fp2(3)=Fp1(2,1,1,2);
%Fp2(4)=Fp1(1,1,3,2);
%Fp2(5)=Fp1(1,2,2,2);
%Fp2(6)=Fp1(2,1,2,2);
%Fp2(7)=Fp1(1,3,1,2);
%Fp2(8)=Fp1(2,2,1,2);
%Fp2(9)=Fp1(3,1,1,2);
wVol0dt0=0;
dwVol0dt(1:ExpnOrder)=0.0;
wVol0dt=0;
dwVol0dtdw(1:ExpnOrder)=0.0;
for mm=1:NoOfTerms
wVol0dt0=YqCoeffa(mm).*w0.^Fp2(mm);
for nn=1:ExpnOrder
if(nn==1)
dwVol0dt(nn)=wVol0dt0*Fp2(mm)*1/w0;
else
dwVol0dt(nn)=dwVol0dt(nn-1)*(Fp2(mm)-(nn-1))/w0;
end
end
wVol0dt=wVol0dt+wVol0dt0;
for nn=1:ExpnOrder
dwVol0dtdw(nn)=dwVol0dtdw(nn)+dwVol0dt(nn);
end
end
end
function [wVol2dt,dwVol2dtdw] = BesselVolAndDerivativesH2(w0,YqCoeff0,Fp1,gamma,dt,ExpnOrder)
% c2(wnStart:Nn)=YqCoeff0(1,1,1,3).*yy(wnStart:Nn).^Fp1(1,1,1,3) *dt + ...
% (YqCoeff0(1,1,2,3).*yy(wnStart:Nn).^Fp1(1,1,2,3)+YqCoeff0(1,2,1,3).*yy(wnStart:Nn).^Fp1(1,2,1,3)+ ...
% YqCoeff0(2,1,1,3).*yy(wnStart:Nn).^Fp1(2,1,1,3)).*dt^2+ ...
% (YqCoeff0(1,1,3,3).*yy(wnStart:Nn).^Fp1(1,1,3,3)+YqCoeff0(1,2,2,3).*yy(wnStart:Nn).^Fp1(1,2,2,3)+ ...
% YqCoeff0(2,1,2,3).*yy(wnStart:Nn).^Fp1(2,1,2,3) + YqCoeff0(1,3,1,3).*yy(wnStart:Nn).^Fp1(1,3,1,3)+ ...
% YqCoeff0(2,2,1,3).*yy(wnStart:Nn).^Fp1(2,2,1,3)+YqCoeff0(3,1,1,3).*yy(wnStart:Nn).^Fp1(3,1,1,3)).*dt^3;
Fp1=Fp1/(1-gamma);
NoOfTerms=3;%excluding dt^3 terms
YqCoeffa(1:NoOfTerms)=0.0;
YqCoeffa(1)=YqCoeff0(1,1,2,3)*(1-gamma)^Fp1(1,1,2,3)*dt^2;
YqCoeffa(2)=YqCoeff0(1,2,1,3)*(1-gamma)^Fp1(1,2,1,3)*dt^2;
YqCoeffa(3)=YqCoeff0(2,1,1,3)*(1-gamma)^Fp1(2,1,1,3)*dt^2;
%YqCoeffa(4)=YqCoeff0(1,1,3,3)*(1-gamma)^Fp1(1,1,3,3)*dt^3;
%YqCoeffa(5)=YqCoeff0(1,2,2,3)*(1-gamma)^Fp1(1,2,2,3)*dt^3;
%YqCoeffa(6)=YqCoeff0(2,1,2,3)*(1-gamma)^Fp1(2,1,2,3)*dt^3;
%YqCoeffa(7)=YqCoeff0(1,3,1,3)*(1-gamma)^Fp1(1,3,1,3)*dt^3;
%YqCoeffa(8)=YqCoeff0(2,2,1,3)*(1-gamma)^Fp1(2,2,1,3)*dt^3;
%YqCoeffa(9)=YqCoeff0(3,1,1,3)*(1-gamma)^Fp1(3,1,1,3)*dt^3;
Fp2(1)=Fp1(1,1,2,3);
Fp2(2)=Fp1(1,2,1,3);
Fp2(3)=Fp1(2,1,1,3);
%Fp2(4)=Fp1(1,1,3,3);
%Fp2(5)=Fp1(1,2,2,3);
%Fp2(6)=Fp1(2,1,2,3);
%Fp2(7)=Fp1(1,3,1,3);
%Fp2(8)=Fp1(2,2,1,3);
%Fp2(9)=Fp1(3,1,1,3);
wVol2dt0=0;
dwVol2dt(1:ExpnOrder)=0.0;
wVol2dt=0;
dwVol2dtdw(1:ExpnOrder)=0.0;
for mm=1:NoOfTerms
wVol2dt0=YqCoeffa(mm).*w0.^Fp2(mm);
for nn=1:ExpnOrder
if(nn==1)
dwVol2dt(nn)=wVol2dt0*Fp2(mm)*1/w0;
else
dwVol2dt(nn)=dwVol2dt(nn-1)*(Fp2(mm)-(nn-1))/w0;
end
end
wVol2dt=wVol2dt+wVol2dt0;
for nn=1:ExpnOrder
dwVol2dtdw(nn)=dwVol2dtdw(nn)+dwVol2dt(nn);
end
end
end
%function [a0,a1,a2,a3,a4,a5] = AdvanceSeriesCumulantSolution02NewO6Params5A(a0,a,c0,c,g0,g,h0,h,sigma0,dt)
function [a0,a] = AdvanceSeriesCumulantSolution02NewO6Params5A_Lite_0(a0,a,g10,g1,g20,g2,sigma0,gamma,dt,SeriesOrder,NoOfCumulants)
%a1=a(1);
%a2=a(2);
%a3=a(3);
%a4=a(4);
%a5=a(5);
%a6=a(6);
% a7=a(7);
% [F] = CalculateSixCumulantsParamsFive(a0,a1,a2,a3,a4,a5);
%
% C1=F(1,1);
% C2=F(2,1);
% C3=F(3,1);
% C4=F(4,1);
% C5=F(5,1);
% C6=F(6,1);
[CC] = CalculateCumulants(a0,a,SeriesOrder,NoOfCumulants);
%g10=g10+sigma0*sqrt(dt);
sigma0*sqrt(dt)
g10
%str=input('Look at coefficients');
[dC] = CalculateDiffusionCumulants04_Lite_0(g10,g1,g20,g2,SeriesOrder,NoOfCumulants);
C(1)=CC(1);
C(2:NoOfCumulants)=CC(2:NoOfCumulants)+dC(2:NoOfCumulants);
%C(1)=CC(1);
%C(2:6)=CC(2:6)+dC(2:6);
if(NoOfCumulants>6)
C(7:NoOfCumulants)=CC(7:NoOfCumulants);
end
% a1=a(1);
% a2=a(2);
% a3=a(3);
% a4=a(4);
% a5=a(5);
% a6=a(6);
% a7=a(7);
% DZa0=a(1);
% DZa(1)=2*a(2);
% DZa(2)=3*a(3);
% DZa(3)=4*a(4);
% DZa(4)=5*a(5);
% DZa(5)=6*a(6);
% DZa(6)=7*a(7);
DZa0=a(1);
DZa(1:SeriesOrder-1)=(2:SeriesOrder).*a(2:SeriesOrder);
[DZaI0,DZaI] = SeriesReciprocal(DZa0,DZa,SeriesOrder-1);
%y0=a0;
%[yVolbdt,dyVolbdtdy] = OriginalVol2Derivative(y0,sigma0,gamma,dt,SeriesOrder);
%[h0,h] = CalculateDriftbCoeffs08A(yVolbdt,dyVolbdtdy,a,SeriesOrder);
%a0=a0+h0;
a(1)=a(1)+.5*g10^2*DZaI0;%+h(1);
a(2:SeriesOrder)=a(2:SeriesOrder)+.5*g10^2*DZaI(1:SeriesOrder-1);%+h(2:SeriesOrder);
% a1=a1+.5*g10^2*DZaI0;
% a2=a2+.5*g10^2*DZaI(1)/1;
% a3=a3+.5*g10^2*DZaI(2)/1;
% a4=a4+.5*g10^2*DZaI(3)/1;
% a5=a5+.5*g10^2*DZaI(4)/1;
% a6=a6+.5*g10^2*DZaI(5)/1;
% a7=a7+.5*g10^2*DZaI(6)/1;
% a0
% a1
% a2
% a3
% a4
% a5
%str=input('Look at coefficients');
da(1,1)=a0;
da(2:SeriesOrder+1,1)=a(1:SeriesOrder);
% da(3,1)=a2;
% da(4,1)=a3;
% da(5,1)=a4;
% da(6,1)=a5;
% da(7,1)=a6;
% da(8,1)=a7;
%
% a(1)=a1;
% a(2)=a2;
% a(3)=a3;
% a(4)=a4;
% a(5)=a5;
% a(6)=a6;
% a(7)=a7;
%a0=0;
%[Fa,dFa] = CalculateSixCumulantsParamsFiveAndDerivs(C1,C2,C3,C4,C5,C6,a0,a1,a2,a3,a4,a5);
%Fa
%[F,dF] = CalculateCumulantsAndDerivativesFromMoments(C1,C2,C3,C4,C5,C6,a0,a,5,6,6);
[F,dF] = CalculateCumulantsAndDerivativesFromMoments_0(C,a0,a,SeriesOrder,SeriesOrder,NoOfCumulants);
%F-Fa
%dF-dFa
%str=input('Look at coefficients');
%[F,dF] = CalculateCumulantsAndDerivativesFromMoments(C1,C2,C3,C4,C5,C6,a0,a,SeriesOrder,NZterms,NMoments)
%F(NoOfCumulants+1:8,1)=0;
ObjBest=sum(F(1:NoOfCumulants,1).^2);
%ObjBest=F(1,1)^2+F(2,1)^2+F(3,1)^2+F(4,1)^2+F(5,1)^2+F(6,1)^2+F(7,1)^2+F(8,1)^2;
a0Best=a0;
aBest(1:SeriesOrder)=a(1:SeriesOrder);
%a1Best=a1;
%a2Best=a2;
%a3Best=a3;
%a4Best=a4;
%a5Best=a5;
%a6Best=a6;
%a7Best=a7;
nn=0;
%while((nn<12)&&((abs(F(1,1))>.000000000001) || (abs(F(2,1))>.000000000001) || (abs(F(3,1))>.000000000001) || (abs(F(4,1))>.00000000001)|| (abs(F(5,1))>.0000000001)|| (abs(F(6,1))>.000000001)|| (abs(F(7,1))>.000000001)|| (abs(F(8,1))>.000000001) ))
%while((nn<12)&&((abs(F(1,1))>.000000000001) || (abs(F(2,1))>.000000000001) || (abs(F(3,1))>.000000000001) || (abs(F(4,1))>.00000000001)|| (abs(F(5,1))>.0000000001)|| (abs(F(6,1))>.000000001)|| (abs(F(7,1))>.000000001) ))
while((nn<5)&&((abs(F(1,1))>.000000000001) || (abs(F(2,1))>.000000000001) || (abs(F(3,1))>.000000000001) || (abs(F(4,1))>.00000000001)|| (abs(F(5,1))>.0000000001)|| (abs(F(6,1))>.000000001) ))
%while((nn<5)&&((abs(F(1,1))>.000000000001) || (abs(F(2,1))>.000000000001) || (abs(F(3,1))>.000000000001) || (abs(F(4,1))>.00000000001)|| (abs(F(5,1))>.0000000001) ))
nn=nn+1;
da=da-dF\F;
%inv(dF)
a0=da(1,1);
a(1:SeriesOrder)=da(2:SeriesOrder+1,1);
% a0=da(1,1);
% a1=da(2,1);
% a2=da(3,1);
% a3=da(4,1);
% a4=da(5,1);
% a5=da(6,1);
% a6=da(7,1);
% a7=da(8,1);
%
%[F,dF] = CalculateCumulantsAndDerivatives(dC1,dC2,dC3,dC4,a1,a2,a3,a4,da0,da1,da2,da3,da4);
%[F,dF] = CalculateSixCumulantsParamsFiveAndDerivs(C1,C2,C3,C4,C5,C6,a0,a1,a2,a3,a4,a5);
%function [F,dF] = CalculateCumulantsAndDerivativesFromMoments(C1,C2,C3,C4,C5,C6,a0,a1,a2,a3,a4,a5,SeriesOrder,NZterms,NMoments)
%[F,dF] = CalculateCumulantsAndDerivativesFromMoments(C1,C2,C3,C4,C5,C6,C7,C8,a0,a1,a2,a3,a4,a5,a6,a7,7,8,8);
[F,dF] = CalculateCumulantsAndDerivativesFromMoments_0(C,a0,a,SeriesOrder,SeriesOrder,NoOfCumulants)
%ObjNew=F(1,1)^2+F(2,1)^2+F(3,1)^2+F(4,1)^2+F(5,1)^2+F(6,1)^2+F(7,1)^2+F(8,1)^2;
ObjNew=sum(F(1:NoOfCumulants,1).^2);
if(ObjBest<ObjNew)
a0=a0Best;
a(1:SeriesOrder)=aBest(1:SeriesOrder);
% a0=a0Best;
% a1=a1Best;
% a2=a2Best;
% a3=a3Best;
% a4=a4Best;
% a5=a5Best;
% a6=a6Best;
% a7=a7Best;
else
ObjBest=ObjNew;
a0Best=a0;
aBest(1:SeriesOrder)=a(1:SeriesOrder);
%a1Best=a1;
%a2Best=a2;
%a3Best=a3;
%a4Best=a4;
%a5Best=a5;
%a6Best=a6;
%a7Best=a7;
end
da(1,1)=a0;
da(2:SeriesOrder+1,1)=a(1:SeriesOrder);
%da(2,1)=a1;
%da(3,1)=a2;
%da(4,1)=a3;
%da(5,1)=a4;
%da(6,1)=a5;
%da(7,1)=a6;
%da(8,1)=a7;
end
a0=a0Best;
a(1:SeriesOrder)=aBest(1:SeriesOrder);
%a1=a1Best;
%a2=a2Best;
%a3=a3Best;
%a4=a4Best;
%a5=a5Best;
%a6=a6Best;
%a7=a7Best;
% a0
% a1
% a2
% a3
% a4
nn
%str=input('Look at results');
end
function [CC] = CalculateCumulants(a0,a,SeriesOrder,NMoments)
%[CC] = CalculateCumulants(a0,a,SeriesOrder,NoOfCumulants);
%a(1)=a1;
%a(2)=a2;
%a(3)=a3;
%a(4)=a4;
%a(5)=a5;
%a(6)=a6;
%a(7)=a7;
aa0=a0;
a0=0;
EZ(1)=0;
EZ(2)=1;
for nn=3:NMoments*SeriesOrder+2
if rem(nn,2)==1
EZ(nn)=0;
else
EZ(nn)=EZ(nn-2)*(nn-1);
EZ(nn);
end
end
EZ;
EXZ(1,1)=1;
%for pp1=1:NZterms
% EXZ(1,pp1+1)=EZ(pp1);
%end
a(SeriesOrder+1:60)=0;
b0=a0;
b=a;
for mm=1:NMoments
if(mm>1)
[b0,b] =SeriesProduct(a0,a,b0,b,SeriesOrder*mm);
b(SeriesOrder*mm+1:60)=0;
end
% b0
% b
%str=input('Look at numbers')
EXZ(mm+1,1)=b0;
for pp2=1:SeriesOrder*mm
EXZ(mm+1,1)=EXZ(mm+1,1)+b(pp2).*EZ(pp2);
end
end
%u1=EXZ(2,1);
if(SeriesOrder>=4)
u1=a(2)+3*a(4);
end
if(SeriesOrder>=6)
u1=u1+15*a(6);
end
u2=EXZ(3,1);
u3=EXZ(4,1);
u4=EXZ(5,1);
if(SeriesOrder>=4)
k1=aa0+a(2)+3*a(4);
end
if(SeriesOrder>=6)
k1=k1+15*a(6);
end
k2=u2-u1^2;
k3=u3-3*u2*u1+2*u1^3;
k4=u4-4*u3*u1-3*u2^2+12*u2*u1^2-6*u1^4;
CC(1)=k1;
CC(2)=k2;
CC(3)=k3;
CC(4)=k4;
if(NMoments>=5)
u5=EXZ(6,1);
k5=u5-5*u4*u1-10*u3*u2+20*u3*u1^2+30*u2^2*u1-60*u2*u1^3+24*u1^5;
CC(5)=k5;
end
if(NMoments>=6)
u6=EXZ(7,1);
k6=u6-6*u5*u1-15*u4*u2+30*u4*u1^2-10*u3^2+120*u3*u2*u1-120*u3*u1^3+30*u2^3 - ...
270*u2^2*u1^2+360*u2*u1^4-120*u1^6;
CC(6)=k6;
end
if(NMoments>=7)
u7=EXZ(8,1);
k7=u7-u1*u6-6*k2*u5-15*k3*u4-20*k4*u3-15*k5*u2-6*k6*u1;
CC(7)=k7;
end
if(NMoments>=8)
u8=EXZ(9,1);
k8 = u8 - u1* u7 - 7 *k2* u6 - 21* k3* u5 - 35* k4* u4 - ...
35* k5* u3 - 21* k6* u2 - 7 *k7* u1;
CC(8)=k8;
end
end
function [dC] = CalculateDiffusionCumulants04_Lite_0(d10,d1,d20,d2,SeriesOrder,NMoments)
%[dC] = CalculateDiffusionCumulants04_Lite(g10,g1,g20,g2,SeriesOrder,NoOfCumulants);
EZ(1)=0;
EZ(2)=1;
for nn=3:NMoments*SeriesOrder
if rem(nn,2)==1
EZ(nn)=0;
else
EZ(nn)=EZ(nn-2)*(nn-1);
%EZ(nn);
end
end
%EZ;
%H2(1)=0;
%H2(6)=0;
HermiteProduct(1:9,1:9)=0;
HermiteProduct(1,9)=1190672;
HermiteProduct(2,8)=0;
HermiteProduct(3,7)=85048;
HermiteProduct(4,6)=0;
HermiteProduct(5,5)=7188;
HermiteProduct(6,4)=0;
HermiteProduct(7,3)=750;
HermiteProduct(8,2)=0;
HermiteProduct(9,1)=105;
HermiteProduct(1,8)=79008;
HermiteProduct(2,7)=0;
HermiteProduct(3,6)=6584;
HermiteProduct(4,5)=0;
HermiteProduct(5,4)=672;
HermiteProduct(6,3)=0;
HermiteProduct(7,2)=90;
HermiteProduct(8,1)=0;
HermiteProduct(1,7)=6040;
HermiteProduct(2,6)=0;
HermiteProduct(3,5)=604;
HermiteProduct(4,4)=0;
HermiteProduct(5,3)=78;
HermiteProduct(6,2)=0;
HermiteProduct(7,1)=15;
HermiteProduct(1,6)=544;
HermiteProduct(2,5)=0;
HermiteProduct(3,4)=68;
HermiteProduct(4,3)=0;
HermiteProduct(5,2)=12;
HermiteProduct(6,1)=0;
HermiteProduct(1,5)=60;
HermiteProduct(2,4)=0;
HermiteProduct(3,3)=10;
HermiteProduct(4,2)=0;
HermiteProduct(5,1)=3;
HermiteProduct(1,4)=8;
HermiteProduct(2,3)=0;
HermiteProduct(3,2)=2;
HermiteProduct(4,1)=0;
HermiteProduct(1,3)=2;
HermiteProduct(2,2)=0;
HermiteProduct(3,1)=1;
HermiteProduct(1,2)=0;
HermiteProduct(2,1)=0;
a1=d1;
a10=d10;
a1(SeriesOrder+1:SeriesOrder*NMoments)=0;
a2=d2;
a20=d20;
a2(SeriesOrder+1:SeriesOrder*NMoments)=0;
T1(1:NMoments,1:NMoments*SeriesOrder)=0;
T1(1,1:SeriesOrder)=a1(1:SeriesOrder);
T10(1)=a10;
T2(1:NMoments,1:NMoments*SeriesOrder)=0;
T2(1,1:SeriesOrder)=a2(1:SeriesOrder);
T20(1)=a20;
for k = 2 : (NMoments)
b=T1(k-1,1:SeriesOrder*k);
b0=T10(k-1);
[b0,b] =SeriesProduct(a10,a1,b0,b,SeriesOrder*k);
T1(k,1:SeriesOrder*k)=b(1:SeriesOrder*k);
T10(k)=b0;
b=T2(k-1,1:SeriesOrder*k);
b0=T20(k-1);
[b0,b] =SeriesProduct(a20,a2,b0,b,SeriesOrder*k);
T2(k,1:SeriesOrder*k)=b(1:SeriesOrder*k);
T20(k)=b0;
end
CC(1:9,1:9)=0;
CC(1,1)=0;
Moment1(1:NMoments)=0;
for k = 1 : (NMoments)
for p = 0:k
l2=k-p+1;
l1=p+1;
if(HermiteProduct(l1,l2)>0)
b(1:SeriesOrder*k)=0;
b0=1;
if(l1>1)
a=T1(l1-1,1:SeriesOrder*k);
a0=T10(l1-1);
[b0,b] =SeriesProduct(a0,a,b0,b,SeriesOrder*k);
%CC(l_0,l1,l2,l3,l4)=CC(l_0,l1,l2,l3,l4).*2^(l1-1);
end
if(l2>1)
a=T2(l2-1,1:SeriesOrder*k);
a0=T20(l2-1);
[b0,b] =SeriesProduct(a0,a,b0,b,SeriesOrder*k);
%CC(l_0,l1,l2,l3,l4)=CC(l_0,l1,l2,l3,l4).*2^(l2-1);
end
CC(l1,l2)=b0;
for qq=1:SeriesOrder*k
CC(l1,l2)=CC(l1,l2)+b(qq)*EZ(qq);
end
Moment1(k)=Moment1(k)+factorial(k)/(factorial(l1-1).*factorial(l2-1)).*CC(l1,l2).*HermiteProduct(l1,l2);
end
end
end
%Moment1
%str=input('Look at Moments');
u1=Moment1(1);
u2=Moment1(2);
u3=Moment1(3);
u4=Moment1(4);
dC1=u1;
dC2=u2-u1^2;
dC3=u3-3*u1*u2+2*u1^3;
dC4=u4-4*u3*u1-3*u2^2+12*u2*u1^2-6*u1^4;
dC(1)=dC1;
dC(2)=dC2;
dC(3)=dC3;
dC(4)=dC4;
if(NMoments>=5)
u5=Moment1(5);
dC5=u5-5*u4*u1-10*u3*u2+20*u3*u1^2+30*u2^2*u1-60*u2*u1^3+24*u1^5;
dC(5)=dC5;
end
if(NMoments>=6)
u6=Moment1(6);
dC6=u6-6*u5*u1-15*u4*u2+30*u4*u1^2-10*u3^2+120*u3*u2*u1-120*u3*u1^3+30*u2^3 - ...
270*u2^2*u1^2+360*u2*u1^4-120*u1^6;
dC(6)=dC6;
end
if(NMoments>=7)
u7=Moment1(7);
dC7= u7 - u1* u6 - 6* dC2* u5 - 15* dC3 *u4 - 20* dC4* u3 - ...
15 *dC5* u2 - 6* dC6* u1;
dC(7)=dC7;
end
if(NMoments>=8)
u8=Moment1(8);
dC8= u8 - u1* u7 - 7 *dC2* u6 - 21 *dC3* u5 - 35* dC4* u4 - ...
35* dC5 *u3 - 21* dC6* u2 - 7 *dC7* u1;
dC(8)=dC8;
end
%dC5=0;
%dC6=0;
end
function [c0,c] = SeriesReciprocal(a0,a,SeriesOrder)
Mul=1/(a0);
a(1:SeriesOrder)=a(1:SeriesOrder)/a0;
a0=1;
c0=1/a0;
c(1:SeriesOrder)=0;
for nn=1:SeriesOrder
c(nn)=c(nn)-c0/a0*a(nn);
for kk=1:nn-1
c(nn)=c(nn)-c(kk)/a0*a(nn-kk);
end
end
c0=c0*Mul;
c(1:SeriesOrder)=c(1:SeriesOrder)*Mul;
end
function [F,dF] = CalculateCumulantsAndDerivativesFromMoments_0(C,a0,a,SeriesOrder,NZterms,NMoments)
%[F,dF] = CalculateCumulantsAndDerivativesFromMoments(C,a0,a,SeriesOrder,SeriesOrder,NoOfCumulants);
%a(1)=a1;
%a(2)=a2;
%a(3)=a3;
%a(4)=a4;
%a(5)=a5;
%a(6)=a6;
%a(7)=a7;
aa0=a0;
a0=0;% ---1
EZ(1)=0;
EZ(2)=1;
for nn=3:NMoments*SeriesOrder+NZterms+2
if rem(nn,2)==1
EZ(nn)=0;
else
EZ(nn)=EZ(nn-2)*(nn-1);
EZ(nn);
end
end
EZ;
EXZ(1,1)=1;
for pp1=1:NZterms
EXZ(1,pp1+1)=EZ(pp1);
end
a(SeriesOrder+1:60)=0;
b0=a0;
b=a;
for mm=1:NMoments
if(mm>1)
[b0,b] =SeriesProduct(a0,a,b0,b,SeriesOrder*mm);
b(SeriesOrder*mm+1:60)=0;
end
% b0
% b
%str=input('Look at numbers')
EXZ(mm+1,1)=b0;
for pp2=1:SeriesOrder*mm
EXZ(mm+1,1)=EXZ(mm+1,1)+b(pp2).*EZ(pp2);
end
for pp1=1:NZterms
EXZ(mm+1,pp1+1)=b0.*EZ(pp1);
for pp2=1:SeriesOrder*mm
EXZ(mm+1,pp1+1)=EXZ(mm+1,pp1+1)+b(pp2).*EZ(pp2+pp1);
end
end
end
u1=EXZ(2,1);
u2=EXZ(3,1);
u3=EXZ(4,1);
u4=EXZ(5,1);
k1=aa0+a(2);
if(SeriesOrder>=4)
k1=aa0+a(2)+3*a(4);
end
if(SeriesOrder>=6)
k1=k1+15*a(6);
end
k2=u2-u1^2;
k3=u3-3*u2*u1+2*u1^3;
k4=u4-4*u3*u1-3*u2^2+12*u2*u1^2-6*u1^4;
% du1(1)=1;%----2
% du2(1)=2*EXZ(2,1);
% du3(1)=3*EXZ(3,1);
% du4(1)=4*EXZ(4,1);
du1(1)=0;%----2
du2(1)=0;
du3(1)=0;
du4(1)=0;
for mm=2:SeriesOrder+1
du1(mm)=EXZ(1,mm);
du2(mm)=2*EXZ(2,mm);
du3(mm)=3*EXZ(3,mm);
du4(mm)=4*EXZ(4,mm);
end
if(NMoments>=5)
u5=EXZ(6,1);
k5=u5-5*u4*u1-10*u3*u2+20*u3*u1^2+30*u2^2*u1-60*u2*u1^3+24*u1^5;
du5(1)=0;
for mm=2:SeriesOrder+1
du5(mm)=5*EXZ(5,mm);
end
end
if(NMoments>=6)
u6=EXZ(7,1);
k6=u6-6*u5*u1-15*u4*u2+30*u4*u1^2-10*u3^2+120*u3*u2*u1-120*u3*u1^3+30*u2^3 - ...
270*u2^2*u1^2+360*u2*u1^4-120*u1^6;
du6(1)=0;
for mm=2:SeriesOrder+1
du6(mm)=6*EXZ(6,mm);
end
end
if(NMoments>=7)
u7=EXZ(8,1);
k7=u7-u1*u6-6*k2*u5-15*k3*u4-20*k4*u3-15*k5*u2-6*k6*u1;
du7(1)=0;
for mm=2:SeriesOrder+1
du7(mm)=7*EXZ(7,mm);
end
end
if(NMoments>=8)
u8=EXZ(9,1);
k8 = u8 - u1* u7 - 7 *k2* u6 - 21* k3* u5 - 35* k4* u4 - ...
35* k5* u3 - 21* k6* u2 - 7 *k7* u1;
du8(1)=0;
for mm=2:SeriesOrder+1
du8(mm)=8*EXZ(8,mm);
end
end
% for mm=2:SeriesOrder+1
% du1(mm)=EXZ(1,mm);
% du2(mm)=2*EXZ(2,mm);
% du3(mm)=3*EXZ(3,mm);
% du4(mm)=4*EXZ(4,mm);
% du5(mm)=5*EXZ(5,mm);
% du6(mm)=6*EXZ(6,mm);
% du7(mm)=7*EXZ(7,mm);
% du8(mm)=8*EXZ(8,mm);
% end
dk1(1)=1.0;
dk1(2)=0.0;
dk1(3)=1.0;
dk1(4)=0.0;
if(SeriesOrder>=4)
dk1(5)=3.0;
end
if(SeriesOrder>=5)
dk1(6)=0.0;
end
if(SeriesOrder>=6)
dk1(7)=15.0;
end
if(SeriesOrder>=7)
dk1(8)=0.0;
end
% dk2(1)=0;
% dk3(1)=0;
% dk4(1)=0;
% dk5(1)=0;
% dk6(1)=0;
% dk7(1)=0;
% dk8(1)=0;
for mm=2:SeriesOrder+1
%dk1(mm)=du1(mm);
dk2(mm)=-2.* u1.*du1(mm)+du2(mm);
dk3(mm)=du3(mm)-3*du1(mm)*u2-3*u1*du2(mm)+2*3*u1^2*du1(mm);
dk4(mm)=du4(mm)-4*du3(mm)*u1-4*u3*du1(mm)-3*2*u2*du2(mm)+12*du2(mm)*u1^2+12*2*u2*u1*du1(mm)-6*4*u1^3*du1(mm);
if(NMoments>=5)
dk5(mm)=du5(mm)-5*du4(mm)*u1-5*u4*du1(mm)-10*du3(mm)*u2-10*u3*du2(mm)+20*du3(mm)*u1^2+20*2*u3*u1*du1(mm)+ ...
30*2*u2*du2(mm)*u1+30*u2^2*du1(mm)-60*du2(mm)*u1^3-60*3*u2*u1^2*du1(mm)+24*5*u1^4*du1(mm);
end
if(NMoments>=6)
dk6(mm)=du6(mm)-6*du5(mm)*u1-6*u5*du1(mm)-15*du4(mm)*u2-15*u4*du2(mm)+30*du4(mm)*u1^2+30*2*u4*u1*du1(mm)-10*2*u3*du3(mm)+ ...
120*du3(mm)*u2*u1-120*u3*du2(mm)*u1-120*u3*u2*du1(mm)-120*du3(mm)*u1^3-120*3*u3*u1^2*du1(mm)+30*3*u2^2*du2(mm) - ...
270*2*u2*du2(mm)*u1^2+270*2*u2^2*u1*du1(mm)+360*du2(mm)*u1^4+360*4*u2*u1^3*du1(mm)-120*6*u1^5*du1(mm);
end
if(NMoments>=7)
dk7(mm)= du7(mm) - du1(mm)* u6- u1* du6(mm) - 6* dk2(mm)* u5 - 6 *k2 *du5(mm) - 15* dk3(mm)* u4- 15* k3* du4(mm) ...
- 20* dk4(mm)* u3- 20* k4* du3(mm) -15* dk5(mm)* u2-15* k5* du2(mm) - 6* dk6(mm)* u1- 6 *k6* du1(mm);
end
if(NMoments>=8)
dk8(mm)= du8(mm) - du1(mm)* u7- u1* du7(mm) - 7* dk2(mm)* u6- 7* k2* du6(mm) - 21* dk3(mm)* u5- 21* k3* du5(mm) ...
-35* dk4(mm)* u4-35* k4* du4(mm) - 35* dk5(mm)* u3- 35* k5* du3(mm) - 21* dk6(mm)* u2- 21* k6 *du2(mm) ...
- 7* dk7(mm)* u1- 7 *k7* du1(mm);
end
end
F(1,1)=k1-C(1);
F(2,1)=k2-C(2);
F(3,1)=k3-C(3);
F(4,1)=k4-C(4);
if(NMoments>=5)
F(5,1)=k5-C(5);
end
if(NMoments>=6)
F(6,1)=k6-C(6);
end
if(NMoments>=7)
F(7,1)=k7-C(7);
end
if(NMoments>=8)
F(8,1)=k8-C(8);
end
for mm=1:SeriesOrder+1
dF(1,mm)=dk1(mm);
dF(2,mm)=dk2(mm);
dF(3,mm)=dk3(mm);
dF(4,mm)=dk4(mm);
if(NMoments>=5)
dF(5,mm)=dk5(mm);
end
if(NMoments>=6)
dF(6,mm)=dk6(mm);
end
if(NMoments>=7)
dF(7,mm)=dk7(mm);
end
if(NMoments>=8)
dF(8,mm)=dk8(mm);
end
end
end
function [vw0,dvw0] = CalculatevgammaV2AndDerivatives(c0,gamma,gammaV2,SeriesOrder)
vw0=((1-gamma).*c0).^(gammaV2/(1-gamma));
dvw0(1)=gammaV2*((1-gamma).*c0).^(gammaV2/(1-gamma)-1);
dvw0(2)=gammaV2*(gammaV2/(1-gamma)-1).*((1-gamma).*c0).^(gammaV2/(1-gamma)-2)*(1-gamma);
dvw0(3)=gammaV2*(gammaV2/(1-gamma)-1).*(gammaV2/(1-gamma)-2).*((1-gamma).*c0).^(gammaV2/(1-gamma)-3)*(1-gamma)^2;
dvw0(4)=gammaV2*(gammaV2/(1-gamma)-1).*(gammaV2/(1-gamma)-2)*(gammaV2/(1-gamma)-3)*((1-gamma).*c0).^(gammaV2/(1-gamma)-4)*(1-gamma)^3;
dvw0(5)=gammaV2*(gammaV2/(1-gamma)-1).*(gammaV2/(1-gamma)-2)*(gammaV2/(1-gamma)-3)*(gammaV2/(1-gamma)-4)*((1-gamma).*c0).^(gammaV2/(1-gamma)-5)*(1-gamma)^4;
dvw0(6)=gammaV2*(gammaV2/(1-gamma)-1).*(gammaV2/(1-gamma)-2)*(gammaV2/(1-gamma)-3)*(gammaV2/(1-gamma)-4)*(gammaV2/(1-gamma)-5)*((1-gamma).*c0).^(gammaV2/(1-gamma)-6)*(1-gamma)^5;
end
function [wMu0dt,dwMu0dtdw,wMu1dt,dwMu1dtdw] = BesselDriftAndDerivatives08A0(w0,mu1,mu2,beta1,beta2,gamma,ExpnOrder)
NoOfTerms=2;
YqCoeff(1:NoOfTerms)=0.0;
Fp(1:NoOfTerms)=0.0;
YqCoeff(1)=mu1;
YqCoeff(2)=mu2;
%YqCoeff(3)=-.5*sigma0^2*gamma;
Fp(1)=(beta1-gamma)/(1-gamma);
Fp(2)=(beta2-gamma)/(1-gamma);
%Fp(3)=-1;
wMu0dt0=0;
dwMu0dt(1:ExpnOrder+1)=0.0;
wMu0dt=0;
dwMu0dtdw(1:ExpnOrder+1)=0.0;
for mm=1:NoOfTerms
wMu0dt0=YqCoeff(mm).*((1-gamma)*w0).^Fp(mm);
for nn=1:ExpnOrder+1
if(nn==1)
dwMu0dt(nn)=wMu0dt0*Fp(mm)/(w0);
else
dwMu0dt(nn)=dwMu0dt(nn-1)*(Fp(mm)-(nn-1))/(w0);
end
end
wMu0dt=wMu0dt+wMu0dt0;
for nn=1:ExpnOrder+1
dwMu0dtdw(nn)=dwMu0dtdw(nn)+dwMu0dt(nn);
end
wMu1dt=dwMu0dtdw(1);
dwMu1dtdw(1:ExpnOrder)=dwMu0dtdw(2:ExpnOrder+1);
end
%wMu0dt
%dwMu0dtdw
%str=input('Look at drift derivatives');
end
function [wMu0dt,dwMu0dtdw,wMu1dt,dwMu1dtdw] = BesselDriftAndDerivatives08Aq(w0,sigma0,gamma,ExpnOrder)
NoOfTerms=1;
YqCoeff(1:NoOfTerms)=0.0;
Fp(1:NoOfTerms)=0.0;
%YqCoeff(1)=mu1;
%YqCoeff(2)=mu2;
YqCoeff(1)=-.5*sigma0^2*gamma;
%Fp(1)=(beta1-gamma)/(1-gamma);
%Fp(2)=(beta2-gamma)/(1-gamma);
Fp(1)=-1;
wMu0dt0=0;
dwMu0dt(1:ExpnOrder+1)=0.0;
wMu0dt=0;
dwMu0dtdw(1:ExpnOrder+1)=0.0;
for mm=1:NoOfTerms
wMu0dt0=YqCoeff(mm).*((1-gamma)*w0).^Fp(mm);
for nn=1:ExpnOrder+1
if(nn==1)
dwMu0dt(nn)=wMu0dt0*Fp(mm)/(w0);
else
dwMu0dt(nn)=dwMu0dt(nn-1)*(Fp(mm)-(nn-1))/(w0);
end
end
wMu0dt=wMu0dt+wMu0dt0;
for nn=1:ExpnOrder+1
dwMu0dtdw(nn)=dwMu0dtdw(nn)+dwMu0dt(nn);
end
wMu1dt=dwMu0dtdw(1);
dwMu1dtdw(1:ExpnOrder)=dwMu0dtdw(2:ExpnOrder+1);
end
%wMu0dt
%dwMu0dtdw
%str=input('Look at drift derivatives');
end
%function [bv00,bv0,bv10,bv1,bv20,bv2,bv30,bv3,bv40,bv4,bv50,bv5] = CalculateDriftbCoeffs08A2Dim(wMu0dt,dwMu0dtdw,c,SeriesOrder)
function [b] = CalculateDriftbCoeffs08A2Dim02(wMu0dt,dwMu0dtdw,c,SeriesOrder)
b(1,1)=wMu0dt;
b(1,2)=c(1,2) *dwMu0dtdw(1);
b(1,3)=1/2*(2* c(1,3) *dwMu0dtdw(1)+c(1,2)^2 *dwMu0dtdw(2));
b(1,4)=1/6*(6 *c(1,4) *dwMu0dtdw(1)+6 *c(1,2)* c(1,3) *dwMu0dtdw(2)+c(1,2)^3 *dwMu0dtdw(3));
b(1,5)=1/24*(24* c(1,5) *dwMu0dtdw(1)+12* c(1,3)^2 *dwMu0dtdw(2)+24 *c(1,2)* c(1,4) *dwMu0dtdw(2)+ ...
12* c(1,2)^2* c(1,3) *dwMu0dtdw(3)+c(1,2)^4 *dwMu0dtdw(4));
b(1,6)=1/120*(120* c(1,6) *dwMu0dtdw(1)+120* c(1,3) *c(1,4) *dwMu0dtdw(2)+120* c(1,2)* c(1,5) *dwMu0dtdw(2)+ ...
60 *c(1,2)* c(1,3)^2 *dwMu0dtdw(3)+60* c(1,2)^2* c(1,4) *dwMu0dtdw(3)+ ...
20 *c(1,2)^3* c(1,3) *dwMu0dtdw(4)+c(1,2)^5 *dwMu0dtdw(5));
b(2,1)=c(2,1) *dwMu0dtdw(1);
b(3,1)=1/2*(2* c(3,1) *dwMu0dtdw(1)+c(2,1)^2 *dwMu0dtdw(2));
b(4,1)=1/6*(6 *c(4,1) *dwMu0dtdw(1)+6 *c(2,1)* c(3,1) *dwMu0dtdw(2)+c(2,1)^3 *dwMu0dtdw(3));
b(5,1)=1/24*(24* c(5,1) *dwMu0dtdw(1)+12* c(3,1)^2 *dwMu0dtdw(2)+24 *c(2,1)* c(4,1) *dwMu0dtdw(2)+ ...
12* c(2,1)^2* c(3,1) *dwMu0dtdw(3)+c(2,1)^4 *dwMu0dtdw(4));
b(6,1)=1/120*(120* c(6,1) *dwMu0dtdw(1)+120* c(3,1) *c(4,1) *dwMu0dtdw(2)+120* c(2,1)* c(5,1) *dwMu0dtdw(2)+ ...
60 *c(2,1)* c(3,1)^2 *dwMu0dtdw(3)+60* c(2,1)^2* c(4,1) *dwMu0dtdw(3)+ ...
20 *c(2,1)^3* c(3,1) *dwMu0dtdw(4)+c(2,1)^5 *dwMu0dtdw(5));
b(2,2)=dwMu0dtdw(2).*c(1,2).*c(2,1)+dwMu0dtdw(1).*c(2,2);
b(3,2)=1/2*(dwMu0dtdw(3).*c(1,2).*c(2,1).^2+2.*dwMu0dtdw(2).*c(2,1).*c(2,2)+dwMu0dtdw(2).*c(1,2).*2.*c(3,1)+dwMu0dtdw(1).*2.*c(3,2));
b(4,2)=1/6*(dwMu0dtdw(4).*c(1,2).*c(2,1).^3+3.*dwMu0dtdw(3).*c(2,1).^2.*c(2,2)+3.*dwMu0dtdw(3).*c(1,2).*c(2,1).*2.*c(3,1)+3.*dwMu0dtdw(2).*c(2,2).*2.*c(3,1)+3.*dwMu0dtdw(2).*c(2,1).*2.*c(3,2)+dwMu0dtdw(2).*c(1,2).*6.*c(4,1)+dwMu0dtdw(1).*6.*c(4,2));
b(5,2)=1/24*(dwMu0dtdw(5).*c(1,2).*c(2,1).^4+4.*dwMu0dtdw(4).*c(2,1).^3.*c(2,2)+6.*dwMu0dtdw(4).*c(1,2).*c(2,1).^2.*2.*c(3,1)+12.*dwMu0dtdw(3).*c(2,1).*c(2,2).*2.*c(3,1)+3.*dwMu0dtdw(3).*c(1,2).*2.*c(3,1).^2+6.*dwMu0dtdw(3).*c(2,1).^2.*2.*c(3,2)+6.*dwMu0dtdw(2).*2.*c(3,1).*2.*c(3,2)+4.*dwMu0dtdw(3).*c(1,2).*c(2,1).*6.*c(4,1)+4.*dwMu0dtdw(2).*c(2,2).*6.*c(4,1)+4.*dwMu0dtdw(2).*c(2,1).*6.*c(4,2)+dwMu0dtdw(2).*c(1,2).*24.*c(5,1)+dwMu0dtdw(1).*24.*c(5,2));
b(6,2)=1/120*(dwMu0dtdw(6).*c(1,2).*c(2,1).^5+5.*dwMu0dtdw(5).*c(2,1).^4.*c(2,2)+10.*dwMu0dtdw(5).*c(1,2).*c(2,1).^3.*2.*c(3,1)+30.*dwMu0dtdw(4).*c(2,1).^2.*c(2,2).*2.*c(3,1)+15.*dwMu0dtdw(4).*c(1,2).*c(2,1).*2.*c(3,1).^2+15.*dwMu0dtdw(3).*c(2,2).*2.*c(3,1).^2+10.*dwMu0dtdw(4).*c(2,1).^3.*2.*c(3,2)+30.*dwMu0dtdw(3).*c(2,1).*2.*c(3,1).*2.*c(3,2)+10.*dwMu0dtdw(4).*c(1,2).*c(2,1).^2.*6.*c(4,1)+20.*dwMu0dtdw(3).*c(2,1).*c(2,2).*6.*c(4,1)+10.*dwMu0dtdw(3).*c(1,2).*2.*c(3,1).*6.*c(4,1)+10.*dwMu0dtdw(2).*2.*c(3,2).*6.*c(4,1)+10.*dwMu0dtdw(3).*c(2,1).^2.*6.*c(4,2)+10.*dwMu0dtdw(2).*2.*c(3,1).*6.*c(4,2)+5.*dwMu0dtdw(3).*c(1,2).*c(2,1).*24.*c(5,1)+5.*dwMu0dtdw(2).*c(2,2).*24.*c(5,1)+5.*dwMu0dtdw(2).*c(2,1).*24.*c(5,2)+dwMu0dtdw(2).*c(1,2).*120.*c(6,1)+dwMu0dtdw(1).*120.*c(6,2));
b(2,3)=1/2*((dwMu0dtdw(3).*c(1,2).^2+dwMu0dtdw(2).*2.*c(1,3)).*c(2,1)+2.*dwMu0dtdw(2).*c(1,2).*c(2,2)+dwMu0dtdw(1).*2.*c(2,3));
b(3,3)=1/4*((dwMu0dtdw(4).*c(1,2).^2+dwMu0dtdw(3).*2.*c(1,3)).*c(2,1).^2+4.*dwMu0dtdw(3).*c(1,2).*c(2,1).*c(2,2)+dwMu0dtdw(2).*(2.*c(2,2).^2+2.*c(2,1).*2.*c(2,3))+(dwMu0dtdw(3).*c(1,2).^2+dwMu0dtdw(2).*2.*c(1,3)).*2.*c(3,1)+2.*dwMu0dtdw(2).*c(1,2).*2.*c(3,2)+dwMu0dtdw(1).*4.*c(3,3));
b(4,3)=1/12*((dwMu0dtdw(5).*c(1,2).^2+dwMu0dtdw(4).*2.*c(1,3)).*c(2,1).^3+6.*dwMu0dtdw(4).*c(1,2).*c(2,1).^2.*c(2,2)+dwMu0dtdw(3).*(6.*c(2,1).*c(2,2).^2+3.*c(2,1).^2.*2.*c(2,3))+3.*(dwMu0dtdw(4).*c(1,2).^2+dwMu0dtdw(3).*2.*c(1,3)).*c(2,1).*2.*c(3,1)+6.*dwMu0dtdw(3).*c(1,2).*(c(2,2).*2.*c(3,1)+c(2,1).*2.*c(3,2))+3.*dwMu0dtdw(2).*(2.*c(2,3).*2.*c(3,1)+2.*c(2,2).*2.*c(3,2)+c(2,1).*4.*c(3,3))+(dwMu0dtdw(3).*c(1,2).^2+dwMu0dtdw(2).*2.*c(1,3)).*6.*c(4,1)+2.*dwMu0dtdw(2).*c(1,2).*6.*c(4,2)+dwMu0dtdw(1).*12.*c(4,3));
b(5,3)=1/48*((dwMu0dtdw(6).*c(1,2).^2+dwMu0dtdw(5).*2.*c(1,3)).*c(2,1).^4+8.*dwMu0dtdw(5).*c(1,2).*c(2,1).^3.*c(2,2)+dwMu0dtdw(4).*(12.*c(2,1).^2.*c(2,2).^2+4.*c(2,1).^3.*2.*c(2,3))+6.*(dwMu0dtdw(5).*c(1,2).^2+dwMu0dtdw(4).*2.*c(1,3)).*c(2,1).^2.*2.*c(3,1)+3.*(dwMu0dtdw(4).*c(1,2).^2+dwMu0dtdw(3).*2.*c(1,3)).*2.*c(3,1).^2+12.*dwMu0dtdw(3).*c(1,2).*2.*c(3,1).*2.*c(3,2)+12.*dwMu0dtdw(4).*c(1,2).*(2.*c(2,1).*c(2,2).*2.*c(3,1)+c(2,1).^2.*2.*c(3,2))+6.*dwMu0dtdw(3).*((2.*c(2,2).^2+2.*c(2,1).*2.*c(2,3)).*2.*c(3,1)+4.*c(2,1).*c(2,2).*2.*c(3,2)+c(2,1).^2.*4.*c(3,3))+3.*dwMu0dtdw(2).*(2.*2.*c(3,2).^2+2.*2.*c(3,1).*4.*c(3,3))+4.*(dwMu0dtdw(4).*c(1,2).^2+dwMu0dtdw(3).*2.*c(1,3)).*c(2,1).*6.*c(4,1)+8.*dwMu0dtdw(3).*c(1,2).*(c(2,2).*6.*c(4,1)+c(2,1).*6.*c(4,2))+4.*dwMu0dtdw(2).*(2.*c(2,3).*6.*c(4,1)+2.*c(2,2).*6.*c(4,2)+c(2,1).*12.*c(4,3))+(dwMu0dtdw(3).*c(1,2).^2+dwMu0dtdw(2).*2.*c(1,3)).*24.*c(5,1)+2.*dwMu0dtdw(2).*c(1,2).*24.*c(5,2)+dwMu0dtdw(1).*48.*c(5,3));
b(6,3)=1/240*((dwMu0dtdw(7).*c(1,2).^2+dwMu0dtdw(6).*2.*c(1,3)).*c(2,1).^5+10.*dwMu0dtdw(6).*c(1,2).*c(2,1).^4.*c(2,2)+dwMu0dtdw(5).*(20.*c(2,1).^3.*c(2,2).^2+5.*c(2,1).^4.*2.*c(2,3))+10.*(dwMu0dtdw(6).*c(1,2).^2+dwMu0dtdw(5).*2.*c(1,3)).*c(2,1).^3.*2.*c(3,1)+15.*(dwMu0dtdw(5).*c(1,2).^2+dwMu0dtdw(4).*2.*c(1,3)).*c(2,1).*2.*c(3,1).^2+20.*dwMu0dtdw(5).*c(1,2).*(3.*c(2,1).^2.*c(2,2).*2.*c(3,1)+c(2,1).^3.*2.*c(3,2))+30.*dwMu0dtdw(4).*c(1,2).*(c(2,2).*2.*c(3,1).^2+2.*c(2,1).*2.*c(3,1).*2.*c(3,2))+10.*dwMu0dtdw(4).*((6.*c(2,1).*c(2,2).^2+3.*c(2,1).^2.*2.*c(2,3)).*2.*c(3,1)+6.*c(2,1).^2.*c(2,2).*2.*c(3,2)+c(2,1).^3.*4.*c(3,3))+15.*dwMu0dtdw(3).*(2.*c(2,3).*2.*c(3,1).^2+4.*c(2,2).*2.*c(3,1).*2.*c(3,2)+c(2,1).*(2.*2.*c(3,2).^2+2.*2.*c(3,1).*4.*c(3,3)))+10.*(dwMu0dtdw(5).*c(1,2).^2+dwMu0dtdw(4).*2.*c(1,3)).*c(2,1).^2.*6.*c(4,1)+10.*(dwMu0dtdw(4).*c(1,2).^2+dwMu0dtdw(3).*2.*c(1,3)).*2.*c(3,1).*6.*c(4,1)+20.*dwMu0dtdw(4).*c(1,2).*(2.*c(2,1).*c(2,2).*6.*c(4,1)+c(2,1).^2.*6.*c(4,2))+20.*dwMu0dtdw(3).*c(1,2).*(2.*c(3,2).*6.*c(4,1)+2.*c(3,1).*6.*c(4,2))+10.*dwMu0dtdw(3).*((2.*c(2,2).^2+2.*c(2,1).*2.*c(2,3)).*6.*c(4,1)+4.*c(2,1).*c(2,2).*6.*c(4,2)+c(2,1).^2.*12.*c(4,3))+10.*dwMu0dtdw(2).*(4.*c(3,3).*6.*c(4,1)+2.*2.*c(3,2).*6.*c(4,2)+2.*c(3,1).*12.*c(4,3))+5.*(dwMu0dtdw(4).*c(1,2).^2+dwMu0dtdw(3).*2.*c(1,3)).*c(2,1).*24.*c(5,1)+10.*dwMu0dtdw(3).*c(1,2).*(c(2,2).*24.*c(5,1)+c(2,1).*24.*c(5,2))+5.*dwMu0dtdw(2).*(2.*c(2,3).*24.*c(5,1)+2.*c(2,2).*24.*c(5,2)+c(2,1).*48.*c(5,3))+(dwMu0dtdw(3).*c(1,2).^2+dwMu0dtdw(2).*2.*c(1,3)).*120.*c(6,1)+2.*dwMu0dtdw(2).*c(1,2).*120.*c(6,2)+dwMu0dtdw(1).*240.*c(6,3));
b(2,4)=1/6*((dwMu0dtdw(4).*c(1,2).^3+3.*dwMu0dtdw(3).*c(1,2).*2.*c(1,3)+dwMu0dtdw(2).*6.*c(1,4)).*c(2,1)+3.*(dwMu0dtdw(3).*c(1,2).^2+dwMu0dtdw(2).*2.*c(1,3)).*c(2,2)+3.*dwMu0dtdw(2).*c(1,2).*2.*c(2,3)+dwMu0dtdw(1).*6.*c(2,4));
b(3,4)=1/12*((dwMu0dtdw(5).*c(1,2).^3+3.*dwMu0dtdw(4).*c(1,2).*2.*c(1,3)+dwMu0dtdw(3).*6.*c(1,4)).*c(2,1).^2+6.*(dwMu0dtdw(4).*c(1,2).^2+dwMu0dtdw(3).*2.*c(1,3)).*c(2,1).*c(2,2)+3.*dwMu0dtdw(3).*c(1,2).*(2.*c(2,2).^2+2.*c(2,1).*2.*c(2,3))+dwMu0dtdw(2).*(6.*c(2,2).*2.*c(2,3)+2.*c(2,1).*6.*c(2,4))+(dwMu0dtdw(4).*c(1,2).^3+3.*dwMu0dtdw(3).*c(1,2).*2.*c(1,3)+dwMu0dtdw(2).*6.*c(1,4)).*2.*c(3,1)+3.*(dwMu0dtdw(3).*c(1,2).^2+dwMu0dtdw(2).*2.*c(1,3)).*2.*c(3,2)+3.*dwMu0dtdw(2).*c(1,2).*4.*c(3,3)+dwMu0dtdw(1).*12.*c(3,4));
b(4,4)=1/36*((dwMu0dtdw(6).*c(1,2).^3+3.*dwMu0dtdw(5).*c(1,2).*2.*c(1,3)+dwMu0dtdw(4).*6.*c(1,4)).*c(2,1).^3+9.*(dwMu0dtdw(5).*c(1,2).^2+dwMu0dtdw(4).*2.*c(1,3)).*c(2,1).^2.*c(2,2)+3.*dwMu0dtdw(4).*c(1,2).*(6.*c(2,1).*c(2,2).^2+3.*c(2,1).^2.*2.*c(2,3))+dwMu0dtdw(3).*(6.*c(2,2).^3+18.*c(2,1).*c(2,2).*2.*c(2,3)+3.*c(2,1).^2.*6.*c(2,4))+3.*(dwMu0dtdw(5).*c(1,2).^3+3.*dwMu0dtdw(4).*c(1,2).*2.*c(1,3)+dwMu0dtdw(3).*6.*c(1,4)).*c(2,1).*2.*c(3,1)+9.*(dwMu0dtdw(4).*c(1,2).^2+dwMu0dtdw(3).*2.*c(1,3)).*(c(2,2).*2.*c(3,1)+c(2,1).*2.*c(3,2))+9.*dwMu0dtdw(3).*c(1,2).*(2.*c(2,3).*2.*c(3,1)+2.*c(2,2).*2.*c(3,2)+c(2,1).*4.*c(3,3))+3.*dwMu0dtdw(2).*(6.*c(2,4).*2.*c(3,1)+3.*2.*c(2,3).*2.*c(3,2)+3.*c(2,2).*4.*c(3,3)+c(2,1).*12.*c(3,4))+(dwMu0dtdw(4).*c(1,2).^3+3.*dwMu0dtdw(3).*c(1,2).*2.*c(1,3)+dwMu0dtdw(2).*6.*c(1,4)).*6.*c(4,1)+3.*(dwMu0dtdw(3).*c(1,2).^2+dwMu0dtdw(2).*2.*c(1,3)).*6.*c(4,2)+3.*dwMu0dtdw(2).*c(1,2).*12.*c(4,3)+dwMu0dtdw(1).*36.*c(4,4));
b(5,4)=1/144*((dwMu0dtdw(7).*c(1,2).^3+3.*dwMu0dtdw(6).*c(1,2).*2.*c(1,3)+dwMu0dtdw(5).*6.*c(1,4)).*c(2,1).^4+12.*(dwMu0dtdw(6).*c(1,2).^2+dwMu0dtdw(5).*2.*c(1,3)).*c(2,1).^3.*c(2,2)+3.*dwMu0dtdw(5).*c(1,2).*(12.*c(2,1).^2.*c(2,2).^2+4.*c(2,1).^3.*2.*c(2,3))+dwMu0dtdw(4).*(24.*c(2,1).*c(2,2).^3+36.*c(2,1).^2.*c(2,2).*2.*c(2,3)+4.*c(2,1).^3.*6.*c(2,4))+6.*(dwMu0dtdw(6).*c(1,2).^3+3.*dwMu0dtdw(5).*c(1,2).*2.*c(1,3)+dwMu0dtdw(4).*6.*c(1,4)).*c(2,1).^2.*2.*c(3,1)+3.*(dwMu0dtdw(5).*c(1,2).^3+3.*dwMu0dtdw(4).*c(1,2).*2.*c(1,3)+dwMu0dtdw(3).*6.*c(1,4)).*2.*c(3,1).^2+18.*(dwMu0dtdw(4).*c(1,2).^2+dwMu0dtdw(3).*2.*c(1,3)).*2.*c(3,1).*2.*c(3,2)+18.*(dwMu0dtdw(5).*c(1,2).^2+dwMu0dtdw(4).*2.*c(1,3)).*(2.*c(2,1).*c(2,2).*2.*c(3,1)+c(2,1).^2.*2.*c(3,2))+18.*dwMu0dtdw(4).*c(1,2).*((2.*c(2,2).^2+2.*c(2,1).*2.*c(2,3)).*2.*c(3,1)+4.*c(2,1).*c(2,2).*2.*c(3,2)+c(2,1).^2.*4.*c(3,3))+9.*dwMu0dtdw(3).*c(1,2).*(2.*2.*c(3,2).^2+2.*2.*c(3,1).*4.*c(3,3))+6.*dwMu0dtdw(3).*((6.*c(2,2).*2.*c(2,3)+2.*c(2,1).*6.*c(2,4)).*2.*c(3,1)+3.*(2.*c(2,2).^2+2.*c(2,1).*2.*c(2,3)).*2.*c(3,2)+6.*c(2,1).*c(2,2).*4.*c(3,3)+c(2,1).^2.*12.*c(3,4))+3.*dwMu0dtdw(2).*(6.*2.*c(3,2).*4.*c(3,3)+2.*2.*c(3,1).*12.*c(3,4))+4.*(dwMu0dtdw(5).*c(1,2).^3+3.*dwMu0dtdw(4).*c(1,2).*2.*c(1,3)+dwMu0dtdw(3).*6.*c(1,4)).*c(2,1).*6.*c(4,1)+12.*(dwMu0dtdw(4).*c(1,2).^2+dwMu0dtdw(3).*2.*c(1,3)).*(c(2,2).*6.*c(4,1)+c(2,1).*6.*c(4,2))+12.*dwMu0dtdw(3).*c(1,2).*(2.*c(2,3).*6.*c(4,1)+2.*c(2,2).*6.*c(4,2)+c(2,1).*12.*c(4,3))+4.*dwMu0dtdw(2).*(6.*c(2,4).*6.*c(4,1)+3.*2.*c(2,3).*6.*c(4,2)+3.*c(2,2).*12.*c(4,3)+c(2,1).*36.*c(4,4))+(dwMu0dtdw(4).*c(1,2).^3+3.*dwMu0dtdw(3).*c(1,2).*2.*c(1,3)+dwMu0dtdw(2).*6.*c(1,4)).*24.*c(5,1)+3.*(dwMu0dtdw(3).*c(1,2).^2+dwMu0dtdw(2).*2.*c(1,3)).*24.*c(5,2)+3.*dwMu0dtdw(2).*c(1,2).*48.*c(5,3)+dwMu0dtdw(1).*144.*c(5,4));
b(6,4)=1/720*((dwMu0dtdw(8).*c(1,2).^3+3.*dwMu0dtdw(7).*c(1,2).*2.*c(1,3)+dwMu0dtdw(6).*6.*c(1,4)).*c(2,1).^5+15.*(dwMu0dtdw(7).*c(1,2).^2+dwMu0dtdw(6).*2.*c(1,3)).*c(2,1).^4.*c(2,2)+3.*dwMu0dtdw(6).*c(1,2).*(20.*c(2,1).^3.*c(2,2).^2+5.*c(2,1).^4.*2.*c(2,3))+dwMu0dtdw(5).*(60.*c(2,1).^2.*c(2,2).^3+60.*c(2,1).^3.*c(2,2).*2.*c(2,3)+5.*c(2,1).^4.*6.*c(2,4))+10.*(dwMu0dtdw(7).*c(1,2).^3+3.*dwMu0dtdw(6).*c(1,2).*2.*c(1,3)+dwMu0dtdw(5).*6.*c(1,4)).*c(2,1).^3.*2.*c(3,1)+15.*(dwMu0dtdw(6).*c(1,2).^3+3.*dwMu0dtdw(5).*c(1,2).*2.*c(1,3)+dwMu0dtdw(4).*6.*c(1,4)).*c(2,1).*2.*c(3,1).^2+30.*(dwMu0dtdw(6).*c(1,2).^2+dwMu0dtdw(5).*2.*c(1,3)).*(3.*c(2,1).^2.*c(2,2).*2.*c(3,1)+c(2,1).^3.*2.*c(3,2))+45.*(dwMu0dtdw(5).*c(1,2).^2+dwMu0dtdw(4).*2.*c(1,3)).*(c(2,2).*2.*c(3,1).^2+2.*c(2,1).*2.*c(3,1).*2.*c(3,2))+30.*dwMu0dtdw(5).*c(1,2).*((6.*c(2,1).*c(2,2).^2+3.*c(2,1).^2.*2.*c(2,3)).*2.*c(3,1)+6.*c(2,1).^2.*c(2,2).*2.*c(3,2)+c(2,1).^3.*4.*c(3,3))+45.*dwMu0dtdw(4).*c(1,2).*(2.*c(2,3).*2.*c(3,1).^2+4.*c(2,2).*2.*c(3,1).*2.*c(3,2)+c(2,1).*(2.*2.*c(3,2).^2+2.*2.*c(3,1).*4.*c(3,3)))+10.*dwMu0dtdw(4).*((6.*c(2,2).^3+18.*c(2,1).*c(2,2).*2.*c(2,3)+3.*c(2,1).^2.*6.*c(2,4)).*2.*c(3,1)+3.*(6.*c(2,1).*c(2,2).^2+3.*c(2,1).^2.*2.*c(2,3)).*2.*c(3,2)+9.*c(2,1).^2.*c(2,2).*4.*c(3,3)+c(2,1).^3.*12.*c(3,4))+15.*dwMu0dtdw(3).*(6.*c(2,4).*2.*c(3,1).^2+6.*2.*c(2,3).*2.*c(3,1).*2.*c(3,2)+3.*c(2,2).*(2.*2.*c(3,2).^2+2.*2.*c(3,1).*4.*c(3,3))+c(2,1).*(6.*2.*c(3,2).*4.*c(3,3)+2.*2.*c(3,1).*12.*c(3,4)))+10.*(dwMu0dtdw(6).*c(1,2).^3+3.*dwMu0dtdw(5).*c(1,2).*2.*c(1,3)+dwMu0dtdw(4).*6.*c(1,4)).*c(2,1).^2.*6.*c(4,1)+10.*(dwMu0dtdw(5).*c(1,2).^3+3.*dwMu0dtdw(4).*c(1,2).*2.*c(1,3)+dwMu0dtdw(3).*6.*c(1,4)).*2.*c(3,1).*6.*c(4,1)+30.*(dwMu0dtdw(5).*c(1,2).^2+dwMu0dtdw(4).*2.*c(1,3)).*(2.*c(2,1).*c(2,2).*6.*c(4,1)+c(2,1).^2.*6.*c(4,2))+30.*(dwMu0dtdw(4).*c(1,2).^2+dwMu0dtdw(3).*2.*c(1,3)).*(2.*c(3,2).*6.*c(4,1)+2.*c(3,1).*6.*c(4,2))+30.*dwMu0dtdw(4).*c(1,2).*((2.*c(2,2).^2+2.*c(2,1).*2.*c(2,3)).*6.*c(4,1)+4.*c(2,1).*c(2,2).*6.*c(4,2)+c(2,1).^2.*12.*c(4,3))+30.*dwMu0dtdw(3).*c(1,2).*(4.*c(3,3).*6.*c(4,1)+2.*2.*c(3,2).*6.*c(4,2)+2.*c(3,1).*12.*c(4,3))+10.*dwMu0dtdw(3).*((6.*c(2,2).*2.*c(2,3)+2.*c(2,1).*6.*c(2,4)).*6.*c(4,1)+3.*(2.*c(2,2).^2+2.*c(2,1).*2.*c(2,3)).*6.*c(4,2)+6.*c(2,1).*c(2,2).*12.*c(4,3)+c(2,1).^2.*36.*c(4,4))+10.*dwMu0dtdw(2).*(12.*c(3,4).*6.*c(4,1)+3.*4.*c(3,3).*6.*c(4,2)+3.*2.*c(3,2).*12.*c(4,3)+2.*c(3,1).*36.*c(4,4))+5.*(dwMu0dtdw(5).*c(1,2).^3+3.*dwMu0dtdw(4).*c(1,2).*2.*c(1,3)+dwMu0dtdw(3).*6.*c(1,4)).*c(2,1).*24.*c(5,1)+15.*(dwMu0dtdw(4).*c(1,2).^2+dwMu0dtdw(3).*2.*c(1,3)).*(c(2,2).*24.*c(5,1)+c(2,1).*24.*c(5,2))+15.*dwMu0dtdw(3).*c(1,2).*(2.*c(2,3).*24.*c(5,1)+2.*c(2,2).*24.*c(5,2)+c(2,1).*48.*c(5,3))+5.*dwMu0dtdw(2).*(6.*c(2,4).*24.*c(5,1)+3.*2.*c(2,3).*24.*c(5,2)+3.*c(2,2).*48.*c(5,3)+c(2,1).*144.*c(5,4))+(dwMu0dtdw(4).*c(1,2).^3+3.*dwMu0dtdw(3).*c(1,2).*2.*c(1,3)+dwMu0dtdw(2).*6.*c(1,4)).*120.*c(6,1)+3.*(dwMu0dtdw(3).*c(1,2).^2+dwMu0dtdw(2).*2.*c(1,3)).*120.*c(6,2)+3.*dwMu0dtdw(2).*c(1,2).*240.*c(6,3)+dwMu0dtdw(1).*720.*c(6,4));
b(2,5)=1/24*((dwMu0dtdw(5).*c(1,2).^4+6.*dwMu0dtdw(4).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(3).*2.*c(1,3).^2+4.*dwMu0dtdw(3).*c(1,2).*6.*c(1,4)+dwMu0dtdw(2).*24.*c(1,5)).*c(2,1)+4.*(dwMu0dtdw(4).*c(1,2).^3+3.*dwMu0dtdw(3).*c(1,2).*2.*c(1,3)+dwMu0dtdw(2).*6.*c(1,4)).*c(2,2)+6.*(dwMu0dtdw(3).*c(1,2).^2+dwMu0dtdw(2).*2.*c(1,3)).*2.*c(2,3)+4.*dwMu0dtdw(2).*c(1,2).*6.*c(2,4)+dwMu0dtdw(1).*24.*c(2,5));
b(3,5)=1/48*((dwMu0dtdw(6).*c(1,2).^4+6.*dwMu0dtdw(5).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(4).*2.*c(1,3).^2+4.*dwMu0dtdw(4).*c(1,2).*6.*c(1,4)+dwMu0dtdw(3).*24.*c(1,5)).*c(2,1).^2+8.*(dwMu0dtdw(5).*c(1,2).^3+3.*dwMu0dtdw(4).*c(1,2).*2.*c(1,3)+dwMu0dtdw(3).*6.*c(1,4)).*c(2,1).*c(2,2)+6.*(dwMu0dtdw(4).*c(1,2).^2+dwMu0dtdw(3).*2.*c(1,3)).*(2.*c(2,2).^2+2.*c(2,1).*2.*c(2,3))+4.*dwMu0dtdw(3).*c(1,2).*(6.*c(2,2).*2.*c(2,3)+2.*c(2,1).*6.*c(2,4))+dwMu0dtdw(2).*(6.*2.*c(2,3).^2+8.*c(2,2).*6.*c(2,4)+2.*c(2,1).*24.*c(2,5))+(dwMu0dtdw(5).*c(1,2).^4+6.*dwMu0dtdw(4).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(3).*2.*c(1,3).^2+4.*dwMu0dtdw(3).*c(1,2).*6.*c(1,4)+dwMu0dtdw(2).*24.*c(1,5)).*2.*c(3,1)+4.*(dwMu0dtdw(4).*c(1,2).^3+3.*dwMu0dtdw(3).*c(1,2).*2.*c(1,3)+dwMu0dtdw(2).*6.*c(1,4)).*2.*c(3,2)+6.*(dwMu0dtdw(3).*c(1,2).^2+dwMu0dtdw(2).*2.*c(1,3)).*4.*c(3,3)+4.*dwMu0dtdw(2).*c(1,2).*12.*c(3,4)+dwMu0dtdw(1).*48.*c(3,5));
b(4,5)=1/144*((dwMu0dtdw(7).*c(1,2).^4+6.*dwMu0dtdw(6).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(5).*2.*c(1,3).^2+4.*dwMu0dtdw(5).*c(1,2).*6.*c(1,4)+dwMu0dtdw(4).*24.*c(1,5)).*c(2,1).^3+12.*(dwMu0dtdw(6).*c(1,2).^3+3.*dwMu0dtdw(5).*c(1,2).*2.*c(1,3)+dwMu0dtdw(4).*6.*c(1,4)).*c(2,1).^2.*c(2,2)+6.*(dwMu0dtdw(5).*c(1,2).^2+dwMu0dtdw(4).*2.*c(1,3)).*(6.*c(2,1).*c(2,2).^2+3.*c(2,1).^2.*2.*c(2,3))+4.*dwMu0dtdw(4).*c(1,2).*(6.*c(2,2).^3+18.*c(2,1).*c(2,2).*2.*c(2,3)+3.*c(2,1).^2.*6.*c(2,4))+dwMu0dtdw(3).*(36.*c(2,2).^2.*2.*c(2,3)+18.*c(2,1).*2.*c(2,3).^2+24.*c(2,1).*c(2,2).*6.*c(2,4)+3.*c(2,1).^2.*24.*c(2,5))+3.*(dwMu0dtdw(6).*c(1,2).^4+6.*dwMu0dtdw(5).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(4).*2.*c(1,3).^2+4.*dwMu0dtdw(4).*c(1,2).*6.*c(1,4)+dwMu0dtdw(3).*24.*c(1,5)).*c(2,1).*2.*c(3,1)+12.*(dwMu0dtdw(5).*c(1,2).^3+3.*dwMu0dtdw(4).*c(1,2).*2.*c(1,3)+dwMu0dtdw(3).*6.*c(1,4)).*(c(2,2).*2.*c(3,1)+c(2,1).*2.*c(3,2))+18.*(dwMu0dtdw(4).*c(1,2).^2+dwMu0dtdw(3).*2.*c(1,3)).*(2.*c(2,3).*2.*c(3,1)+2.*c(2,2).*2.*c(3,2)+c(2,1).*4.*c(3,3))+12.*dwMu0dtdw(3).*c(1,2).*(6.*c(2,4).*2.*c(3,1)+3.*2.*c(2,3).*2.*c(3,2)+3.*c(2,2).*4.*c(3,3)+c(2,1).*12.*c(3,4))+3.*dwMu0dtdw(2).*(24.*c(2,5).*2.*c(3,1)+4.*6.*c(2,4).*2.*c(3,2)+6.*2.*c(2,3).*4.*c(3,3)+4.*c(2,2).*12.*c(3,4)+c(2,1).*48.*c(3,5))+(dwMu0dtdw(5).*c(1,2).^4+6.*dwMu0dtdw(4).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(3).*2.*c(1,3).^2+4.*dwMu0dtdw(3).*c(1,2).*6.*c(1,4)+dwMu0dtdw(2).*24.*c(1,5)).*6.*c(4,1)+4.*(dwMu0dtdw(4).*c(1,2).^3+3.*dwMu0dtdw(3).*c(1,2).*2.*c(1,3)+dwMu0dtdw(2).*6.*c(1,4)).*6.*c(4,2)+6.*(dwMu0dtdw(3).*c(1,2).^2+dwMu0dtdw(2).*2.*c(1,3)).*12.*c(4,3)+4.*dwMu0dtdw(2).*c(1,2).*36.*c(4,4)+dwMu0dtdw(1).*144.*c(4,5));
b(5,5)=1/576*((dwMu0dtdw(8).*c(1,2).^4+6.*dwMu0dtdw(7).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(6).*2.*c(1,3).^2+4.*dwMu0dtdw(6).*c(1,2).*6.*c(1,4)+dwMu0dtdw(5).*24.*c(1,5)).*c(2,1).^4+16.*(dwMu0dtdw(7).*c(1,2).^3+3.*dwMu0dtdw(6).*c(1,2).*2.*c(1,3)+dwMu0dtdw(5).*6.*c(1,4)).*c(2,1).^3.*c(2,2)+6.*(dwMu0dtdw(6).*c(1,2).^2+dwMu0dtdw(5).*2.*c(1,3)).*(12.*c(2,1).^2.*c(2,2).^2+4.*c(2,1).^3.*2.*c(2,3))+4.*dwMu0dtdw(5).*c(1,2).*(24.*c(2,1).*c(2,2).^3+36.*c(2,1).^2.*c(2,2).*2.*c(2,3)+4.*c(2,1).^3.*6.*c(2,4))+dwMu0dtdw(4).*(24.*c(2,2).^4+144.*c(2,1).*c(2,2).^2.*2.*c(2,3)+36.*c(2,1).^2.*2.*c(2,3).^2+48.*c(2,1).^2.*c(2,2).*6.*c(2,4)+4.*c(2,1).^3.*24.*c(2,5))+6.*(dwMu0dtdw(7).*c(1,2).^4+6.*dwMu0dtdw(6).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(5).*2.*c(1,3).^2+4.*dwMu0dtdw(5).*c(1,2).*6.*c(1,4)+dwMu0dtdw(4).*24.*c(1,5)).*c(2,1).^2.*2.*c(3,1)+3.*(dwMu0dtdw(6).*c(1,2).^4+6.*dwMu0dtdw(5).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(4).*2.*c(1,3).^2+4.*dwMu0dtdw(4).*c(1,2).*6.*c(1,4)+dwMu0dtdw(3).*24.*c(1,5)).*2.*c(3,1).^2+24.*(dwMu0dtdw(5).*c(1,2).^3+3.*dwMu0dtdw(4).*c(1,2).*2.*c(1,3)+dwMu0dtdw(3).*6.*c(1,4)).*2.*c(3,1).*2.*c(3,2)+24.*(dwMu0dtdw(6).*c(1,2).^3+3.*dwMu0dtdw(5).*c(1,2).*2.*c(1,3)+dwMu0dtdw(4).*6.*c(1,4)).*(2.*c(2,1).*c(2,2).*2.*c(3,1)+c(2,1).^2.*2.*c(3,2))+36.*(dwMu0dtdw(5).*c(1,2).^2+dwMu0dtdw(4).*2.*c(1,3)).*((2.*c(2,2).^2+2.*c(2,1).*2.*c(2,3)).*2.*c(3,1)+4.*c(2,1).*c(2,2).*2.*c(3,2)+c(2,1).^2.*4.*c(3,3))+18.*(dwMu0dtdw(4).*c(1,2).^2+dwMu0dtdw(3).*2.*c(1,3)).*(2.*2.*c(3,2).^2+2.*2.*c(3,1).*4.*c(3,3))+24.*dwMu0dtdw(4).*c(1,2).*((6.*c(2,2).*2.*c(2,3)+2.*c(2,1).*6.*c(2,4)).*2.*c(3,1)+3.*(2.*c(2,2).^2+2.*c(2,1).*2.*c(2,3)).*2.*c(3,2)+6.*c(2,1).*c(2,2).*4.*c(3,3)+c(2,1).^2.*12.*c(3,4))+12.*dwMu0dtdw(3).*c(1,2).*(6.*2.*c(3,2).*4.*c(3,3)+2.*2.*c(3,1).*12.*c(3,4))+6.*dwMu0dtdw(3).*((6.*2.*c(2,3).^2+8.*c(2,2).*6.*c(2,4)+2.*c(2,1).*24.*c(2,5)).*2.*c(3,1)+4.*(6.*c(2,2).*2.*c(2,3)+2.*c(2,1).*6.*c(2,4)).*2.*c(3,2)+6.*(2.*c(2,2).^2+2.*c(2,1).*2.*c(2,3)).*4.*c(3,3)+8.*c(2,1).*c(2,2).*12.*c(3,4)+c(2,1).^2.*48.*c(3,5))+3.*dwMu0dtdw(2).*(6.*4.*c(3,3).^2+8.*2.*c(3,2).*12.*c(3,4)+2.*2.*c(3,1).*48.*c(3,5))+4.*(dwMu0dtdw(6).*c(1,2).^4+6.*dwMu0dtdw(5).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(4).*2.*c(1,3).^2+4.*dwMu0dtdw(4).*c(1,2).*6.*c(1,4)+dwMu0dtdw(3).*24.*c(1,5)).*c(2,1).*6.*c(4,1)+16.*(dwMu0dtdw(5).*c(1,2).^3+3.*dwMu0dtdw(4).*c(1,2).*2.*c(1,3)+dwMu0dtdw(3).*6.*c(1,4)).*(c(2,2).*6.*c(4,1)+c(2,1).*6.*c(4,2))+24.*(dwMu0dtdw(4).*c(1,2).^2+dwMu0dtdw(3).*2.*c(1,3)).*(2.*c(2,3).*6.*c(4,1)+2.*c(2,2).*6.*c(4,2)+c(2,1).*12.*c(4,3))+16.*dwMu0dtdw(3).*c(1,2).*(6.*c(2,4).*6.*c(4,1)+3.*2.*c(2,3).*6.*c(4,2)+3.*c(2,2).*12.*c(4,3)+c(2,1).*36.*c(4,4))+4.*dwMu0dtdw(2).*(24.*c(2,5).*6.*c(4,1)+4.*6.*c(2,4).*6.*c(4,2)+6.*2.*c(2,3).*12.*c(4,3)+4.*c(2,2).*36.*c(4,4)+c(2,1).*144.*c(4,5))+(dwMu0dtdw(5).*c(1,2).^4+6.*dwMu0dtdw(4).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(3).*2.*c(1,3).^2+4.*dwMu0dtdw(3).*c(1,2).*6.*c(1,4)+dwMu0dtdw(2).*24.*c(1,5)).*24.*c(5,1)+4.*(dwMu0dtdw(4).*c(1,2).^3+3.*dwMu0dtdw(3).*c(1,2).*2.*c(1,3)+dwMu0dtdw(2).*6.*c(1,4)).*24.*c(5,2)+6.*(dwMu0dtdw(3).*c(1,2).^2+dwMu0dtdw(2).*2.*c(1,3)).*48.*c(5,3)+4.*dwMu0dtdw(2).*c(1,2).*144.*c(5,4)+dwMu0dtdw(1).*576.*c(5,5));
b(6,5)=1/2880*((dwMu0dtdw(9).*c(1,2).^4+6.*dwMu0dtdw(8).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(7).*2.*c(1,3).^2+4.*dwMu0dtdw(7).*c(1,2).*6.*c(1,4)+dwMu0dtdw(6).*24.*c(1,5)).*c(2,1).^5+20.*(dwMu0dtdw(8).*c(1,2).^3+3.*dwMu0dtdw(7).*c(1,2).*2.*c(1,3)+dwMu0dtdw(6).*6.*c(1,4)).*c(2,1).^4.*c(2,2)+6.*(dwMu0dtdw(7).*c(1,2).^2+dwMu0dtdw(6).*2.*c(1,3)).*(20.*c(2,1).^3.*c(2,2).^2+5.*c(2,1).^4.*2.*c(2,3))+4.*dwMu0dtdw(6).*c(1,2).*(60.*c(2,1).^2.*c(2,2).^3+60.*c(2,1).^3.*c(2,2).*2.*c(2,3)+5.*c(2,1).^4.*6.*c(2,4))+dwMu0dtdw(5).*(120.*c(2,1).*c(2,2).^4+360.*c(2,1).^2.*c(2,2).^2.*2.*c(2,3)+60.*c(2,1).^3.*2.*c(2,3).^2+80.*c(2,1).^3.*c(2,2).*6.*c(2,4)+5.*c(2,1).^4.*24.*c(2,5))+10.*(dwMu0dtdw(8).*c(1,2).^4+6.*dwMu0dtdw(7).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(6).*2.*c(1,3).^2+4.*dwMu0dtdw(6).*c(1,2).*6.*c(1,4)+dwMu0dtdw(5).*24.*c(1,5)).*c(2,1).^3.*2.*c(3,1)+15.*(dwMu0dtdw(7).*c(1,2).^4+6.*dwMu0dtdw(6).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(5).*2.*c(1,3).^2+4.*dwMu0dtdw(5).*c(1,2).*6.*c(1,4)+dwMu0dtdw(4).*24.*c(1,5)).*c(2,1).*2.*c(3,1).^2+40.*(dwMu0dtdw(7).*c(1,2).^3+3.*dwMu0dtdw(6).*c(1,2).*2.*c(1,3)+dwMu0dtdw(5).*6.*c(1,4)).*(3.*c(2,1).^2.*c(2,2).*2.*c(3,1)+c(2,1).^3.*2.*c(3,2))+60.*(dwMu0dtdw(6).*c(1,2).^3+3.*dwMu0dtdw(5).*c(1,2).*2.*c(1,3)+dwMu0dtdw(4).*6.*c(1,4)).*(c(2,2).*2.*c(3,1).^2+2.*c(2,1).*2.*c(3,1).*2.*c(3,2))+60.*(dwMu0dtdw(6).*c(1,2).^2+dwMu0dtdw(5).*2.*c(1,3)).*((6.*c(2,1).*c(2,2).^2+3.*c(2,1).^2.*2.*c(2,3)).*2.*c(3,1)+6.*c(2,1).^2.*c(2,2).*2.*c(3,2)+c(2,1).^3.*4.*c(3,3))+90.*(dwMu0dtdw(5).*c(1,2).^2+dwMu0dtdw(4).*2.*c(1,3)).*(2.*c(2,3).*2.*c(3,1).^2+4.*c(2,2).*2.*c(3,1).*2.*c(3,2)+c(2,1).*(2.*2.*c(3,2).^2+2.*2.*c(3,1).*4.*c(3,3)))+40.*dwMu0dtdw(5).*c(1,2).*((6.*c(2,2).^3+18.*c(2,1).*c(2,2).*2.*c(2,3)+3.*c(2,1).^2.*6.*c(2,4)).*2.*c(3,1)+3.*(6.*c(2,1).*c(2,2).^2+3.*c(2,1).^2.*2.*c(2,3)).*2.*c(3,2)+9.*c(2,1).^2.*c(2,2).*4.*c(3,3)+c(2,1).^3.*12.*c(3,4))+60.*dwMu0dtdw(4).*c(1,2).*(6.*c(2,4).*2.*c(3,1).^2+6.*2.*c(2,3).*2.*c(3,1).*2.*c(3,2)+3.*c(2,2).*(2.*2.*c(3,2).^2+2.*2.*c(3,1).*4.*c(3,3))+c(2,1).*(6.*2.*c(3,2).*4.*c(3,3)+2.*2.*c(3,1).*12.*c(3,4)))+10.*dwMu0dtdw(4).*((36.*c(2,2).^2.*2.*c(2,3)+18.*c(2,1).*2.*c(2,3).^2+24.*c(2,1).*c(2,2).*6.*c(2,4)+3.*c(2,1).^2.*24.*c(2,5)).*2.*c(3,1)+4.*(6.*c(2,2).^3+18.*c(2,1).*c(2,2).*2.*c(2,3)+3.*c(2,1).^2.*6.*c(2,4)).*2.*c(3,2)+6.*(6.*c(2,1).*c(2,2).^2+3.*c(2,1).^2.*2.*c(2,3)).*4.*c(3,3)+12.*c(2,1).^2.*c(2,2).*12.*c(3,4)+c(2,1).^3.*48.*c(3,5))+15.*dwMu0dtdw(3).*(24.*c(2,5).*2.*c(3,1).^2+8.*6.*c(2,4).*2.*c(3,1).*2.*c(3,2)+6.*2.*c(2,3).*(2.*2.*c(3,2).^2+2.*2.*c(3,1).*4.*c(3,3))+4.*c(2,2).*(6.*2.*c(3,2).*4.*c(3,3)+2.*2.*c(3,1).*12.*c(3,4))+c(2,1).*(6.*4.*c(3,3).^2+8.*2.*c(3,2).*12.*c(3,4)+2.*2.*c(3,1).*48.*c(3,5)))+10.*(dwMu0dtdw(7).*c(1,2).^4+6.*dwMu0dtdw(6).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(5).*2.*c(1,3).^2+4.*dwMu0dtdw(5).*c(1,2).*6.*c(1,4)+dwMu0dtdw(4).*24.*c(1,5)).*c(2,1).^2.*6.*c(4,1)+10.*(dwMu0dtdw(6).*c(1,2).^4+6.*dwMu0dtdw(5).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(4).*2.*c(1,3).^2+4.*dwMu0dtdw(4).*c(1,2).*6.*c(1,4)+dwMu0dtdw(3).*24.*c(1,5)).*2.*c(3,1).*6.*c(4,1)+40.*(dwMu0dtdw(6).*c(1,2).^3+3.*dwMu0dtdw(5).*c(1,2).*2.*c(1,3)+dwMu0dtdw(4).*6.*c(1,4)).*(2.*c(2,1).*c(2,2).*6.*c(4,1)+c(2,1).^2.*6.*c(4,2))+40.*(dwMu0dtdw(5).*c(1,2).^3+3.*dwMu0dtdw(4).*c(1,2).*2.*c(1,3)+dwMu0dtdw(3).*6.*c(1,4)).*(2.*c(3,2).*6.*c(4,1)+2.*c(3,1).*6.*c(4,2))+60.*(dwMu0dtdw(5).*c(1,2).^2+dwMu0dtdw(4).*2.*c(1,3)).*((2.*c(2,2).^2+2.*c(2,1).*2.*c(2,3)).*6.*c(4,1)+4.*c(2,1).*c(2,2).*6.*c(4,2)+c(2,1).^2.*12.*c(4,3))+60.*(dwMu0dtdw(4).*c(1,2).^2+dwMu0dtdw(3).*2.*c(1,3)).*(4.*c(3,3).*6.*c(4,1)+2.*2.*c(3,2).*6.*c(4,2)+2.*c(3,1).*12.*c(4,3))+40.*dwMu0dtdw(4).*c(1,2).*((6.*c(2,2).*2.*c(2,3)+2.*c(2,1).*6.*c(2,4)).*6.*c(4,1)+3.*(2.*c(2,2).^2+2.*c(2,1).*2.*c(2,3)).*6.*c(4,2)+6.*c(2,1).*c(2,2).*12.*c(4,3)+c(2,1).^2.*36.*c(4,4))+40.*dwMu0dtdw(3).*c(1,2).*(12.*c(3,4).*6.*c(4,1)+3.*4.*c(3,3).*6.*c(4,2)+3.*2.*c(3,2).*12.*c(4,3)+2.*c(3,1).*36.*c(4,4))+10.*dwMu0dtdw(3).*((6.*2.*c(2,3).^2+8.*c(2,2).*6.*c(2,4)+2.*c(2,1).*24.*c(2,5)).*6.*c(4,1)+4.*(6.*c(2,2).*2.*c(2,3)+2.*c(2,1).*6.*c(2,4)).*6.*c(4,2)+6.*(2.*c(2,2).^2+2.*c(2,1).*2.*c(2,3)).*12.*c(4,3)+8.*c(2,1).*c(2,2).*36.*c(4,4)+c(2,1).^2.*144.*c(4,5))+10.*dwMu0dtdw(2).*(48.*c(3,5).*6.*c(4,1)+4.*12.*c(3,4).*6.*c(4,2)+6.*4.*c(3,3).*12.*c(4,3)+4.*2.*c(3,2).*36.*c(4,4)+2.*c(3,1).*144.*c(4,5))+5.*(dwMu0dtdw(6).*c(1,2).^4+6.*dwMu0dtdw(5).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(4).*2.*c(1,3).^2+4.*dwMu0dtdw(4).*c(1,2).*6.*c(1,4)+dwMu0dtdw(3).*24.*c(1,5)).*c(2,1).*24.*c(5,1)+20.*(dwMu0dtdw(5).*c(1,2).^3+3.*dwMu0dtdw(4).*c(1,2).*2.*c(1,3)+dwMu0dtdw(3).*6.*c(1,4)).*(c(2,2).*24.*c(5,1)+c(2,1).*24.*c(5,2))+30.*(dwMu0dtdw(4).*c(1,2).^2+dwMu0dtdw(3).*2.*c(1,3)).*(2.*c(2,3).*24.*c(5,1)+2.*c(2,2).*24.*c(5,2)+c(2,1).*48.*c(5,3))+20.*dwMu0dtdw(3).*c(1,2).*(6.*c(2,4).*24.*c(5,1)+3.*2.*c(2,3).*24.*c(5,2)+3.*c(2,2).*48.*c(5,3)+c(2,1).*144.*c(5,4))+5.*dwMu0dtdw(2).*(24.*c(2,5).*24.*c(5,1)+4.*6.*c(2,4).*24.*c(5,2)+6.*2.*c(2,3).*48.*c(5,3)+4.*c(2,2).*144.*c(5,4)+c(2,1).*576.*c(5,5))+(dwMu0dtdw(5).*c(1,2).^4+6.*dwMu0dtdw(4).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(3).*2.*c(1,3).^2+4.*dwMu0dtdw(3).*c(1,2).*6.*c(1,4)+dwMu0dtdw(2).*24.*c(1,5)).*120.*c(6,1)+4.*(dwMu0dtdw(4).*c(1,2).^3+3.*dwMu0dtdw(3).*c(1,2).*2.*c(1,3)+dwMu0dtdw(2).*6.*c(1,4)).*120.*c(6,2)+6.*(dwMu0dtdw(3).*c(1,2).^2+dwMu0dtdw(2).*2.*c(1,3)).*240.*c(6,3)+4.*dwMu0dtdw(2).*c(1,2).*720.*c(6,4)+dwMu0dtdw(1).*2880.*c(6,5));
b(2,6)=1/120*((dwMu0dtdw(6).*c(1,2).^5+10.*dwMu0dtdw(5).*c(1,2).^3.*2.*c(1,3)+15.*dwMu0dtdw(4).*c(1,2).*2.*c(1,3).^2+10.*dwMu0dtdw(4).*c(1,2).^2.*6.*c(1,4)+10.*dwMu0dtdw(3).*2.*c(1,3).*6.*c(1,4)+5.*dwMu0dtdw(3).*c(1,2).*24.*c(1,5)+dwMu0dtdw(2).*120.*c(1,6)).*c(2,1)+5.*(dwMu0dtdw(5).*c(1,2).^4+6.*dwMu0dtdw(4).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(3).*2.*c(1,3).^2+4.*dwMu0dtdw(3).*c(1,2).*6.*c(1,4)+dwMu0dtdw(2).*24.*c(1,5)).*c(2,2)+10.*(dwMu0dtdw(4).*c(1,2).^3+3.*dwMu0dtdw(3).*c(1,2).*2.*c(1,3)+dwMu0dtdw(2).*6.*c(1,4)).*2.*c(2,3)+10.*(dwMu0dtdw(3).*c(1,2).^2+dwMu0dtdw(2).*2.*c(1,3)).*6.*c(2,4)+5.*dwMu0dtdw(2).*c(1,2).*24.*c(2,5)+dwMu0dtdw(1).*120.*c(2,6));
b(3,6)=1/240*((dwMu0dtdw(7).*c(1,2).^5+10.*dwMu0dtdw(6).*c(1,2).^3.*2.*c(1,3)+15.*dwMu0dtdw(5).*c(1,2).*2.*c(1,3).^2+10.*dwMu0dtdw(5).*c(1,2).^2.*6.*c(1,4)+10.*dwMu0dtdw(4).*2.*c(1,3).*6.*c(1,4)+5.*dwMu0dtdw(4).*c(1,2).*24.*c(1,5)+dwMu0dtdw(3).*120.*c(1,6)).*c(2,1).^2+10.*(dwMu0dtdw(6).*c(1,2).^4+6.*dwMu0dtdw(5).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(4).*2.*c(1,3).^2+4.*dwMu0dtdw(4).*c(1,2).*6.*c(1,4)+dwMu0dtdw(3).*24.*c(1,5)).*c(2,1).*c(2,2)+10.*(dwMu0dtdw(5).*c(1,2).^3+3.*dwMu0dtdw(4).*c(1,2).*2.*c(1,3)+dwMu0dtdw(3).*6.*c(1,4)).*(2.*c(2,2).^2+2.*c(2,1).*2.*c(2,3))+10.*(dwMu0dtdw(4).*c(1,2).^2+dwMu0dtdw(3).*2.*c(1,3)).*(6.*c(2,2).*2.*c(2,3)+2.*c(2,1).*6.*c(2,4))+5.*dwMu0dtdw(3).*c(1,2).*(6.*2.*c(2,3).^2+8.*c(2,2).*6.*c(2,4)+2.*c(2,1).*24.*c(2,5))+dwMu0dtdw(2).*(20.*2.*c(2,3).*6.*c(2,4)+10.*c(2,2).*24.*c(2,5)+2.*c(2,1).*120.*c(2,6))+(dwMu0dtdw(6).*c(1,2).^5+10.*dwMu0dtdw(5).*c(1,2).^3.*2.*c(1,3)+15.*dwMu0dtdw(4).*c(1,2).*2.*c(1,3).^2+10.*dwMu0dtdw(4).*c(1,2).^2.*6.*c(1,4)+10.*dwMu0dtdw(3).*2.*c(1,3).*6.*c(1,4)+5.*dwMu0dtdw(3).*c(1,2).*24.*c(1,5)+dwMu0dtdw(2).*120.*c(1,6)).*2.*c(3,1)+5.*(dwMu0dtdw(5).*c(1,2).^4+6.*dwMu0dtdw(4).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(3).*2.*c(1,3).^2+4.*dwMu0dtdw(3).*c(1,2).*6.*c(1,4)+dwMu0dtdw(2).*24.*c(1,5)).*2.*c(3,2)+10.*(dwMu0dtdw(4).*c(1,2).^3+3.*dwMu0dtdw(3).*c(1,2).*2.*c(1,3)+dwMu0dtdw(2).*6.*c(1,4)).*4.*c(3,3)+10.*(dwMu0dtdw(3).*c(1,2).^2+dwMu0dtdw(2).*2.*c(1,3)).*12.*c(3,4)+5.*dwMu0dtdw(2).*c(1,2).*48.*c(3,5)+dwMu0dtdw(1).*240.*c(3,6));
b(4,6)=1/720*((dwMu0dtdw(8).*c(1,2).^5+10.*dwMu0dtdw(7).*c(1,2).^3.*2.*c(1,3)+15.*dwMu0dtdw(6).*c(1,2).*2.*c(1,3).^2+10.*dwMu0dtdw(6).*c(1,2).^2.*6.*c(1,4)+10.*dwMu0dtdw(5).*2.*c(1,3).*6.*c(1,4)+5.*dwMu0dtdw(5).*c(1,2).*24.*c(1,5)+dwMu0dtdw(4).*120.*c(1,6)).*c(2,1).^3+15.*(dwMu0dtdw(7).*c(1,2).^4+6.*dwMu0dtdw(6).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(5).*2.*c(1,3).^2+4.*dwMu0dtdw(5).*c(1,2).*6.*c(1,4)+dwMu0dtdw(4).*24.*c(1,5)).*c(2,1).^2.*c(2,2)+10.*(dwMu0dtdw(6).*c(1,2).^3+3.*dwMu0dtdw(5).*c(1,2).*2.*c(1,3)+dwMu0dtdw(4).*6.*c(1,4)).*(6.*c(2,1).*c(2,2).^2+3.*c(2,1).^2.*2.*c(2,3))+10.*(dwMu0dtdw(5).*c(1,2).^2+dwMu0dtdw(4).*2.*c(1,3)).*(6.*c(2,2).^3+18.*c(2,1).*c(2,2).*2.*c(2,3)+3.*c(2,1).^2.*6.*c(2,4))+5.*dwMu0dtdw(4).*c(1,2).*(36.*c(2,2).^2.*2.*c(2,3)+18.*c(2,1).*2.*c(2,3).^2+24.*c(2,1).*c(2,2).*6.*c(2,4)+3.*c(2,1).^2.*24.*c(2,5))+dwMu0dtdw(3).*(90.*c(2,2).*2.*c(2,3).^2+60.*c(2,2).^2.*6.*c(2,4)+60.*c(2,1).*2.*c(2,3).*6.*c(2,4)+30.*c(2,1).*c(2,2).*24.*c(2,5)+3.*c(2,1).^2.*120.*c(2,6))+3.*(dwMu0dtdw(7).*c(1,2).^5+10.*dwMu0dtdw(6).*c(1,2).^3.*2.*c(1,3)+15.*dwMu0dtdw(5).*c(1,2).*2.*c(1,3).^2+10.*dwMu0dtdw(5).*c(1,2).^2.*6.*c(1,4)+10.*dwMu0dtdw(4).*2.*c(1,3).*6.*c(1,4)+5.*dwMu0dtdw(4).*c(1,2).*24.*c(1,5)+dwMu0dtdw(3).*120.*c(1,6)).*c(2,1).*2.*c(3,1)+15.*(dwMu0dtdw(6).*c(1,2).^4+6.*dwMu0dtdw(5).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(4).*2.*c(1,3).^2+4.*dwMu0dtdw(4).*c(1,2).*6.*c(1,4)+dwMu0dtdw(3).*24.*c(1,5)).*(c(2,2).*2.*c(3,1)+c(2,1).*2.*c(3,2))+30.*(dwMu0dtdw(5).*c(1,2).^3+3.*dwMu0dtdw(4).*c(1,2).*2.*c(1,3)+dwMu0dtdw(3).*6.*c(1,4)).*(2.*c(2,3).*2.*c(3,1)+2.*c(2,2).*2.*c(3,2)+c(2,1).*4.*c(3,3))+30.*(dwMu0dtdw(4).*c(1,2).^2+dwMu0dtdw(3).*2.*c(1,3)).*(6.*c(2,4).*2.*c(3,1)+3.*2.*c(2,3).*2.*c(3,2)+3.*c(2,2).*4.*c(3,3)+c(2,1).*12.*c(3,4))+15.*dwMu0dtdw(3).*c(1,2).*(24.*c(2,5).*2.*c(3,1)+4.*6.*c(2,4).*2.*c(3,2)+6.*2.*c(2,3).*4.*c(3,3)+4.*c(2,2).*12.*c(3,4)+c(2,1).*48.*c(3,5))+3.*dwMu0dtdw(2).*(120.*c(2,6).*2.*c(3,1)+5.*24.*c(2,5).*2.*c(3,2)+10.*6.*c(2,4).*4.*c(3,3)+10.*2.*c(2,3).*12.*c(3,4)+5.*c(2,2).*48.*c(3,5)+c(2,1).*240.*c(3,6))+(dwMu0dtdw(6).*c(1,2).^5+10.*dwMu0dtdw(5).*c(1,2).^3.*2.*c(1,3)+15.*dwMu0dtdw(4).*c(1,2).*2.*c(1,3).^2+10.*dwMu0dtdw(4).*c(1,2).^2.*6.*c(1,4)+10.*dwMu0dtdw(3).*2.*c(1,3).*6.*c(1,4)+5.*dwMu0dtdw(3).*c(1,2).*24.*c(1,5)+dwMu0dtdw(2).*120.*c(1,6)).*6.*c(4,1)+5.*(dwMu0dtdw(5).*c(1,2).^4+6.*dwMu0dtdw(4).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(3).*2.*c(1,3).^2+4.*dwMu0dtdw(3).*c(1,2).*6.*c(1,4)+dwMu0dtdw(2).*24.*c(1,5)).*6.*c(4,2)+10.*(dwMu0dtdw(4).*c(1,2).^3+3.*dwMu0dtdw(3).*c(1,2).*2.*c(1,3)+dwMu0dtdw(2).*6.*c(1,4)).*12.*c(4,3)+10.*(dwMu0dtdw(3).*c(1,2).^2+dwMu0dtdw(2).*2.*c(1,3)).*36.*c(4,4)+5.*dwMu0dtdw(2).*c(1,2).*144.*c(4,5)+dwMu0dtdw(1).*720.*c(4,6));
b(5,6)=1/2880*((dwMu0dtdw(9).*c(1,2).^5+10.*dwMu0dtdw(8).*c(1,2).^3.*2.*c(1,3)+15.*dwMu0dtdw(7).*c(1,2).*2.*c(1,3).^2+10.*dwMu0dtdw(7).*c(1,2).^2.*6.*c(1,4)+10.*dwMu0dtdw(6).*2.*c(1,3).*6.*c(1,4)+5.*dwMu0dtdw(6).*c(1,2).*24.*c(1,5)+dwMu0dtdw(5).*120.*c(1,6)).*c(2,1).^4+20.*(dwMu0dtdw(8).*c(1,2).^4+6.*dwMu0dtdw(7).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(6).*2.*c(1,3).^2+4.*dwMu0dtdw(6).*c(1,2).*6.*c(1,4)+dwMu0dtdw(5).*24.*c(1,5)).*c(2,1).^3.*c(2,2)+10.*(dwMu0dtdw(7).*c(1,2).^3+3.*dwMu0dtdw(6).*c(1,2).*2.*c(1,3)+dwMu0dtdw(5).*6.*c(1,4)).*(12.*c(2,1).^2.*c(2,2).^2+4.*c(2,1).^3.*2.*c(2,3))+10.*(dwMu0dtdw(6).*c(1,2).^2+dwMu0dtdw(5).*2.*c(1,3)).*(24.*c(2,1).*c(2,2).^3+36.*c(2,1).^2.*c(2,2).*2.*c(2,3)+4.*c(2,1).^3.*6.*c(2,4))+5.*dwMu0dtdw(5).*c(1,2).*(24.*c(2,2).^4+144.*c(2,1).*c(2,2).^2.*2.*c(2,3)+36.*c(2,1).^2.*2.*c(2,3).^2+48.*c(2,1).^2.*c(2,2).*6.*c(2,4)+4.*c(2,1).^3.*24.*c(2,5))+dwMu0dtdw(4).*(240.*c(2,2).^3.*2.*c(2,3)+360.*c(2,1).*c(2,2).*2.*c(2,3).^2+240.*c(2,1).*c(2,2).^2.*6.*c(2,4)+120.*c(2,1).^2.*2.*c(2,3).*6.*c(2,4)+60.*c(2,1).^2.*c(2,2).*24.*c(2,5)+4.*c(2,1).^3.*120.*c(2,6))+6.*(dwMu0dtdw(8).*c(1,2).^5+10.*dwMu0dtdw(7).*c(1,2).^3.*2.*c(1,3)+15.*dwMu0dtdw(6).*c(1,2).*2.*c(1,3).^2+10.*dwMu0dtdw(6).*c(1,2).^2.*6.*c(1,4)+10.*dwMu0dtdw(5).*2.*c(1,3).*6.*c(1,4)+5.*dwMu0dtdw(5).*c(1,2).*24.*c(1,5)+dwMu0dtdw(4).*120.*c(1,6)).*c(2,1).^2.*2.*c(3,1)+3.*(dwMu0dtdw(7).*c(1,2).^5+10.*dwMu0dtdw(6).*c(1,2).^3.*2.*c(1,3)+15.*dwMu0dtdw(5).*c(1,2).*2.*c(1,3).^2+10.*dwMu0dtdw(5).*c(1,2).^2.*6.*c(1,4)+10.*dwMu0dtdw(4).*2.*c(1,3).*6.*c(1,4)+5.*dwMu0dtdw(4).*c(1,2).*24.*c(1,5)+dwMu0dtdw(3).*120.*c(1,6)).*2.*c(3,1).^2+30.*(dwMu0dtdw(6).*c(1,2).^4+6.*dwMu0dtdw(5).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(4).*2.*c(1,3).^2+4.*dwMu0dtdw(4).*c(1,2).*6.*c(1,4)+dwMu0dtdw(3).*24.*c(1,5)).*2.*c(3,1).*2.*c(3,2)+30.*(dwMu0dtdw(7).*c(1,2).^4+6.*dwMu0dtdw(6).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(5).*2.*c(1,3).^2+4.*dwMu0dtdw(5).*c(1,2).*6.*c(1,4)+dwMu0dtdw(4).*24.*c(1,5)).*(2.*c(2,1).*c(2,2).*2.*c(3,1)+c(2,1).^2.*2.*c(3,2))+60.*(dwMu0dtdw(6).*c(1,2).^3+3.*dwMu0dtdw(5).*c(1,2).*2.*c(1,3)+dwMu0dtdw(4).*6.*c(1,4)).*((2.*c(2,2).^2+2.*c(2,1).*2.*c(2,3)).*2.*c(3,1)+4.*c(2,1).*c(2,2).*2.*c(3,2)+c(2,1).^2.*4.*c(3,3))+30.*(dwMu0dtdw(5).*c(1,2).^3+3.*dwMu0dtdw(4).*c(1,2).*2.*c(1,3)+dwMu0dtdw(3).*6.*c(1,4)).*(2.*2.*c(3,2).^2+2.*2.*c(3,1).*4.*c(3,3))+60.*(dwMu0dtdw(5).*c(1,2).^2+dwMu0dtdw(4).*2.*c(1,3)).*((6.*c(2,2).*2.*c(2,3)+2.*c(2,1).*6.*c(2,4)).*2.*c(3,1)+3.*(2.*c(2,2).^2+2.*c(2,1).*2.*c(2,3)).*2.*c(3,2)+6.*c(2,1).*c(2,2).*4.*c(3,3)+c(2,1).^2.*12.*c(3,4))+30.*(dwMu0dtdw(4).*c(1,2).^2+dwMu0dtdw(3).*2.*c(1,3)).*(6.*2.*c(3,2).*4.*c(3,3)+2.*2.*c(3,1).*12.*c(3,4))+30.*dwMu0dtdw(4).*c(1,2).*((6.*2.*c(2,3).^2+8.*c(2,2).*6.*c(2,4)+2.*c(2,1).*24.*c(2,5)).*2.*c(3,1)+4.*(6.*c(2,2).*2.*c(2,3)+2.*c(2,1).*6.*c(2,4)).*2.*c(3,2)+6.*(2.*c(2,2).^2+2.*c(2,1).*2.*c(2,3)).*4.*c(3,3)+8.*c(2,1).*c(2,2).*12.*c(3,4)+c(2,1).^2.*48.*c(3,5))+15.*dwMu0dtdw(3).*c(1,2).*(6.*4.*c(3,3).^2+8.*2.*c(3,2).*12.*c(3,4)+2.*2.*c(3,1).*48.*c(3,5))+6.*dwMu0dtdw(3).*((20.*2.*c(2,3).*6.*c(2,4)+10.*c(2,2).*24.*c(2,5)+2.*c(2,1).*120.*c(2,6)).*2.*c(3,1)+5.*(6.*2.*c(2,3).^2+8.*c(2,2).*6.*c(2,4)+2.*c(2,1).*24.*c(2,5)).*2.*c(3,2)+10.*(6.*c(2,2).*2.*c(2,3)+2.*c(2,1).*6.*c(2,4)).*4.*c(3,3)+10.*(2.*c(2,2).^2+2.*c(2,1).*2.*c(2,3)).*12.*c(3,4)+10.*c(2,1).*c(2,2).*48.*c(3,5)+c(2,1).^2.*240.*c(3,6))+3.*dwMu0dtdw(2).*(20.*4.*c(3,3).*12.*c(3,4)+10.*2.*c(3,2).*48.*c(3,5)+2.*2.*c(3,1).*240.*c(3,6))+4.*(dwMu0dtdw(7).*c(1,2).^5+10.*dwMu0dtdw(6).*c(1,2).^3.*2.*c(1,3)+15.*dwMu0dtdw(5).*c(1,2).*2.*c(1,3).^2+10.*dwMu0dtdw(5).*c(1,2).^2.*6.*c(1,4)+10.*dwMu0dtdw(4).*2.*c(1,3).*6.*c(1,4)+5.*dwMu0dtdw(4).*c(1,2).*24.*c(1,5)+dwMu0dtdw(3).*120.*c(1,6)).*c(2,1).*6.*c(4,1)+20.*(dwMu0dtdw(6).*c(1,2).^4+6.*dwMu0dtdw(5).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(4).*2.*c(1,3).^2+4.*dwMu0dtdw(4).*c(1,2).*6.*c(1,4)+dwMu0dtdw(3).*24.*c(1,5)).*(c(2,2).*6.*c(4,1)+c(2,1).*6.*c(4,2))+40.*(dwMu0dtdw(5).*c(1,2).^3+3.*dwMu0dtdw(4).*c(1,2).*2.*c(1,3)+dwMu0dtdw(3).*6.*c(1,4)).*(2.*c(2,3).*6.*c(4,1)+2.*c(2,2).*6.*c(4,2)+c(2,1).*12.*c(4,3))+40.*(dwMu0dtdw(4).*c(1,2).^2+dwMu0dtdw(3).*2.*c(1,3)).*(6.*c(2,4).*6.*c(4,1)+3.*2.*c(2,3).*6.*c(4,2)+3.*c(2,2).*12.*c(4,3)+c(2,1).*36.*c(4,4))+20.*dwMu0dtdw(3).*c(1,2).*(24.*c(2,5).*6.*c(4,1)+4.*6.*c(2,4).*6.*c(4,2)+6.*2.*c(2,3).*12.*c(4,3)+4.*c(2,2).*36.*c(4,4)+c(2,1).*144.*c(4,5))+4.*dwMu0dtdw(2).*(120.*c(2,6).*6.*c(4,1)+5.*24.*c(2,5).*6.*c(4,2)+10.*6.*c(2,4).*12.*c(4,3)+10.*2.*c(2,3).*36.*c(4,4)+5.*c(2,2).*144.*c(4,5)+c(2,1).*720.*c(4,6))+(dwMu0dtdw(6).*c(1,2).^5+10.*dwMu0dtdw(5).*c(1,2).^3.*2.*c(1,3)+15.*dwMu0dtdw(4).*c(1,2).*2.*c(1,3).^2+10.*dwMu0dtdw(4).*c(1,2).^2.*6.*c(1,4)+10.*dwMu0dtdw(3).*2.*c(1,3).*6.*c(1,4)+5.*dwMu0dtdw(3).*c(1,2).*24.*c(1,5)+dwMu0dtdw(2).*120.*c(1,6)).*24.*c(5,1)+5.*(dwMu0dtdw(5).*c(1,2).^4+6.*dwMu0dtdw(4).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(3).*2.*c(1,3).^2+4.*dwMu0dtdw(3).*c(1,2).*6.*c(1,4)+dwMu0dtdw(2).*24.*c(1,5)).*24.*c(5,2)+10.*(dwMu0dtdw(4).*c(1,2).^3+3.*dwMu0dtdw(3).*c(1,2).*2.*c(1,3)+dwMu0dtdw(2).*6.*c(1,4)).*48.*c(5,3)+10.*(dwMu0dtdw(3).*c(1,2).^2+dwMu0dtdw(2).*2.*c(1,3)).*144.*c(5,4)+5.*dwMu0dtdw(2).*c(1,2).*576.*c(5,5)+dwMu0dtdw(1).*2880.*c(5,6));
b(6,6)=1/14400*((dwMu0dtdw(10).*c(1,2).^5+10.*dwMu0dtdw(9).*c(1,2).^3.*2.*c(1,3)+15.*dwMu0dtdw(8).*c(1,2).*2.*c(1,3).^2+10.*dwMu0dtdw(8).*c(1,2).^2.*6.*c(1,4)+10.*dwMu0dtdw(7).*2.*c(1,3).*6.*c(1,4)+5.*dwMu0dtdw(7).*c(1,2).*24.*c(1,5)+dwMu0dtdw(6).*120.*c(1,6)).*c(2,1).^5+25.*(dwMu0dtdw(9).*c(1,2).^4+6.*dwMu0dtdw(8).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(7).*2.*c(1,3).^2+4.*dwMu0dtdw(7).*c(1,2).*6.*c(1,4)+dwMu0dtdw(6).*24.*c(1,5)).*c(2,1).^4.*c(2,2)+10.*(dwMu0dtdw(8).*c(1,2).^3+3.*dwMu0dtdw(7).*c(1,2).*2.*c(1,3)+dwMu0dtdw(6).*6.*c(1,4)).*(20.*c(2,1).^3.*c(2,2).^2+5.*c(2,1).^4.*2.*c(2,3))+10.*(dwMu0dtdw(7).*c(1,2).^2+dwMu0dtdw(6).*2.*c(1,3)).*(60.*c(2,1).^2.*c(2,2).^3+60.*c(2,1).^3.*c(2,2).*2.*c(2,3)+5.*c(2,1).^4.*6.*c(2,4))+5.*dwMu0dtdw(6).*c(1,2).*(120.*c(2,1).*c(2,2).^4+360.*c(2,1).^2.*c(2,2).^2.*2.*c(2,3)+60.*c(2,1).^3.*2.*c(2,3).^2+80.*c(2,1).^3.*c(2,2).*6.*c(2,4)+5.*c(2,1).^4.*24.*c(2,5))+dwMu0dtdw(5).*(120.*c(2,2).^5+1200.*c(2,1).*c(2,2).^3.*2.*c(2,3)+900.*c(2,1).^2.*c(2,2).*2.*c(2,3).^2+600.*c(2,1).^2.*c(2,2).^2.*6.*c(2,4)+200.*c(2,1).^3.*2.*c(2,3).*6.*c(2,4)+100.*c(2,1).^3.*c(2,2).*24.*c(2,5)+5.*c(2,1).^4.*120.*c(2,6))+10.*(dwMu0dtdw(9).*c(1,2).^5+10.*dwMu0dtdw(8).*c(1,2).^3.*2.*c(1,3)+15.*dwMu0dtdw(7).*c(1,2).*2.*c(1,3).^2+10.*dwMu0dtdw(7).*c(1,2).^2.*6.*c(1,4)+10.*dwMu0dtdw(6).*2.*c(1,3).*6.*c(1,4)+5.*dwMu0dtdw(6).*c(1,2).*24.*c(1,5)+dwMu0dtdw(5).*120.*c(1,6)).*c(2,1).^3.*2.*c(3,1)+15.*(dwMu0dtdw(8).*c(1,2).^5+10.*dwMu0dtdw(7).*c(1,2).^3.*2.*c(1,3)+15.*dwMu0dtdw(6).*c(1,2).*2.*c(1,3).^2+10.*dwMu0dtdw(6).*c(1,2).^2.*6.*c(1,4)+10.*dwMu0dtdw(5).*2.*c(1,3).*6.*c(1,4)+5.*dwMu0dtdw(5).*c(1,2).*24.*c(1,5)+dwMu0dtdw(4).*120.*c(1,6)).*c(2,1).*2.*c(3,1).^2+50.*(dwMu0dtdw(8).*c(1,2).^4+6.*dwMu0dtdw(7).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(6).*2.*c(1,3).^2+4.*dwMu0dtdw(6).*c(1,2).*6.*c(1,4)+dwMu0dtdw(5).*24.*c(1,5)).*(3.*c(2,1).^2.*c(2,2).*2.*c(3,1)+c(2,1).^3.*2.*c(3,2))+75.*(dwMu0dtdw(7).*c(1,2).^4+6.*dwMu0dtdw(6).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(5).*2.*c(1,3).^2+4.*dwMu0dtdw(5).*c(1,2).*6.*c(1,4)+dwMu0dtdw(4).*24.*c(1,5)).*(c(2,2).*2.*c(3,1).^2+2.*c(2,1).*2.*c(3,1).*2.*c(3,2))+100.*(dwMu0dtdw(7).*c(1,2).^3+3.*dwMu0dtdw(6).*c(1,2).*2.*c(1,3)+dwMu0dtdw(5).*6.*c(1,4)).*((6.*c(2,1).*c(2,2).^2+3.*c(2,1).^2.*2.*c(2,3)).*2.*c(3,1)+6.*c(2,1).^2.*c(2,2).*2.*c(3,2)+c(2,1).^3.*4.*c(3,3))+150.*(dwMu0dtdw(6).*c(1,2).^3+3.*dwMu0dtdw(5).*c(1,2).*2.*c(1,3)+dwMu0dtdw(4).*6.*c(1,4)).*(2.*c(2,3).*2.*c(3,1).^2+4.*c(2,2).*2.*c(3,1).*2.*c(3,2)+c(2,1).*(2.*2.*c(3,2).^2+2.*2.*c(3,1).*4.*c(3,3)))+100.*(dwMu0dtdw(6).*c(1,2).^2+dwMu0dtdw(5).*2.*c(1,3)).*((6.*c(2,2).^3+18.*c(2,1).*c(2,2).*2.*c(2,3)+3.*c(2,1).^2.*6.*c(2,4)).*2.*c(3,1)+3.*(6.*c(2,1).*c(2,2).^2+3.*c(2,1).^2.*2.*c(2,3)).*2.*c(3,2)+9.*c(2,1).^2.*c(2,2).*4.*c(3,3)+c(2,1).^3.*12.*c(3,4))+150.*(dwMu0dtdw(5).*c(1,2).^2+dwMu0dtdw(4).*2.*c(1,3)).*(6.*c(2,4).*2.*c(3,1).^2+6.*2.*c(2,3).*2.*c(3,1).*2.*c(3,2)+3.*c(2,2).*(2.*2.*c(3,2).^2+2.*2.*c(3,1).*4.*c(3,3))+c(2,1).*(6.*2.*c(3,2).*4.*c(3,3)+2.*2.*c(3,1).*12.*c(3,4)))+50.*dwMu0dtdw(5).*c(1,2).*((36.*c(2,2).^2.*2.*c(2,3)+18.*c(2,1).*2.*c(2,3).^2+24.*c(2,1).*c(2,2).*6.*c(2,4)+3.*c(2,1).^2.*24.*c(2,5)).*2.*c(3,1)+4.*(6.*c(2,2).^3+18.*c(2,1).*c(2,2).*2.*c(2,3)+3.*c(2,1).^2.*6.*c(2,4)).*2.*c(3,2)+6.*(6.*c(2,1).*c(2,2).^2+3.*c(2,1).^2.*2.*c(2,3)).*4.*c(3,3)+12.*c(2,1).^2.*c(2,2).*12.*c(3,4)+c(2,1).^3.*48.*c(3,5))+75.*dwMu0dtdw(4).*c(1,2).*(24.*c(2,5).*2.*c(3,1).^2+8.*6.*c(2,4).*2.*c(3,1).*2.*c(3,2)+6.*2.*c(2,3).*(2.*2.*c(3,2).^2+2.*2.*c(3,1).*4.*c(3,3))+4.*c(2,2).*(6.*2.*c(3,2).*4.*c(3,3)+2.*2.*c(3,1).*12.*c(3,4))+c(2,1).*(6.*4.*c(3,3).^2+8.*2.*c(3,2).*12.*c(3,4)+2.*2.*c(3,1).*48.*c(3,5)))+10.*dwMu0dtdw(4).*((90.*c(2,2).*2.*c(2,3).^2+60.*c(2,2).^2.*6.*c(2,4)+60.*c(2,1).*2.*c(2,3).*6.*c(2,4)+30.*c(2,1).*c(2,2).*24.*c(2,5)+3.*c(2,1).^2.*120.*c(2,6)).*2.*c(3,1)+5.*(36.*c(2,2).^2.*2.*c(2,3)+18.*c(2,1).*2.*c(2,3).^2+24.*c(2,1).*c(2,2).*6.*c(2,4)+3.*c(2,1).^2.*24.*c(2,5)).*2.*c(3,2)+10.*(6.*c(2,2).^3+18.*c(2,1).*c(2,2).*2.*c(2,3)+3.*c(2,1).^2.*6.*c(2,4)).*4.*c(3,3)+10.*(6.*c(2,1).*c(2,2).^2+3.*c(2,1).^2.*2.*c(2,3)).*12.*c(3,4)+15.*c(2,1).^2.*c(2,2).*48.*c(3,5)+c(2,1).^3.*240.*c(3,6))+15.*dwMu0dtdw(3).*(120.*c(2,6).*2.*c(3,1).^2+10.*24.*c(2,5).*2.*c(3,1).*2.*c(3,2)+10.*6.*c(2,4).*(2.*2.*c(3,2).^2+2.*2.*c(3,1).*4.*c(3,3))+10.*2.*c(2,3).*(6.*2.*c(3,2).*4.*c(3,3)+2.*2.*c(3,1).*12.*c(3,4))+5.*c(2,2).*(6.*4.*c(3,3).^2+8.*2.*c(3,2).*12.*c(3,4)+2.*2.*c(3,1).*48.*c(3,5))+c(2,1).*(20.*4.*c(3,3).*12.*c(3,4)+10.*2.*c(3,2).*48.*c(3,5)+2.*2.*c(3,1).*240.*c(3,6)))+10.*(dwMu0dtdw(8).*c(1,2).^5+10.*dwMu0dtdw(7).*c(1,2).^3.*2.*c(1,3)+15.*dwMu0dtdw(6).*c(1,2).*2.*c(1,3).^2+10.*dwMu0dtdw(6).*c(1,2).^2.*6.*c(1,4)+10.*dwMu0dtdw(5).*2.*c(1,3).*6.*c(1,4)+5.*dwMu0dtdw(5).*c(1,2).*24.*c(1,5)+dwMu0dtdw(4).*120.*c(1,6)).*c(2,1).^2.*6.*c(4,1)+10.*(dwMu0dtdw(7).*c(1,2).^5+10.*dwMu0dtdw(6).*c(1,2).^3.*2.*c(1,3)+15.*dwMu0dtdw(5).*c(1,2).*2.*c(1,3).^2+10.*dwMu0dtdw(5).*c(1,2).^2.*6.*c(1,4)+10.*dwMu0dtdw(4).*2.*c(1,3).*6.*c(1,4)+5.*dwMu0dtdw(4).*c(1,2).*24.*c(1,5)+dwMu0dtdw(3).*120.*c(1,6)).*2.*c(3,1).*6.*c(4,1)+50.*(dwMu0dtdw(7).*c(1,2).^4+6.*dwMu0dtdw(6).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(5).*2.*c(1,3).^2+4.*dwMu0dtdw(5).*c(1,2).*6.*c(1,4)+dwMu0dtdw(4).*24.*c(1,5)).*(2.*c(2,1).*c(2,2).*6.*c(4,1)+c(2,1).^2.*6.*c(4,2))+50.*(dwMu0dtdw(6).*c(1,2).^4+6.*dwMu0dtdw(5).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(4).*2.*c(1,3).^2+4.*dwMu0dtdw(4).*c(1,2).*6.*c(1,4)+dwMu0dtdw(3).*24.*c(1,5)).*(2.*c(3,2).*6.*c(4,1)+2.*c(3,1).*6.*c(4,2))+100.*(dwMu0dtdw(6).*c(1,2).^3+3.*dwMu0dtdw(5).*c(1,2).*2.*c(1,3)+dwMu0dtdw(4).*6.*c(1,4)).*((2.*c(2,2).^2+2.*c(2,1).*2.*c(2,3)).*6.*c(4,1)+4.*c(2,1).*c(2,2).*6.*c(4,2)+c(2,1).^2.*12.*c(4,3))+100.*(dwMu0dtdw(5).*c(1,2).^3+3.*dwMu0dtdw(4).*c(1,2).*2.*c(1,3)+dwMu0dtdw(3).*6.*c(1,4)).*(4.*c(3,3).*6.*c(4,1)+2.*2.*c(3,2).*6.*c(4,2)+2.*c(3,1).*12.*c(4,3))+100.*(dwMu0dtdw(5).*c(1,2).^2+dwMu0dtdw(4).*2.*c(1,3)).*((6.*c(2,2).*2.*c(2,3)+2.*c(2,1).*6.*c(2,4)).*6.*c(4,1)+3.*(2.*c(2,2).^2+2.*c(2,1).*2.*c(2,3)).*6.*c(4,2)+6.*c(2,1).*c(2,2).*12.*c(4,3)+c(2,1).^2.*36.*c(4,4))+100.*(dwMu0dtdw(4).*c(1,2).^2+dwMu0dtdw(3).*2.*c(1,3)).*(12.*c(3,4).*6.*c(4,1)+3.*4.*c(3,3).*6.*c(4,2)+3.*2.*c(3,2).*12.*c(4,3)+2.*c(3,1).*36.*c(4,4))+50.*dwMu0dtdw(4).*c(1,2).*((6.*2.*c(2,3).^2+8.*c(2,2).*6.*c(2,4)+2.*c(2,1).*24.*c(2,5)).*6.*c(4,1)+4.*(6.*c(2,2).*2.*c(2,3)+2.*c(2,1).*6.*c(2,4)).*6.*c(4,2)+6.*(2.*c(2,2).^2+2.*c(2,1).*2.*c(2,3)).*12.*c(4,3)+8.*c(2,1).*c(2,2).*36.*c(4,4)+c(2,1).^2.*144.*c(4,5))+50.*dwMu0dtdw(3).*c(1,2).*(48.*c(3,5).*6.*c(4,1)+4.*12.*c(3,4).*6.*c(4,2)+6.*4.*c(3,3).*12.*c(4,3)+4.*2.*c(3,2).*36.*c(4,4)+2.*c(3,1).*144.*c(4,5))+10.*dwMu0dtdw(3).*((20.*2.*c(2,3).*6.*c(2,4)+10.*c(2,2).*24.*c(2,5)+2.*c(2,1).*120.*c(2,6)).*6.*c(4,1)+5.*(6.*2.*c(2,3).^2+8.*c(2,2).*6.*c(2,4)+2.*c(2,1).*24.*c(2,5)).*6.*c(4,2)+10.*(6.*c(2,2).*2.*c(2,3)+2.*c(2,1).*6.*c(2,4)).*12.*c(4,3)+10.*(2.*c(2,2).^2+2.*c(2,1).*2.*c(2,3)).*36.*c(4,4)+10.*c(2,1).*c(2,2).*144.*c(4,5)+c(2,1).^2.*720.*c(4,6))+10.*dwMu0dtdw(2).*(240.*c(3,6).*6.*c(4,1)+5.*48.*c(3,5).*6.*c(4,2)+10.*12.*c(3,4).*12.*c(4,3)+10.*4.*c(3,3).*36.*c(4,4)+5.*2.*c(3,2).*144.*c(4,5)+2.*c(3,1).*720.*c(4,6))+5.*(dwMu0dtdw(7).*c(1,2).^5+10.*dwMu0dtdw(6).*c(1,2).^3.*2.*c(1,3)+15.*dwMu0dtdw(5).*c(1,2).*2.*c(1,3).^2+10.*dwMu0dtdw(5).*c(1,2).^2.*6.*c(1,4)+10.*dwMu0dtdw(4).*2.*c(1,3).*6.*c(1,4)+5.*dwMu0dtdw(4).*c(1,2).*24.*c(1,5)+dwMu0dtdw(3).*120.*c(1,6)).*c(2,1).*24.*c(5,1)+25.*(dwMu0dtdw(6).*c(1,2).^4+6.*dwMu0dtdw(5).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(4).*2.*c(1,3).^2+4.*dwMu0dtdw(4).*c(1,2).*6.*c(1,4)+dwMu0dtdw(3).*24.*c(1,5)).*(c(2,2).*24.*c(5,1)+c(2,1).*24.*c(5,2))+50.*(dwMu0dtdw(5).*c(1,2).^3+3.*dwMu0dtdw(4).*c(1,2).*2.*c(1,3)+dwMu0dtdw(3).*6.*c(1,4)).*(2.*c(2,3).*24.*c(5,1)+2.*c(2,2).*24.*c(5,2)+c(2,1).*48.*c(5,3))+50.*(dwMu0dtdw(4).*c(1,2).^2+dwMu0dtdw(3).*2.*c(1,3)).*(6.*c(2,4).*24.*c(5,1)+3.*2.*c(2,3).*24.*c(5,2)+3.*c(2,2).*48.*c(5,3)+c(2,1).*144.*c(5,4))+25.*dwMu0dtdw(3).*c(1,2).*(24.*c(2,5).*24.*c(5,1)+4.*6.*c(2,4).*24.*c(5,2)+6.*2.*c(2,3).*48.*c(5,3)+4.*c(2,2).*144.*c(5,4)+c(2,1).*576.*c(5,5))+5.*dwMu0dtdw(2).*(120.*c(2,6).*24.*c(5,1)+5.*24.*c(2,5).*24.*c(5,2)+10.*6.*c(2,4).*48.*c(5,3)+10.*2.*c(2,3).*144.*c(5,4)+5.*c(2,2).*576.*c(5,5)+c(2,1).*2880.*c(5,6))+(dwMu0dtdw(6).*c(1,2).^5+10.*dwMu0dtdw(5).*c(1,2).^3.*2.*c(1,3)+15.*dwMu0dtdw(4).*c(1,2).*2.*c(1,3).^2+10.*dwMu0dtdw(4).*c(1,2).^2.*6.*c(1,4)+10.*dwMu0dtdw(3).*2.*c(1,3).*6.*c(1,4)+5.*dwMu0dtdw(3).*c(1,2).*24.*c(1,5)+dwMu0dtdw(2).*120.*c(1,6)).*120.*c(6,1)+5.*(dwMu0dtdw(5).*c(1,2).^4+6.*dwMu0dtdw(4).*c(1,2).^2.*2.*c(1,3)+3.*dwMu0dtdw(3).*2.*c(1,3).^2+4.*dwMu0dtdw(3).*c(1,2).*6.*c(1,4)+dwMu0dtdw(2).*24.*c(1,5)).*120.*c(6,2)+10.*(dwMu0dtdw(4).*c(1,2).^3+3.*dwMu0dtdw(3).*c(1,2).*2.*c(1,3)+dwMu0dtdw(2).*6.*c(1,4)).*240.*c(6,3)+10.*(dwMu0dtdw(3).*c(1,2).^2+dwMu0dtdw(2).*2.*c(1,3)).*720.*c(6,4)+5.*dwMu0dtdw(2).*c(1,2).*2880.*c(6,5)+dwMu0dtdw(1).*14400.*c(6,6));
% bv00=b(1,1);
% bv0(1:5)=b(1,2:6);
% bv10=b(2,1);
% bv1(1:5)=b(2,2:6);
% bv20=b(3,1);
% bv2(1:5)=b(3,2:6);
% bv30=b(4,1);
% bv3(1:5)=b(4,2:6);
% bv40=b(5,1);
% bv4(1:5)=b(5,2:6);
% bv50=b(6,1);
% bv5(1:5)=b(6,2:6);
%
end
function [c] =SeriesProduct2D1D(a,b)
c(1,1)=a(1,1).* b(1);
c(2,1)= a(2,1).* b(1);% Z
c(3,1)= a(3,1).* b(1);% Z^2
c(4,1)= a(4,1).* b(1);% Z^3
c(5,1)= a(5,1).* b(1);% Z^4 +
c(6,1)= a(6,1).* b(1);% Z^5 +
%W
c(1,2)=(a(1,2).* b(1) + a(1,1).* b(2));
c(2,2)=(a(2,2).* b(1) + a(2,1).* b(2));% Z
c(3,2)=(a(3,2).* b(1) + a(3,1).* b(2));% Z^2
c(4,2)=(a(4,2).* b(1) + a(4,1).* b(2));% Z^3
c(5,2)=(a(5,2).* b(1) + a(5,1).* b(2));% Z^4
c(6,2)=(a(6,2).* b(1) + a(6,1).* b(2));% Z^5) +
%W^2
c(1,3)=(a(1,3).* b(1) + a(1,2).* b(2) + a(1,1).* b(3));
c(2,3)=(a(2,3).* b(1) + a(2,2).* b(2) + a(2,1).* b(3));% Z
c(3,3)=(a(3,3).* b(1) + a(3,2).* b(2) + a(3,1).* b(3));% Z^2
c(4,3)=(a(4,3).* b(1) + a(4,2).* b(2) + a(4,1).* b(3));% Z^3
c(5,3)=(a(5,3).* b(1) + a(5,2).* b(2) + a(5,1).* b(3));% Z^4
c(6,3)=(a(6,3).* b(1) + a(6,2).* b(2) + a(6,1).* b(3));% Z^5) +
%W^3
c(1,4)=(a(1,4).* b(1) + a(1,3).* b(2) + a(1,2).* b(3) + a(1,1).* b(4));%
c(2,4)=(a(2,4).* b(1) + a(2,3).* b(2) + a(2,2).* b(3) + a(2,1).* b(4));% Z
c(3,4)= (a(3,4).* b(1) + a(3,3).* b(2) + a(3,2) .*b(3) + a(3,1).* b(4));% Z^2
c(4,4)= (a(4,4).* b(1) + a(4,3).* b(2) + a(4,2).* b(3) + a(4,1).* b(4));% Z^3
c(5,4)= (a(5,4).* b(1) + a(5,3).* b(2) + a(5,2) .*b(3) + a(5,1) .*b(4));% Z^4
c(6,4)= (a(6,4).* b(1) + a(6,3).* b(2) + a(6,2).* b(3) + a(6,1).* b(4));% Z^5) +
%W^4
c(1,5)=(a(1,5).* b(1) + a(1,4).* b(2) + a(1,3).* b(3) + a(1,2).* b(4) + a(1,1).* b(5));
c(2,5)= (a(2,5).* b(1) + a(2,4).* b(2) + a(2,3).* b(3) + a(2,2) .*b(4) + a(2,1).* b(5));%Z
c(3,5)= (a(3,5).* b(1) + a(3,4).* b(2) + a(3,3).* b(3) + a(3,2) .*b(4) + a(3,1) .*b(5));% Z^2
c(4,5)=(a(4,5).* b(1) + a(4,4).* b(2) + a(4,3).* b(3) + a(4,2).* b(4) + a(4,1).* b(5));% Z^3
c(5,5)=(a(5,5).* b(1) + a(5,4).* b(2) + a(5,3).* b(3) + a(5,2).* b(4) + a(5,1) .*b(5));% Z^4
c(6,5)=(a(6,5).* b(1) + a(6,4).* b(2) + a(6,3).* b(3) + a(6,2).* b(4) + a(6,1).* b(5));% Z^5) +
%W^5
c(1,6)=(a(1,6).* b(1) + a(1,5).* b(2) + a(1,4).* b(3) + a(1,3).* b(4) + a(1,2).* b(5) + a(1,1).* b(6));
c(2,6)=(a(2,6).* b(1) + a(2,5).* b(2) + a(2,4).* b(3) + a(2,3).* b(4) + a(2,2).* b(5) + a(2,1).* b(6));% Z
c(3,6)=(a(3,6).* b(1) + a(3,5).* b(2) + a(3,4).* b(3) + a(3,3).* b(4) + a(3,2).* b(5) + a(3,1).* b(6));% Z^2
c(4,6)=(a(4,6).* b(1) + a(4,5).* b(2) + a(4,4).* b(3) + a(4,3).* b(4) + a(4,2).* b(5) + a(4,1).* b(6));% Z^3
c(5,6)=(a(5,6).* b(1) + a(5,5).* b(2) + a(5,4).* b(3) + a(5,3).* b(4) + a(5,2).* b(5) + a(5,1).* b(6));% Z^4
c(6,6)=(a(6,6).* b(1) + a(6,5).* b(2) + a(6,4).* b(3) + a(6,3).* b(4) + a(6,2).* b(5) + a(6,1).* b(6));% Z^5)
end
function [c] =SeriesProduct2D(a,b)
c(1,1)=a(1,1).* b(1,1);
c(2,1)=(a(2,1).* b(1,1)+a(1,1).* b(2,1));% Z
c(3,1)=(a(3,1).* b(1,1)+a(2,1).* b(2,1)+a(1,1).* b(3,1));% Z^2
c(4,1)=(a(4,1).* b(1,1)+a(3,1).* b(2,1)+a(2,1).* b(3,1)+a(1,1).* b(4,1));% Z^3
c(5,1)=(a(5,1).* b(1,1)+a(4,1).* b(2,1)+a(3,1).* b(3,1)+a(2,1).* b(4,1)+a(1,1).* b(5,1));% Z^4
c(6,1)=(a(6,1).* b(1,1)+a(5,1).* b(2,1)+a(4,1).* b(3,1)+a(3,1).* b(4,1)+a(2,1).* b(5,1)+a(1,1).* b(6,1));% Z^5
%+W
c(1,2)=(a(1,2).* b(1,1)+a(1,1).* b(1,2));
c(2,2)=(a(2,2).* b(1,1)+a(2,1).* b(1,2)+a(1,2) .*b(2,1)+a(1,1).* b(2,2));% Z
c(3,2)=(a(3,2).* b(1,1)+a(3,1).* b(1,2)+a(2,2).* b(2,1)+a(2,1).* b(2,2)+a(1,2).* b(3,1)+a(1,1).* b(3,2));% Z^2
c(4,2)=(a(4,2).* b(1,1)+a(4,1).* b(1,2)+a(3,2).* b(2,1)+a(3,1).* b(2,2)+a(2,2).* b(3,1)+a(2,1).* b(3,2)+a(1,2).* b(4,1)+a(1,1).* b(4,2));% Z^3
c(5,2)=(a(5,2).* b(1,1)+a(5,1).* b(1,2)+a(4,2).* b(2,1)+a(4,1).* b(2,2)+a(3,2).* b(3,1)+a(3,1).* b(3,2)+a(2,2).* b(4,1)+a(2,1).* b(4,2)+a(1,2).* b(5,1)+a(1,1).* b(5,2));% Z^4
c(6,2)=(a(6,2).* b(1,1)+a(6,1).* b(1,2)+a(5,2).* b(2,1)+a(5,1).* b(2,2)+a(4,2).* b(3,1)+a(4,1).* b(3,2)+a(3,2).* b(4,1)+a(3,1).* b(4,2)+a(2,2).* b(5,1)+a(2,1).* b(5,2)+a(1,2).* b(6,1)+a(1,1).* b(6,2));% Z^5
;%+W^2
c(1,3)=(a(1,3).* b(1,1)+a(1,2).* b(1,2)+a(1,1).* b(1,3));;%
c(2,3)=(a(2,3).* b(1,1)+a(2,2).* b(1,2)+a(2,1).* b(1,3)+a(1,3).* b(2,1)+a(1,2).* b(2,2)+a(1,1).* b(2,3));% Z
c(3,3)=(a(3,3).* b(1,1)+a(3,2).* b(1,2)+a(3,1).* b(1,3)+a(2,3).* b(2,1)+a(2,2).* b(2,2)+a(2,1).* b(2,3)+a(1,3).* b(3,1)+a(1,2).* b(3,2)+a(1,1).* b(3,3));% Z^2
c(4,3)=(a(4,3).* b(1,1)+a(4,2).* b(1,2)+a(4,1).* b(1,3)+a(3,3).* b(2,1)+a(3,2).* b(2,2)+a(3,1).* b(2,3)+a(2,3).* b(3,1)+a(2,2).* b(3,2)+a(2,1).* b(3,3)+a(1,3).* b(4,1)+a(1,2).* b(4,2)+a(1,1).* b(4,3));% Z^3
c(5,3)=(a(5,3).* b(1,1)+a(5,2).* b(1,2)+a(5,1).* b(1,3)+a(4,3).* b(2,1)+a(4,2).* b(2,2)+a(4,1).* b(2,3)+a(3,3).* b(3,1)+a(3,2).* b(3,2)+a(3,1).* b(3,3)+a(2,3).* b(4,1)+a(2,2).* b(4,2)+a(2,1).* b(4,3)+a(1,3).* b(5,1)+a(1,2).* b(5,2)+a(1,1).* b(5,3));% Z^4
c(6,3)=(a(6,3).* b(1,1)+a(6,2).* b(1,2)+a(6,1).* b(1,3)+a(5,3).* b(2,1)+a(5,2).* b(2,2)+a(5,1).* b(2,3)+a(4,3).* b(3,1)+a(4,2).* b(3,2)+a(4,1).* b(3,3)+a(3,3).* b(4,1)+a(3,2).* b(4,2)+a(3,1).* b(4,3)+a(2,3).* b(5,1)+a(2,2).* b(5,2)+a(2,1).* b(5,3)+a(1,3).* b(6,1)+a(1,2).* b(6,2)+a(1,1).* b(6,3));% Z^5
%;%+W^3
c(1,4)=(a(1,4).* b(1,1)+a(1,3).* b(1,2)+a(1,2).* b(1,3)+a(1,1).* b(1,4));;%
c(2,4)=(a(2,4).* b(1,1)+a(2,3).* b(1,2)+a(2,2).* b(1,3)+a(2,1).* b(1,4)+a(1,4).* b(2,1)+a(1,3).* b(2,2)+a(1,2).* b(2,3)+a(1,1).* b(2,4));% Z
c(3,4)=(a(3,4).* b(1,1)+a(3,3).* b(1,2)+a(3,2).* b(1,3)+a(3,1).* b(1,4)+a(2,4).* b(2,1)+a(2,3).* b(2,2)+a(2,2).* b(2,3)+a(2,1).* b(2,4)+a(1,4).* b(3,1)+a(1,3).* b(3,2)+a(1,2).* b(3,3)+a(1,1).* b(3,4));% Z^2
c(4,4)=(a(4,4).* b(1,1)+a(4,3).* b(1,2)+a(4,2).* b(1,3)+a(4,1).* b(1,4)+a(3,4).* b(2,1)+a(3,3).* b(2,2)+a(3,2).* b(2,3)+a(3,1).* b(2,4)+a(2,4).* b(3,1)+a(2,3).* b(3,2)+a(2,2).* b(3,3)+a(2,1).* b(3,4)+a(1,4).* b(4,1)+a(1,3).* b(4,2)+a(1,2).* b(4,3)+a(1,1).* b(4,4));% Z^3
c(5,4)=(a(5,4).* b(1,1)+a(5,3).* b(1,2)+a(5,2).* b(1,3)+a(5,1).* b(1,4)+a(4,4).* b(2,1)+a(4,3).* b(2,2)+a(4,2).* b(2,3)+a(4,1).* b(2,4)+a(3,4).* b(3,1)+a(3,3).* b(3,2)+a(3,2).* b(3,3)+a(3,1).* b(3,4)+a(2,4).* b(4,1)+a(2,3).* b(4,2)+a(2,2).* b(4,3)+a(2,1).* b(4,4)+a(1,4).* b(5,1)+a(1,3).* b(5,2)+a(1,2) .*b(5,3)+a(1,1).* b(5,4));% Z^4
c(6,4)=(a(6,4).* b(1,1)+a(6,3).* b(1,2)+a(6,2).* b(1,3)+a(6,1).* b(1,4)+a(5,4).* b(2,1)+a(5,3).* b(2,2)+a(5,2).* b(2,3)+a(5,1).* b(2,4)+a(4,4).* b(3,1)+a(4,3).* b(3,2)+a(4,2).* b(3,3)+a(4,1).* b(3,4)+a(3,4).* b(4,1)+a(3,3).* b(4,2)+a(3,2).* b(4,3)+a(3,1).* b(4,4)+a(2,4).* b(5,1)+a(2,3).* b(5,2)+a(2,2).* b(5,3)+a(2,1).* b(5,4)+a(1,4).* b(6,1)+a(1,3).* b(6,2)+a(1,2).* b(6,3)+a(1,1).* b(6,4));% Z^5
%;%+W^4
c(1,5)=(a(1,5).* b(1,1)+a(1,4).* b(1,2)+a(1,3).* b(1,3)+a(1,2).* b(1,4)+a(1,1).* b(1,5));
c(2,5)=(a(2,5).* b(1,1)+a(2,4).* b(1,2)+a(2,3).* b(1,3)+a(2,2).* b(1,4)+a(2,1).* b(1,5)+a(1,5).* b(2,1)+a(1,4).* b(2,2)+a(1,3).* b(2,3)+a(1,2).* b(2,4)+a(1,1).* b(2,5));% Z
c(3,5)=(a(3,5).* b(1,1)+a(3,4).* b(1,2)+a(3,3).* b(1,3)+a(3,2).* b(1,4)+a(3,1).* b(1,5)+a(2,5).* b(2,1)+a(2,4).* b(2,2)+a(2,3).* b(2,3)+a(2,2).* b(2,4)+a(2,1).* b(2,5)+a(1,5).* b(3,1)+a(1,4).* b(3,2)+a(1,3).* b(3,3)+a(1,2).* b(3,4)+a(1,1).* b(3,5));% Z^2
c(4,5)=(a(4,5).* b(1,1)+a(4,4).* b(1,2)+a(4,3).* b(1,3)+a(4,2).* b(1,4)+a(4,1).* b(1,5)+a(3,5).* b(2,1)+a(3,4).* b(2,2)+a(3,3).* b(2,3)+a(3,2).* b(2,4)+a(3,1).* b(2,5)+a(2,5).* b(3,1)+a(2,4).* b(3,2)+a(2,3).* b(3,3)+a(2,2).* b(3,4)+a(2,1).* b(3,5)+a(1,5).* b(4,1)+a(1,4).* b(4,2)+a(1,3).* b(4,3)+a(1,2).* b(4,4)+a(1,1).* b(4,5));% Z^3
c(5,5)=(a(5,5).* b(1,1)+a(5,4).* b(1,2)+a(5,3).* b(1,3)+a(5,2).* b(1,4)+a(5,1).* b(1,5)+a(4,5).* b(2,1)+a(4,4).* b(2,2)+a(4,3).* b(2,3)+a(4,2).* b(2,4)+a(4,1).* b(2,5)+a(3,5).* b(3,1)+a(3,4).* b(3,2)+a(3,3).* b(3,3)+a(3,2).* b(3,4)+a(3,1).* b(3,5)+a(2,5).* b(4,1)+a(2,4).* b(4,2)+a(2,3).* b(4,3)+a(2,2).* b(4,4)+a(2,1).* b(4,5)+a(1,5).* b(5,1)+a(1,4).* b(5,2)+a(1,3).* b(5,3)+a(1,2).* b(5,4)+a(1,1).* b(5,5));% Z^4
c(6,5)=(a(6,5).* b(1,1)+a(6,4).* b(1,2)+a(6,3).* b(1,3)+a(6,2).* b(1,4)+a(6,1).* b(1,5)+a(5,5).* b(2,1)+a(5,4).* b(2,2)+a(5,3).* b(2,3)+a(5,2).* b(2,4)+a(5,1).* b(2,5)+a(4,5).* b(3,1)+a(4,4).* b(3,2)+a(4,3).* b(3,3)+a(4,2).* b(3,4)+a(4,1).* b(3,5)+a(3,5).* b(4,1)+a(3,4).* b(4,2)+a(3,3).* b(4,3)+a(3,2).* b(4,4)+a(3,1).* b(4,5)+a(2,5).* b(5,1)+a(2,4).* b(5,2)+a(2,3).* b(5,3)+a(2,2).* b(5,4)+a(2,1).* b(5,5)+a(1,5).* b(6,1)+a(1,4).* b(6,2)+a(1,3).* b(6,3)+a(1,2).* b(6,4)+a(1,1).* b(6,5));% Z^5
%;%W^5
c(1,6)=(a(1,6).* b(1,1)+a(1,5).* b(1,2)+a(1,4).* b(1,3)+a(1,3).* b(1,4)+a(1,2).* b(1,5)+a(1,1).* b(1,6));
c(2,6)=(a(2,6).* b(1,1)+a(2,5).* b(1,2)+a(2,4).* b(1,3)+a(2,3).* b(1,4)+a(2,2).* b(1,5)+a(2,1).* b(1,6)+a(1,6).* b(2,1)+a(1,5).* b(2,2)+a(1,4).* b(2,3)+a(1,3).* b(2,4)+a(1,2).* b(2,5)+a(1,1).* b(2,6));% Z
c(3,6)=(a(3,6).* b(1,1)+a(3,5).* b(1,2)+a(3,4).* b(1,3)+a(3,3).* b(1,4)+a(3,2).* b(1,5)+a(3,1).* b(1,6)+a(2,6).* b(2,1)+a(2,5).* b(2,2)+a(2,4).* b(2,3)+a(2,3).* b(2,4)+a(2,2).* b(2,5)+a(2,1).* b(2,6)+a(1,6).* b(3,1)+a(1,5).* b(3,2)+a(1,4).* b(3,3)+a(1,3).* b(3,4)+a(1,2).* b(3,5)+a(1,1).* b(3,6));% Z^2
c(4,6)=(a(4,6).* b(1,1)+a(4,5).* b(1,2)+a(4,4).* b(1,3)+a(4,3).* b(1,4)+a(4,2).* b(1,5)+a(4,1).* b(1,6)+a(3,6).* b(2,1)+a(3,5).* b(2,2)+a(3,4).* b(2,3)+a(3,3).* b(2,4)+a(3,2).* b(2,5)+a(3,1).* b(2,6)+a(2,6).* b(3,1)+a(2,5).* b(3,2)+a(2,4).* b(3,3)+a(2,3).* b(3,4)+a(2,2).* b(3,5)+a(2,1).* b(3,6)+a(1,6).* b(4,1)+a(1,5).* b(4,2)+a(1,4).* b(4,3)+a(1,3).* b(4,4)+a(1,2).* b(4,5)+a(1,1).* b(4,6));% Z^3
c(5,6)=(a(5,6).* b(1,1)+a(5,5).* b(1,2)+a(5,4).* b(1,3)+a(5,3).* b(1,4)+a(5,2).* b(1,5)+a(5,1).* b(1,6)+a(4,6).* b(2,1)+a(4,5).* b(2,2)+a(4,4).* b(2,3)+a(4,3).* b(2,4)+a(4,2).* b(2,5)+a(4,1).* b(2,6)+a(3,6).* b(3,1)+a(3,5).* b(3,2)+a(3,4).* b(3,3)+a(3,3).* b(3,4)+a(3,2).* b(3,5)+a(3,1).* b(3,6)+a(2,6).* b(4,1)+a(2,5).* b(4,2)+a(2,4).* b(4,3)+a(2,3).* b(4,4)+a(2,2).* b(4,5)+a(2,1).* b(4,6)+a(1,6).* b(5,1)+a(1,5).* b(5,2)+a(1,4).* b(5,3)+a(1,3).* b(5,4)+a(1,2).* b(5,5)+a(1,1).* b(5,6));% Z^4
c(6,6)=(a(6,6).* b(1,1)+a(6,5).* b(1,2)+a(6,4).* b(1,3)+a(6,3).* b(1,4)+a(6,2).* b(1,5)+a(6,1).* b(1,6)+a(5,6).* b(2,1)+a(5,5).* b(2,2)+a(5,4).* b(2,3)+a(5,3).* b(2,4)+a(5,2).* b(2,5)+a(5,1).* b(2,6)+a(4,6).* b(3,1)+a(4,5).* b(3,2)+a(4,4).* b(3,3)+a(4,3).* b(3,4)+a(4,2).* b(3,5)+a(4,1).* b(3,6)+a(3,6).* b(4,1)+a(3,5).* b(4,2)+a(3,4).* b(4,3)+a(3,3).* b(4,4)+a(3,2).* b(4,5)+a(3,1).* b(4,6)+a(2,6).* b(5,1)+a(2,5).* b(5,2)+a(2,4).* b(5,3)+a(2,3).* b(5,4)+a(2,2).* b(5,5)+a(2,1).* b(5,6)+a(1,6).* b(6,1)+a(1,5).* b(6,2)+a(1,4).* b(6,3)+a(1,3).* b(6,4)+a(1,2).* b(6,5)+a(1,1).* b(6,6));% Z^5
end
function [c] = Series2DZ1Derivative(a)
c(1:6,1:6)=0;
for nn=1:5
c(nn,:)=nn*a(nn+1,:);
end
c(6,:)=0;
end
function [b] = Series2DReciprocal02(a)
Mul=1/a(1,1);
a=a*Mul;
b(1,1)=1;
%(a(2,1)+b(2,1))
%(a(3,1)+a(2,1) b(2,1)+b(3,1)) Z^2
%(a(4,1)+a(3,1) b(2,1)+a(2,1) b(3,1)+b(4,1)) Z^3
%(a(5,1)+a(4,1) b(2,1)+a(3,1) b(3,1)+a(2,1) b(4,1)+b(5,1)) Z^4
%+(a(6,1)+a(5,1) b(2,1)+a(4,1) b(3,1)+a(3,1) b(4,1)+a(2,1) b(5,1)+b(6,1)) Z^5
b(2,1)=-a(2,1);
b(3,1)=-(a(3,1)+a(2,1).* b(2,1));
b(4,1)=-(a(4,1)+a(3,1).* b(2,1)+a(2,1).* b(3,1));
b(5,1)=-(a(5,1)+a(4,1).* b(2,1)+a(3,1).* b(3,1)+a(2,1).* b(4,1));
b(6,1)=-(a(6,1)+a(5,1).* b(2,1)+a(4,1).* b(3,1)+a(3,1).* b(4,1)+a(2,1).* b(5,1));
%(a(1,2) + b(1,2))
%+ (a(2,2) + a(2,1) b(1,2) + a(1,2) b(2,1) + b(2,2)) Z
%+ (a(3,2) + a(3,1) b(1,2) + a(2,2) b(2,1) + a(2,1) b(2,2) + a(1,2) b(3,1) + b(3,2)) Z^2
%+ (a(4,2) + a(4,1) b(1,2) + a(3,2) b(2,1) + a(3,1) b(2,2) + a(2,2) b(3,1) + a(2,1) b(3,2) + a(1,2) b(4,1) +
% b(4,2)) Z^3 +
% (a(5,2) + a(5,1) b(1,2) + a(4,2) b(2,1) + a(4,1) b(2,2) + a(3,2) b(3,1) + a(3,1) b(3,2) + a(2,2) b(4,1) + a(2,1) b(4,2) + a(1,2) b(5,1) + b(5,2)) Z^4
% + (a(6,2) + a(6,1) b(1,2) + a(5,2) b(2,1) + a(5,1) b(2,2) + a(4,2) b(3,1) + a(4,1) b(3,2) + a(3,2) b(4,1) + a(3,1) b(4,2) + a(2,2) b(5,1) + a(2,1) b(5,2) + a(1,2) b(6,1) + b(6,2)) Z^5
b(1,2)=-a(1,2);
b(2,2)=-(a(2,2) + a(2,1).* b(1,2) + a(1,2).* b(2,1));
b(3,2)=-(a(3,2) + a(3,1).* b(1,2) + a(2,2).* b(2,1) + a(2,1).* b(2,2) + a(1,2).* b(3,1));
b(4,2)=-(a(4,2) + a(4,1).* b(1,2) + a(3,2).* b(2,1) + a(3,1).* b(2,2) + a(2,2).* b(3,1) + a(2,1).* b(3,2) + a(1,2).* b(4,1));
b(5,2)=-(a(5,2) + a(5,1).* b(1,2) + a(4,2).* b(2,1) + a(4,1).* b(2,2) + a(3,2).* b(3,1) + a(3,1).* b(3,2) + a(2,2).* b(4,1) + a(2,1).* b(4,2) + a(1,2).* b(5,1));
b(6,2)=-(a(6,2) + a(6,1).* b(1,2) + a(5,2).* b(2,1) + a(5,1).* b(2,2) + a(4,2).* b(3,1) + a(4,1).* b(3,2) + a(3,2).* b(4,1) + a(3,1).* b(4,2) + a(2,2).* b(5,1) + a(2,1).* b(5,2) + a(1,2).* b(6,1));
%(a(1,3) + a(1,2) b(1,2) +
% b(1,3) + (a(2,3) + a(2,2) b(1,2) + a(2,1) b(1,3) + a(1,3) b(2,1) + a(1,2) b(2,2) + b(2,3)) Z + (a(3,3) +
% a(3,2) b(1,2) + a(3,1) b(1,3) + a(2,3) b(2,1) + a(2,2) b(2,2) + a(2,1) b(2,3) + a(1,3) b(3,1) +
% a(1,2) b(3,2) + b(3,3)) Z^2 + (a(4,3) + a(4,2) b(1,2) + a(4,1) b(1,3) + a(3,3) b(2,1) +
% a(3,2) b(2,2) + a(3,1) b(2,3) + a(2,3) b(3,1) + a(2,2) b(3,2) + a(2,1) b(3,3) + a(1,3) b(4,1) +
% a(1,2) b(4,2) + b(4,3)) Z^3 + (a(5,3) + a(5,2) b(1,2) + a(5,1) b(1,3) + a(4,3) b(2,1) +
% a(4,2) b(2,2) + a(4,1) b(2,3) + a(3,3) b(3,1) + a(3,2) b(3,2) + a(3,1) b(3,3) + a(2,3) b(4,1) +
% a(2,2) b(4,2) + a(2,1) b(4,3) + a(1,3) b(5,1) + a(1,2) b(5,2) + b(5,3)) Z^4 + (a(6,3) +
% a(6,2) b(1,2) + a(6,1) b(1,3) + a(5,3) b(2,1) + a(5,2) b(2,2) + a(5,1) b(2,3) + a(4,3) b(3,1) +
% a(4,2) b(3,2) + a(4,1) b(3,3) + a(3,3) b(4,1) + a(3,2) b(4,2) + a(3,1) b(4,3) + a(2,3) b(5,1) +
% a(2,2) b(5,2) + a(2,1) b(5,3) + a(1,3) b(6,1) + a(1,2) b(6,2) + b(6,3)) Z^5 +
b(1,3)=-(a(1,3) + a(1,2).* b(1,2));
b(2,3)=-(a(2,3) + a(2,2).* b(1,2) + a(2,1).* b(1,3) + a(1,3).* b(2,1) + a(1,2).* b(2,2) );
b(3,3)=-(a(3,3) +a(3,2).* b(1,2) + a(3,1).* b(1,3) + a(2,3).* b(2,1) + a(2,2).* b(2,2) + a(2,1).* b(2,3) + a(1,3).* b(3,1) + a(1,2).* b(3,2));
b(4,3)=-(a(4,3) + a(4,2).* b(1,2) + a(4,1).* b(1,3) + a(3,3).* b(2,1) + a(3,2).* b(2,2) + a(3,1).* b(2,3) + a(2,3).* b(3,1) + a(2,2).* b(3,2) + a(2,1).* b(3,3) + a(1,3).* b(4,1) + a(1,2).* b(4,2) );
b(5,3)=-(a(5,3) + a(5,2).* b(1,2) + a(5,1).* b(1,3) + a(4,3).* b(2,1) + a(4,2).* b(2,2) + a(4,1).* b(2,3) + a(3,3).* b(3,1) + a(3,2).* b(3,2) + a(3,1).* b(3,3) + a(2,3).* b(4,1) + a(2,2).* b(4,2) + a(2,1).* b(4,3) + a(1,3).* b(5,1) + a(1,2).* b(5,2));
b(6,3)=-(a(6,3) + a(6,2).* b(1,2) + a(6,1).* b(1,3) + a(5,3).* b(2,1) + a(5,2).* b(2,2) + a(5,1).* b(2,3) + a(4,3).* b(3,1) + a(4,2).* b(3,2) + a(4,1).* b(3,3) + a(3,3).* b(4,1) + a(3,2).* b(4,2) + a(3,1).* b(4,3) + a(2,3).* b(5,1) + a(2,2).* b(5,2) + a(2,1).* b(5,3) + a(1,3).* b(6,1) + a(1,2).* b(6,2));
%a(1,4) + a(1,3) b(1,2) +
% a(1,2) b(1,3) + b(1,4) + (a(2,4) + a(2,3) b(1,2) + a(2,2) b(1,3) + a(2,1) b(1,4) + a(1,4) b(2,1) +
% a(1,3) b(2,2) + a(1,2) b(2,3) + b(2,4)) Z + (a(3,4) + a(3,3) b(1,2) + a(3,2) b(1,3) + a(3,1) b(1,4) +
% a(2,4) b(2,1) + a(2,3) b(2,2) + a(2,2) b(2,3) + a(2,1) b(2,4) + a(1,4) b(3,1) + a(1,3) b(3,2) +
% a(1,2) b(3,3) + b(3,4)) Z^2 + (a(4,4) + a(4,3) b(1,2) + a(4,2) b(1,3) + a(4,1) b(1,4) +
% a(3,4) b(2,1) + a(3,3) b(2,2) + a(3,2) b(2,3) + a(3,1) b(2,4) + a(2,4) b(3,1) + a(2,3) b(3,2) +
% a(2,2) b(3,3) + a(2,1) b(3,4) + a(1,4) b(4,1) + a(1,3) b(4,2) + a(1,2) b(4,3) +
% b(4,4)) Z^3 + (a(5,4) + a(5,3) b(1,2) + a(5,2) b(1,3) + a(5,1) b(1,4) + a(4,4) b(2,1) +
% a(4,3) b(2,2) + a(4,2) b(2,3) + a(4,1) b(2,4) + a(3,4) b(3,1) + a(3,3) b(3,2) + a(3,2) b(3,3) +
% a(3,1) b(3,4) + a(2,4) b(4,1) + a(2,3) b(4,2) + a(2,2) b(4,3) + a(2,1) b(4,4) + a(1,4) b(5,1) +
% a(1,3) b(5,2) + a(1,2) b(5,3) + b(5,4)) Z^4 + (a(6,4) + a(6,3) b(1,2) + a(6,2) b(1,3) +
% a(6,1) b(1,4) + a(5,4) b(2,1) + a(5,3) b(2,2) + a(5,2) b(2,3) + a(5,1) b(2,4) + a(4,4) b(3,1) +
% a(4,3) b(3,2) + a(4,2) b(3,3) + a(4,1) b(3,4) + a(3,4) b(4,1) + a(3,3) b(4,2) + a(3,2) b(4,3) +
% a(3,1) b(4,4) + a(2,4) b(5,1) + a(2,3) b(5,2) + a(2,2) b(5,3) + a(2,1) b(5,4) + a(1,4) b(6,1) +
% a(1,3) b(6,2) + a(1,2) b(6,3) + b(6,4)) Z^5
b(1,4)=-(a(1,4) + a(1,3).* b(1,2) + a(1,2).* b(1,3) );
b(2,4)=-(a(2,4) + a(2,3).* b(1,2) + a(2,2).* b(1,3) + a(2,1).* b(1,4) + a(1,4).* b(2,1) + a(1,3).* b(2,2) + a(1,2).* b(2,3));
b(3,4)=-(a(3,4) + a(3,3).* b(1,2) + a(3,2).* b(1,3) + a(3,1).* b(1,4) + a(2,4).* b(2,1) + a(2,3).* b(2,2) + a(2,2).* b(2,3) + a(2,1).* b(2,4) + a(1,4).* b(3,1) + a(1,3).* b(3,2) + a(1,2).* b(3,3));
b(4,4)=-(a(4,4) + a(4,3).* b(1,2) + a(4,2).* b(1,3) + a(4,1).* b(1,4) + a(3,4).* b(2,1) + a(3,3).* b(2,2) + a(3,2).* b(2,3) + a(3,1).* b(2,4) + a(2,4).* b(3,1) + a(2,3).* b(3,2) + a(2,2).* b(3,3) + a(2,1).* b(3,4) + a(1,4).* b(4,1) + a(1,3).* b(4,2) + a(1,2).* b(4,3));
b(5,4)=-(a(5,4) + a(5,3).* b(1,2) + a(5,2).* b(1,3) + a(5,1).* b(1,4) + a(4,4).* b(2,1) + a(4,3).* b(2,2) + a(4,2).* b(2,3) + a(4,1).* b(2,4) + a(3,4).* b(3,1) + a(3,3).* b(3,2) + a(3,2).* b(3,3) + a(3,1).* b(3,4) + a(2,4).* b(4,1) + a(2,3).* b(4,2) + a(2,2).* b(4,3) + a(2,1).* b(4,4) + a(1,4).* b(5,1) + a(1,3).* b(5,2) + a(1,2).* b(5,3));
b(6,4)=-(a(6,4) + a(6,3).* b(1,2) + a(6,2).* b(1,3) + a(6,1).* b(1,4) + a(5,4).* b(2,1) + a(5,3).* b(2,2) + a(5,2).* b(2,3) + a(5,1).* b(2,4) + a(4,4).* b(3,1) + a(4,3).* b(3,2) + a(4,2).* b(3,3) + a(4,1).* b(3,4) + a(3,4).* b(4,1) + a(3,3).* b(4,2) + a(3,2).* b(4,3) + a(3,1).* b(4,4) + a(2,4).* b(5,1) + a(2,3).* b(5,2) + a(2,2).* b(5,3) + a(2,1).* b(5,4) + a(1,4).* b(6,1) + a(1,3).* b(6,2) + a(1,2).* b(6,3));
b(1,5)=- (a(1,5) + a(1,4).* b(1,2) + a(1,3).* b(1,3) + a(1,2).*b(1,4));
b(2,5)=- (a(2,5) + a(2,4).* b(1,2) + a(2,3).* b(1,3) + a(2,2).* b(1,4) + a(2,1).* b(1,5) + a(1,5).* b(2,1) + a(1,4).* b(2,2) + a(1,3).* b(2,3) + a(1,2).* b(2,4) );
b(3,5)=-(a(3,5) + a(3,4).* b(1,2) + a(3,3).* b(1,3) +a(3,2).* b(1,4) + a(3,1).* b(1,5) + a(2,5).* b(2,1) + a(2,4).* b(2,2) + a(2,3).* b(2,3) + a(2,2).* b(2,4) + a(2,1).* b(2,5) + a(1,5).* b(3,1) + a(1,4).* b(3,2) + a(1,3).* b(3,3) + a(1,2).* b(3,4));
b(4,5)=-(a(4,5) + a(4,4).* b(1,2) + a(4,3).* b(1,3) + a(4,2).* b(1,4) + a(4,1).* b(1,5) + a(3,5).* b(2,1) + a(3,4).* b(2,2) + a(3,3).* b(2,3) + a(3,2).* b(2,4) + a(3,1).* b(2,5) + a(2,5).* b(3,1) + a(2,4).* b(3,2) + a(2,3).* b(3,3) + a(2,2).* b(3,4) + a(2,1).* b(3,5) + a(1,5).* b(4,1) + a(1,4).* b(4,2) + a(1,3).* b(4,3) + a(1,2).* b(4,4));
b(5,5)=-(a(5,5) + a(5,4).* b(1,2) + a(5,3).* b(1,3) + a(5,2).* b(1,4) + a(5,1).* b(1,5) + a(4,5).* b(2,1) + a(4,4).* b(2,2) + a(4,3).* b(2,3) + a(4,2).* b(2,4) + a(4,1).* b(2,5) + a(3,5).* b(3,1) + a(3,4).* b(3,2) + a(3,3).* b(3,3) + a(3,2).* b(3,4) + a(3,1).* b(3,5) + a(2,5).* b(4,1) + a(2,4).* b(4,2) + a(2,3).* b(4,3) + a(2,2).* b(4,4) + a(2,1).* b(4,5) + a(1,5).* b(5,1) + a(1,4).* b(5,2) + a(1,3).* b(5,3) + a(1,2).* b(5,4));
b(6,5)=-(a(6,5) + a(6,4).* b(1,2) + a(6,3).* b(1,3) + a(6,2).* b(1,4) + a(6,1).* b(1,5) + a(5,5).* b(2,1) + a(5,4).* b(2,2) + a(5,3).* b(2,3) + a(5,2).* b(2,4) + a(5,1).* b(2,5) + a(4,5).* b(3,1) + a(4,4).* b(3,2) + a(4,3).* b(3,3) + a(4,2).* b(3,4) + a(4,1).* b(3,5) + a(3,5).* b(4,1) + a(3,4).* b(4,2) + a(3,3).* b(4,3) + a(3,2).* b(4,4) + a(3,1).* b(4,5) + a(2,5).* b(5,1) + a(2,4).* b(5,2) + a(2,3).* b(5,3) + a(2,2).* b(5,4) + a(2,1).* b(5,5) + a(1,5).* b(6,1) + a(1,4).* b(6,2) + a(1,3).* b(6,3) + a(1,2).* b(6,4) + b(6,5));
%Z + (a(3,5) + a(3,4) b(1,2) + a(3,3) b(1,3) +
% a(3,2) b(1,4) + a(3,1) b(1,5) + a(2,5) b(2,1) + a(2,4) b(2,2) + a(2,3) b(2,3) + a(2,2) b(2,4) +
% a(2,1) b(2,5) + a(1,5) b(3,1) + a(1,4) b(3,2) + a(1,3) b(3,3) + a(1,2) b(3,4) +
% b(3,5)) Z^2 + (a(4,5) + a(4,4) b(1,2) + a(4,3) b(1,3) + a(4,2) b(1,4) + a(4,1) b(1,5) +
% a(3,5) b(2,1) + a(3,4) b(2,2) + a(3,3) b(2,3) + a(3,2) b(2,4) + a(3,1) b(2,5) + a(2,5) b(3,1) +
% a(2,4) b(3,2) + a(2,3) b(3,3) + a(2,2) b(3,4) + a(2,1) b(3,5) + a(1,5) b(4,1) + a(1,4) b(4,2) +
% a(1,3) b(4,3) + a(1,2) b(4,4) + b(4,5)) Z^3 + (a(5,5) + a(5,4) b(1,2) + a(5,3) b(1,3) +
% a(5,2) b(1,4) + a(5,1) b(1,5) + a(4,5) b(2,1) + a(4,4) b(2,2) + a(4,3) b(2,3) + a(4,2) b(2,4) +
% a(4,1) b(2,5) + a(3,5) b(3,1) + a(3,4) b(3,2) + a(3,3) b(3,3) + a(3,2) b(3,4) + a(3,1) b(3,5) +
% a(2,5) b(4,1) + a(2,4) b(4,2) + a(2,3) b(4,3) + a(2,2) b(4,4) + a(2,1) b(4,5) + a(1,5) b(5,1) +
% a(1,4) b(5,2) + a(1,3) b(5,3) + a(1,2) b(5,4) + b(5,5)) Z^4 + (a(6,5) + a(6,4) b(1,2) +
% a(6,3) b(1,3) + a(6,2) b(1,4) + a(6,1) b(1,5) + a(5,5) b(2,1) + a(5,4) b(2,2) + a(5,3) b(2,3) +
% a(5,2) b(2,4) + a(5,1) b(2,5) + a(4,5) b(3,1) + a(4,4) b(3,2) + a(4,3) b(3,3) + a(4,2) b(3,4) +
% a(4,1) b(3,5) + a(3,5) b(4,1) + a(3,4) b(4,2) + a(3,3) b(4,3) + a(3,2) b(4,4) + a(3,1) b(4,5) +
% a(2,5) b(5,1) + a(2,4) b(5,2) + a(2,3) b(5,3) + a(2,2) b(5,4) + a(2,1) b(5,5) + a(1,5) b(6,1) +
% a(1,4) b(6,2) + a(1,3) b(6,3) + a(1,2) b(6,4) + b(6,5)) Z^5
% (a(1,6) + a(1,5) b(1,2) + a(1,4) b(1,3) + a(1,3) b(1,4) + a(1,2) b(1,5) +
% b(1,6) + (a(2,6) + a(2,5) b(1,2) + a(2,4) b(1,3) + a(2,3) b(1,4) + a(2,2) b(1,5) + a(2,1) b(1,6) +
% a(1,6) b(2,1) + a(1,5) b(2,2) + a(1,4) b(2,3) + a(1,3) b(2,4) + a(1,2) b(2,5) + b(2,6)) Z + (a(3,6) +
% a(3,5) b(1,2) + a(3,4) b(1,3) + a(3,3) b(1,4) + a(3,2) b(1,5) + a(3,1) b(1,6) + a(2,6) b(2,1) +
% a(2,5) b(2,2) + a(2,4) b(2,3) + a(2,3) b(2,4) + a(2,2) b(2,5) + a(2,1) b(2,6) + a(1,6) b(3,1) +
% a(1,5) b(3,2) + a(1,4) b(3,3) + a(1,3) b(3,4) + a(1,2) b(3,5) + b(3,6)) Z^2 + (a(4,6) +
% a(4,5) b(1,2) + a(4,4) b(1,3) + a(4,3) b(1,4) + a(4,2) b(1,5) + a(4,1) b(1,6) + a(3,6) b(2,1) +
% a(3,5) b(2,2) + a(3,4) b(2,3) + a(3,3) b(2,4) + a(3,2) b(2,5) + a(3,1) b(2,6) + a(2,6) b(3,1) +
%a(2,5) b(3,2) + a(2,4) b(3,3) + a(2,3) b(3,4) + a(2,2) b(3,5) + a(2,1) b(3,6) + a(1,6) b(4,1) +
% a(1,5) b(4,2) + a(1,4) b(4,3) + a(1,3) b(4,4) + a(1,2) b(4,5) + b(4,6)) Z^3 + (a(5,6) +
% a(5,5) b(1,2) + a(5,4) b(1,3) + a(5,3) b(1,4) + a(5,2) b(1,5) + a(5,1) b(1,6) + a(4,6) b(2,1) +
% a(4,5) b(2,2) + a(4,4) b(2,3) + a(4,3) b(2,4) + a(4,2) b(2,5) + a(4,1) b(2,6) + a(3,6) b(3,1) +
% a(3,5) b(3,2) + a(3,4) b(3,3) + a(3,3) b(3,4) + a(3,2) b(3,5) + a(3,1) b(3,6) + a(2,6) b(4,1) +
% a(2,5) b(4,2) + a(2,4) b(4,3) + a(2,3) b(4,4) + a(2,2) b(4,5) + a(2,1) b(4,6) + a(1,6) b(5,1) +
% a(1,5) b(5,2) + a(1,4) b(5,3) + a(1,3) b(5,4) + a(1,2) b(5,5) + b(5,6)) Z^4 + (a(6,6) +
% a(6,5) b(1,2) + a(6,4) b(1,3) + a(6,3) b(1,4) + a(6,2) b(1,5) + a(6,1) b(1,6) + a(5,6) b(2,1) +
% a(5,5) b(2,2) + a(5,4) b(2,3) + a(5,3) b(2,4) + a(5,2) b(2,5) + a(5,1) b(2,6) + a(4,6) b(3,1) +
% a(4,5) b(3,2) + a(4,4) b(3,3) + a(4,3) b(3,4) + a(4,2) b(3,5) + a(4,1) b(3,6) + a(3,6) b(4,1) +
% a(3,5) b(4,2) + a(3,4) b(4,3) + a(3,3) b(4,4) + a(3,2) b(4,5) + a(3,1) b(4,6) + a(2,6) b(5,1) +
% a(2,5) b(5,2) + a(2,4) b(5,3) + a(2,3) b(5,4) + a(2,2) b(5,5) + a(2,1) b(5,6) + a(1,6) b(6,1) +
% a(1,5) b(6,2) + a(1,4) b(6,3) + a(1,3) b(6,4) + a(1,2) b(6,5) + b(6,6)) Z^5
b(1,6)=-(a(1,6) + a(1,5).* b(1,2) + a(1,4).* b(1,3) + a(1,3).* b(1,4) + a(1,2).* b(1,5));
b(2,6)=-(a(2,6) + a(2,5).* b(1,2) + a(2,4).* b(1,3) + a(2,3).* b(1,4) + a(2,2).* b(1,5) + a(2,1).* b(1,6) + a(1,6).* b(2,1) + a(1,5).* b(2,2) + a(1,4).* b(2,3) + a(1,3).* b(2,4) + a(1,2).* b(2,5) );
b(3,6)=-(a(3,6) +a(3,5).* b(1,2) + a(3,4).* b(1,3) + a(3,3).* b(1,4) + a(3,2) .*b(1,5) + a(3,1).* b(1,6) + a(2,6).* b(2,1) + a(2,5).* b(2,2) + a(2,4).* b(2,3) + a(2,3).* b(2,4) + a(2,2).* b(2,5) + a(2,1).* b(2,6) + a(1,6).* b(3,1) + a(1,5).* b(3,2) + a(1,4) .*b(3,3) + a(1,3).* b(3,4) + a(1,2).* b(3,5));
b(4,6)=-(a(4,6) + a(4,5).* b(1,2) + a(4,4).* b(1,3) + a(4,3).* b(1,4) + a(4,2).* b(1,5) + a(4,1).* b(1,6) + a(3,6).* b(2,1) + a(3,5).* b(2,2) + a(3,4).* b(2,3) + a(3,3).* b(2,4) + a(3,2) .*b(2,5) + a(3,1).* b(2,6) + a(2,6) .*b(3,1) + a(2,5).* b(3,2) + a(2,4).* b(3,3) + a(2,3).* b(3,4) + a(2,2).* b(3,5) + a(2,1).* b(3,6) + a(1,6).* b(4,1) + a(1,5).* b(4,2) + a(1,4).* b(4,3) + a(1,3).* b(4,4) + a(1,2).* b(4,5));
b(5,6)=-(a(5,6) + a(5,5).* b(1,2) + a(5,4).* b(1,3) + a(5,3).* b(1,4) + a(5,2).* b(1,5) + a(5,1).* b(1,6) + a(4,6).* b(2,1) + a(4,5).* b(2,2) + a(4,4).* b(2,3) + a(4,3).* b(2,4) + a(4,2).* b(2,5) + a(4,1).* b(2,6) + a(3,6).* b(3,1) + a(3,5) .*b(3,2) + a(3,4).*b(3,3) + a(3,3).* b(3,4) + a(3,2).* b(3,5) + a(3,1).* b(3,6) + a(2,6).* b(4,1) + a(2,5).* b(4,2) + a(2,4).* b(4,3) + a(2,3).* b(4,4) + a(2,2).* b(4,5) + a(2,1).* b(4,6) + a(1,6).* b(5,1) + a(1,5).* b(5,2) + a(1,4) .*b(5,3) + a(1,3) .*b(5,4) + a(1,2).* b(5,5));
b(6,6)=-(a(6,6) + a(6,5).* b(1,2) + a(6,4).* b(1,3) + a(6,3).* b(1,4) + a(6,2).* b(1,5) + a(6,1).* b(1,6) + a(5,6).* b(2,1) + a(5,5).* b(2,2) + a(5,4).* b(2,3) + a(5,3).* b(2,4) + a(5,2).* b(2,5) + a(5,1) .*b(2,6) + a(4,6).* b(3,1) + a(4,5).* b(3,2) + a(4,4) .*b(3,3) + a(4,3).* b(3,4) + a(4,2).* b(3,5) + a(4,1).* b(3,6) + a(3,6).* b(4,1) + a(3,5).* b(4,2) + a(3,4).* b(4,3) + a(3,3).* b(4,4)+ a(3,2).* b(4,5) + a(3,1).* b(4,6) + a(2,6).* b(5,1) + a(2,5).* b(5,2) + a(2,4).* b(5,3) + a(2,3).* b(5,4) + a(2,2).* b(5,5) + a(2,1).* b(5,6) + a(1,6).* b(6,1) + a(1,5) .*b(6,2) + a(1,4).* b(6,3) + a(1,3).* b(6,4) + a(1,2).* b(6,5));
b=b*Mul;
end
function [c] = MultiplySeries2DWithZ1(a)
c(1:6,1:6)=0;
for nn=1:5
c(nn+1,:)=a(nn,:);
end
c(1,:)=0;
end
function [b] = EvaluateSeriesForZ2(c,Z,Nn)
%UNTITLED9 Summary of this function goes here
% Detailed explanation goes here
b(1:5,1:Nn)=0;
b(1,1:Nn)=c(1,1)+c(1,2).*Z(1:Nn)+c(1,3).*Z(1:Nn).^2+c(1,4).*Z(1:Nn).^3+c(1,5).*Z(1:Nn).^4+c(1,6).*Z(1:Nn).^5;
b(2,1:Nn)=c(2,1)+c(2,2).*Z(1:Nn)+c(2,3).*Z(1:Nn).^2+c(2,4).*Z(1:Nn).^3+c(2,5).*Z(1:Nn).^4+c(2,6).*Z(1:Nn).^5;
b(3,1:Nn)=c(3,1)+c(3,2).*Z(1:Nn)+c(3,3).*Z(1:Nn).^2+c(3,4).*Z(1:Nn).^3+c(3,5).*Z(1:Nn).^4+c(3,6).*Z(1:Nn).^5;
b(4,1:Nn)=c(4,1)+c(4,2).*Z(1:Nn)+c(4,3).*Z(1:Nn).^2+c(4,4).*Z(1:Nn).^3+c(4,5).*Z(1:Nn).^4+c(4,6).*Z(1:Nn).^5;
b(5,1:Nn)=c(5,1)+c(5,2).*Z(1:Nn)+c(5,3).*Z(1:Nn).^2+c(5,4).*Z(1:Nn).^3+c(5,5).*Z(1:Nn).^4+c(5,6).*Z(1:Nn).^5;
b(6,1:Nn)=c(6,1)+c(6,2).*Z(1:Nn)+c(6,3).*Z(1:Nn).^2+c(6,4).*Z(1:Nn).^3+c(6,5).*Z(1:Nn).^4+c(6,6).*Z(1:Nn).^5;
end
function [Z1Prob] = CalculateProbabilitySeriesInv(X1,X2,a)
Z1=(X1-a(1))/a(2)-(a(3).* (X1-a(1)).^2)/a(2)^3+(((2.* a(3)^2)/a(2)^2-a(4)/a(2)).* (X1-a(1)).^3)/a(2)^3+(((3.* a(3).* a(4))/a(2)^2-(a(3).* ((5.* a(3)^2)/a(2)^2-(2.* a(4))/a(2)))/a(2)-a(5)/a(2)).* (X1-a(1)).^4)/a(2)^4+((-((a(4).* ((9.* a(3)^2)/a(2)^2-(3.* a(4))/a(2)))/a(2))+(2.* a(3)^2 .* ((2.* a(3)^2)/a(2)^2-a(4)/a(2)))/a(2)^2+(4.* a(3).* a(5))/a(2)^2-(2.* a(3).* ((3.* a(3).* a(4))/a(2)^2-(a(3).* ((5.* a(3)^2)/a(2)^2-(2.* a(4))/a(2)))/a(2)-a(5)/a(2)))/a(2)-a(6)/a(2)).* (X1-a(1)).^5)/a(2)^5;
Z2=(X2-a(1))/a(2)-(a(3).* (X2-a(1)).^2)/a(2)^3+(((2.* a(3)^2)/a(2)^2-a(4)/a(2)).* (X2-a(1)).^3)/a(2)^3+(((3.* a(3).* a(4))/a(2)^2-(a(3).* ((5.* a(3)^2)/a(2)^2-(2.* a(4))/a(2)))/a(2)-a(5)/a(2)).* (X2-a(1)).^4)/a(2)^4+((-((a(4).* ((9.* a(3)^2)/a(2)^2-(3.* a(4))/a(2)))/a(2))+(2.* a(3)^2 .*((2.* a(3)^2)/a(2)^2-a(4)/a(2)))/a(2)^2+(4.* a(3).* a(5))/a(2)^2-(2.* a(3).* ((3.* a(3).* a(4))/a(2)^2-(a(3).* ((5.* a(3)^2)/a(2)^2-(2.* a(4))/a(2)))/a(2)-a(5)/a(2)))/a(2)-a(6)/a(2)).* (X2-a(1)).^5)/a(2)^5;
Z1Prob=normcdf(Z2)-normcdf(Z1);
Z1Prob(isnan(Z1Prob))=0;
Z1Prob(Z1Prob<0)=0;
end
function [XDensity,IndexOut,IndexMax] = MakeDensityFromSimulation_Infiniti_NEW(X,Paths,NoOfBins,MaxCutOff )
%Processes monte carlo paths to return a series Xdensity as a function of IndexOut. IndexMax is the maximum value of index.
%
Xmin=0;
Xmax=0;
for p=1:Paths
if(X(p)>MaxCutOff)
X(p)=MaxCutOff;
end
%if(X(p)<0)
%X(p)=0;
%end
if(Xmin>real(X(p)))
Xmin=real(X(p));
end
if(Xmax<real(X(p)))
Xmax=real(X(p));
end
end
%IndexMax=NoOfBins+1;
BinSize=(Xmax-Xmin)/NoOfBins;
%IndexMax=floor((Xmax-Xmin)/BinSize+.5)+1
IndexMax=floor((Xmax-Xmin)/BinSize+.5)+1
XDensity(1:IndexMax)=0.0;
for p=1:Paths
index=real(floor(real(X(p)-Xmin)/BinSize+.5)+1);
if(real(index)<1)
index=1;
end
if(real(index)>IndexMax)
index=IndexMax;
end
XDensity(index)=XDensity(index)+1.0/Paths/BinSize;
end
IndexOut(1:IndexMax)=Xmin+(0:(IndexMax-1))*BinSize;
end
function [] = FPESeriesCoeffsFromGaussiansWilmottNew02A_Lite_2DFPE()
%Copyright Ahsan Amin. Infiniti derivatives Technologies.
%Please fell free to connect on linkedin: linkedin.com/in/ahsan-amin-0a53334
%or skype ahsan.amin2999
%I have not directly simulated the SDE but simulated the transformed
%Besse1l process version of the SDE and then changed coordinates to retreive
%the SDE in original coo
%rdinates.
%The present program will analytically evolve only the Bessel Process version of the
%SDE in transformed coordinates.
dt=.125/2/2/2; % Simulation time interval.%Fodiffusions close to zero
%decrease dt for accuracy.
Tt=64*2;%16*2*4;%*4*4*1;%*4;%128*2*2*2; % Number of simulation levels. Terminal time= Tt*dt; //.125/32*32*16=2 year;
T=Tt*dt;
%
% %Below I have done calculations for smaller step size at start.
%
% %ds(1:64)=dt/16;
% %ds(65:128)=dt/4;
% if(Tt<=4)
% Ts=(Tt*16);%+(64-16);
% ds(1:Ts)=dt/16;
% end
% if(Tt>4)&&(Tt<=20)
% Ts=(64)+((Tt-4)*4);
% ds(1:64)=dt/16;
% ds(65:Ts)=dt/4;
% end
% if(Tt>20)
% Ts=(64)+((20-4)*4)+(Tt-20);
% ds(1:64)=dt/16;
% ds(65:128)=dt/4;
% ds(129:Ts)=dt;
% end
Ts=Tt;
ds(1:Tt)=dt;
T
sum(ds(1:Ts))
Ts
%Ts=4;
str=input('Check if time is right');
OrderA=4; %
OrderM=4; %
if(T>=1)
dtM=1/32;%.0625/1;
TtM=T/dtM;
else
dtM=T/32;%.0625/1;
TtM=T/dtM;
end
%dtM=dt;
%TtM=Tt;
dNn=.2/2; % Normal density subdivisions width. would change with number of subdivisions
Nn=90; % No of normal density subdivisions
NnMid=4.0;
v00=.1; % starting value of SDE
beta1=0.0;
beta2=1.0; % Second drift term power.
gamma=.950;%50; % volatility power.
kappa=1.0;%.950; %mean reversion parameter.
theta=.1;%mean reversion target
sigma0=1.100;%Volatility value
NoOfCumulants=6;
SeriesOrder=NoOfCumulants-1;
%you can specify any general mu1 and mu2 and beta1 and beta2.
mu1=1*theta*kappa; %first drift coefficient.
mu2=-1*kappa; % Second drift coefficient.
%mu1=0;
%mu2=-1*kappa;
alpha=1;% x^alpha is being expanded. This is currently for monte carlo only.
alpha1=1-gamma;%This is for expansion of integrals for calculation of drift
%and volatility coefficients
%yy(1:Nn)=x0;
w0=v00^(1-gamma)/(1-gamma);
%y0=x0;
x0=1;
gammaX=.75;
gammaV=.5;
sigmaX=1.00;
thetaX=1;
kappaX=0;
mu1X=thetaX*kappaX;
mu2X=-1*kappaX;
beta1X=0.0;
beta2X=1.0;
q0=x0^(1-gammaX)/(1-gammaX);
alpha1X=1-gammaX;
Z(1:Nn)=(((1:Nn)-6.5/1)*dNn-NnMid);
Z
str=input('Look at Z');
ZProb(1)=normcdf(.5*Z(1)+.5*Z(2),0,1)-normcdf(.5*Z(1)+.5*Z(2)-dNn,0,1);
ZProb(Nn)=normcdf(.5*Z(Nn)+.5*Z(Nn-1)+dNn,0,1)-normcdf(.5*Z(Nn)+.5*Z(Nn-1),0,1);
ZProb(2:Nn-1)=normcdf(.5*Z(2:Nn-1)+.5*Z(3:Nn),0,1)-normcdf(.5*Z(2:Nn-1)+.5*Z(1:Nn-2),0,1);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
sigma11(1:OrderA+1)=0;
mu11(1:OrderA+1)=0;
mu22(1:OrderA+1)=0;
sigma22(1:OrderA+1)=0;
% index 1 correponds to zero level since matlab indexing starts at one.
sigma11(1)=1;
mu11(1)=1;
mu22(1)=1;
sigma22(1)=1;
for k=1:(OrderA+1)
if sigma0~=0
sigma11(k)=sigma0^(k-1);
end
if mu1 ~= 0
mu11(k)=mu1^(k-1);
end
if mu2 ~= 0
mu22(k)=mu2^(k-1);
end
if sigma0~=0
sigma22(k)=sigma0^(2*(k-1));
end
end
sigma11X(1:OrderA+1)=0;
mu11X(1:OrderA+1)=0;
mu22X(1:OrderA+1)=0;
sigma22X(1:OrderA+1)=0;
sigma11X(1)=1;
mu11X(1)=1;
mu22X(1)=1;
sigma22X(1)=1;
for k=1:(OrderA+1)
if sigmaX~=0
sigma11X(k)=sigmaX^(k-1);
end
if mu1X ~= 0
mu11X(k)=mu1X^(k-1);
end
if mu2X ~= 0
mu22X(k)=mu2X^(k-1);
end
if sigmaX~=0
sigma22X(k)=sigmaX^(2*(k-1));
end
end
%Ft(1:TtM+1,1:(OrderA+1),1:(OrderA+1),1:(OrderA+1),1:(OrderA+1))=0; %General time powers on hermite polynomials
Fp(1:(OrderA+1),1:(OrderA+1),1:(OrderA+1),1:(OrderA+1))=0;%General x powers on coefficients of hermite polynomials.
Fp1(1:(OrderA+1),1:(OrderA+1),1:(OrderA+1),1:(OrderA+1))=0;%General x powers for bessel transformed coordinates.
Fp1X(1:(OrderA+1),1:(OrderA+1),1:(OrderA+1),1:(OrderA+1))=0;
%YCoeff0 and YCoeff are coefficents for original coordinates monte carlo.
%YqCoeff0 and YqCoeff are bessel/lamperti version monte carlo.
YCoeff0(1:(OrderA+1),1:(OrderA+1),1:(OrderA+1),1:(OrderA+1))=0;
YqCoeff0(1:(OrderA+1),1:(OrderA+1),1:(OrderA+1),1:(OrderA+1))=0;
YqCoeff0X(1:(OrderA+1),1:(OrderA+1),1:(OrderA+1),1:(OrderA+1))=0;
%Pre-compute the time and power exponent values in small multi-dimensional arrays
YCoeff = ItoTaylorCoeffsNew(alpha,beta1,beta2,gamma); %expand y^alpha where alpha=1;
YqCoeff = ItoTaylorCoeffsNew(alpha1,beta1,beta2,gamma);%expand y^alpha1 where alpha1=(1-gamma)
YqCoeff=YqCoeff/(1-gamma); %Transformed coordinates coefficients have to be
%further divided by (1-gamma)
YqCoeffX = ItoTaylorCoeffsNew(alpha1X,beta1X,beta2X,gammaX);%expand y^alpha1 where alpha1=(1-gamma)
YqCoeffX=YqCoeffX/(1-gammaX);
for k = 0 : (OrderA)
for m = 0:k
l4 = k - m + 1;
for n = 0 : m
l3 = m - n + 1;
for j = 0:n
l2 = n - j + 1;
l1 = j + 1;
%Ft(l1,l2,l3,l4) = dtM^((l1-1) + (l2-1) + (l3-1) + .5* (l4-1));
Fp(l1,l2,l3,l4) = (alpha + (l1-1) * beta1 + (l2-1) * beta2 + (l3-1) * 2* gamma + (l4-1) * gamma ...
- (l1-1) - (l2-1) - 2* (l3-1) - (l4-1));
Fp1(l1,l2,l3,l4) = (alpha1 + (l1-1) * beta1 + (l2-1) * beta2 + (l3-1) * 2* gamma + (l4-1) * gamma ...
- (l1-1) - (l2-1) - 2* (l3-1) - (l4-1));
Fp1X(l1,l2,l3,l4) = (alpha1X + (l1-1) * beta1X + (l2-1) * beta2X + (l3-1) * 2* gammaX + (l4-1) * gammaX ...
- (l1-1) - (l2-1) - 2* (l3-1) - (l4-1));
YCoeff0(l1,l2,l3,l4) =YCoeff(l1,l2,l3,l4).*mu11(l1).*mu22(l2).*sigma22(l3).*sigma11(l4);
YqCoeff0(l1,l2,l3,l4) =YqCoeff(l1,l2,l3,l4).*mu11(l1).*mu22(l2).*sigma22(l3).*sigma11(l4);
YqCoeff0X(l1,l2,l3,l4) =YqCoeffX(l1,l2,l3,l4).*mu11X(l1).*mu22X(l2).*sigma22X(l3).*sigma11X(l4);
end
end
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ExpnOrder=5;
SeriesOrder=5;
c(1:SeriesOrder)=0;
c0=w0;
wnStart=1;
yydt(wnStart:Nn)=0.0;
tic
for tt=1:Ts
tt
if(tt<=1)
[wMu0dt,dwMu0dtdw] = BesselDriftAndDerivativesH0(w0,YqCoeff0,Fp1,gamma,ds(tt),6);
cprev(1:5)=0;
c0prev=w0;
c0=wMu0dt+w0;
c(1)=sigma0*sqrt(ds(tt));
c(2:7)=0.0;
w0=c0;
elseif(tt<=3)
[wMu0dt,dwMu0dtdw,Ratio] = BesselDriftAndDerivatives04A(w0,mu1,mu2,beta1,beta2,sigma0,gamma,ds(tt),8);
[b0,b] = CalculateDriftbCoeffs08A(wMu0dt,dwMu0dtdw,c,SeriesOrder);
c0prev=c0;
cprev=c;
c0=c0+b0;
c(1)=b(1)+sqrt(c(1)^2+sigma0^2*ds(tt));
c(2:SeriesOrder)=b(2:SeriesOrder);
w0=c0;
else
[wMu0dt,dwMu0dtdw] = BesselDriftAndDerivativesH0(w0,YqCoeff0,Fp1,gamma,ds(tt),SeriesOrder+1);
[b0,b] = CalculateDriftbCoeffs08A(wMu0dt,dwMu0dtdw,c,SeriesOrder);
[wVol0dt,dwVol0dtdw] = BesselVolAndDerivativesH1(w0,YqCoeff0,Fp1,gamma,ds(tt),SeriesOrder+1);
[wVol2dt,dwVol2dtdw] = BesselVolAndDerivativesH2(w0,YqCoeff0,Fp1,gamma,ds(tt),SeriesOrder+1);
[g10,g1] = CalculateDriftbCoeffs08A(wVol0dt,dwVol0dtdw,c,SeriesOrder);
g10=g10+sigma0*sqrt(ds(tt));
[g20,g2] = CalculateDriftbCoeffs08A(wVol2dt,dwVol2dtdw,c,SeriesOrder);
cprev=c;
c0prev=c0;
a0=c0+b0;
a(1:SeriesOrder)=c(1:SeriesOrder)+b(1:SeriesOrder);
%
[a0,a] = AdvanceSeriesCumulantSolution02NewO6Params5A_Lite_0(a0,a,g10,g1,g20,g2,sigma0,gamma,ds(tt),SeriesOrder,NoOfCumulants);
% [CC] = CalculateCumulants(a0,a,SeriesOrder,8);
% if(SeriesOrder==5)
% a(6)=0;
% a(7)=0;
% end
% if(SeriesOrder==6)
% % %a(6)=0;
% a(7)=0;
% end
% if(CC(7)>.0000005)
% SeriesOrder=6;
% NoOfCumulants=7;
% end
% if(CC(8)>.0000005)
% SeriesOrder=7;
% NoOfCumulants=8;
% end
%
c0=a0;
c(1:SeriesOrder)=a(1:SeriesOrder);
w0=c0;
end
if(tt==1)
cmid0=c0;
cmid=c;
else
cmid0=(c0+c0prev)*.5;
cmid=(c+cprev)*.5;
end
gammaV2=2*gammaV;
[vw0,dvw0] = CalculatevgammaV2AndDerivatives(c0,gamma,gammaV2,SeriesOrder);
%[V2gamma0,V2gamma1] = CalculateDriftbCoeffs08A(vw0,dvw0,cmid,SeriesOrder);
[V2gamma0,V2gamma1] = CalculateDriftbCoeffs08A(vw0,dvw0,c,SeriesOrder);
V2gamma(1)=V2gamma0;
V2gamma(2:6)=V2gamma1(1:5);
%V2gamma(2)=V2gamma1(1)/sqrt(1+sqrt(1/2)*sigma0*tt*dt);
%V2gamma(3)=V2gamma1(2).*sqrt(1+sqrt(1/6)*sigma0*tt*dt);
%V2gamma(4)=V2gamma1(3).*sqrt(1+sqrt(1/24)*sigma0*tt*dt);
%V2gamma(5)=V2gamma1(4)./sqrt(1+sqrt(1/120)*sigma0*tt*dt);%
%V2gamma(2)=V2gamma1(1)/sqrt(1+sqrt(1/2)*v00.^(gamma-1).*gamma*sigma0*tt*dt);
%V2gamma(3)=V2gamma1(2).*sqrt(1+sqrt(1/6)*v00.^(2*gamma-2).*gamma^2*sigma0^2*tt*dt);
%V2gamma(4)=V2gamma1(3).*sqrt(1+sqrt(1/24)*v00.^(3*gamma-3).*gamma^3*sigma0^3*tt*dt);
%V2gamma(2)=V2gamma1(1)/sqrt(1+sqrt(1/2).*gamma*sigma0*tt*dt);
%V2gamma(3)=V2gamma1(2).*sqrt(1+sqrt(1/6).*gamma^2*sigma0^2*tt*dt);
%V2gamma(4)=V2gamma1(3).*sqrt(1+sqrt(1/24).*gamma^3*sigma0^3*tt*dt);
V2gamma(2)=V2gamma1(1)/sqrt(1+sqrt(1/2).*sigma0^2*tt*dt);
V2gamma(3)=V2gamma1(2).*sqrt(1+sqrt(1/6).*sigma0^2*tt*dt);
V2gamma(4)=V2gamma1(3).*sqrt(1+sqrt(1/24).*sigma0^2*tt*dt);
% V2gamma(3:6)=V2gamma1(2:5).*sqrt(1+sqrt(2)*tt*dt);
if(tt==1)
cq(1:6,1:6)=0;
cq(1,1)=x0^(1-gammaX)/(1-gammaX);
end
cprev=c;
q0=cq(1,1);
DoubleExpnOrder=ExpnOrder*2;
[qMu0dt,dqMu0dtdq,qMu1dt,dqMu1dtdq] = BesselDriftAndDerivatives08A0(q0,mu1X,mu2X,beta1X,beta2X,gammaX,DoubleExpnOrder);
[q2Mu0dt,dq2Mu0dtdq,q2Mu1dt,dq2Mu1dtdq] = BesselDriftAndDerivatives08Aq(q0,sigmaX,gammaX,DoubleExpnOrder)
[Muq0] = CalculateDriftbCoeffs08A2Dim02(qMu0dt,dqMu0dtdq,cq,SeriesOrder);
[Muq2] = CalculateDriftbCoeffs08A2Dim02(q2Mu0dt,dq2Mu0dtdq,cq,SeriesOrder);
[DMuq0] = CalculateDriftbCoeffs08A2Dim02(qMu1dt,dqMu1dtdq,cq,SeriesOrder);
[DMuq2] = CalculateDriftbCoeffs08A2Dim02(q2Mu1dt,dq2Mu1dtdq,cq,SeriesOrder);
[Muq2] =SeriesProduct2D1D(Muq2,V2gamma);
[DMuq2] =SeriesProduct2D1D(DMuq2,V2gamma);
Muq=Muq0+Muq2;
DMuq=DMuq0+DMuq2;
if(tt==1)
cq=cq+Muq*dt+SeriesProduct2D(Muq,DMuq)*dt^2/2;
cq(2,1)=cq(2,1)+sigmaX*v00^gammaV*sqrt(dt);
elseif(tt<=4)
% cq
[D1cq] = Series2DZ1Derivative(cq);
% D1cq
[D1cqInv] = Series2DReciprocal02(D1cq);
% D1cqInv
[D1cqInvZ] = MultiplySeries2DWithZ1(D1cqInv);
% D1cqInvZ
fq=Muq+.5*sigmaX^2*SeriesProduct2D1D(D1cqInvZ,V2gamma);
% fq*dt
Dfq=DMuq;
cq=cq+fq*dt+SeriesProduct2D(fq,Dfq)*dt^2/2;
SeriesProduct2D1D(D1cqInvZ,V2gamma)
% str=input('Look at numbers-1111');
% D1cqInvZ
% str=input('Look at numbers-2222');
else
[D1cq] = Series2DZ1Derivative(cq);
[D1cqInv] = Series2DReciprocal02(D1cq);
[D1cqInvZ] = MultiplySeries2DWithZ1(D1cqInv);
[D2cq] = Series2DZ1Derivative(D1cq);
[D1cqInvSqr]=SeriesProduct2D(D1cqInv,D1cqInv);
[D1cqInvCub]=SeriesProduct2D(D1cqInvSqr,D1cqInv);
[D2cqD1cqInvSqr]=SeriesProduct2D(D2cq,D1cqInvSqr);
[D2cqD1cqInvCub]=SeriesProduct2D(D2cq,D1cqInvCub);
D2cqT2=D1cqInvSqr-MultiplySeries2DWithZ1(D2cqD1cqInvCub);
Dfq=DMuq+.5*sigmaX^2*SeriesProduct2D1D(D2cqT2,V2gamma);
D2cqT1=D1cqInvZ+D2cqD1cqInvSqr;
fq=Muq+.5*sigmaX^2*SeriesProduct2D1D(D2cqT1,V2gamma);
Incr0=fq*dt;%+SeriesProduct2D(fq,Dfq)*dt^2/2;
Incr1=SeriesProduct2D(Incr0,D1cqInv);
[Incra] = IntegratedCoeffsCalculation(Incr0);
[Incr2] = IntegratedCoeffsCalculation(Incr1);
[Incrb] = IntegratedCoeffsCalculation(D1cqInv);
[IncrbInv] = Series2DReciprocal02(Incrb);
%cq=cq+SeriesProduct2D(Incr0,IncrbInv);
%cq=cq+SeriesProduct2D(Incr2,D1cq);
%cq=cq+Incr2;
%cq=cq+Incra;
%Incr2(1,:)=Incr(1,:);
%Incr2(2,:)=Incr(2,:)/2;
%Incr2(3,:)=Incr(3,:)/3;
%Incr2(4,:)=Incr(4,:)/4;
%Incr2(5,:)=Incr(5,:)/5;
%Incr2(6,:)=Incr(6,:)/6;
cq=cq+fq*dt+SeriesProduct2D(fq,Dfq)*dt^2/2;
% cq=cq+Incr2;
end
%cq
if(tt>1)
%D1cqInvZ
end
%str=input('Look at numbers');
% [qVol0dt,dqVol0dtdq] = BesselVolAndDerivativesH1(q0,YqCoeff0X,Fp1X,gammaX,ds(tt),SeriesOrder+1);
% [qVol2dt,dqVol2dtdw] = BesselVolAndDerivativesH2(q0,YqCoeff0X,Fp1X,gammaX,ds(tt),SeriesOrder+1);
end
Z1=Z;
if(tt*dt>1)
cq(:,5)=cq(:,5)/4;
cq(5,:)=cq(5,:)/4;
end
[b] = EvaluateSeriesForZ2(cq,Z1,Nn);
% Mm=301;
% MmMid=151;
% Q(MmMid+1:Mm)=cq(1,1)+cq(2,1).*.1.*(1:MmMid-1);
% Q(MmMid)=cq(1,1);
% %Q(1:70)=cq(1,1)-cq(2,1).*.25.*(70:-1:1);
% for mm=1:MmMid-1
%
% Q(MmMid-mm)=cq(1,1)-cq(2,1).*.1.*mm;
% end
%
%
% Qa=Q-cq(2,1).*.1/2;
% Qb=Q+cq(2,1).*.1/2;
Mm=601;
MmMid=301;
dMm=.05;
Q(MmMid+1:Mm)=cq(1,1)+cq(2,1).*dMm.*(1:MmMid-1);
Q(MmMid)=cq(1,1);
%Q(1:70)=cq(1,1)-cq(2,1).*.25.*(70:-1:1);
for mm=1:MmMid-1
Q(MmMid-mm)=cq(1,1)-cq(2,1).*dMm.*mm;
end
Qa=Q-cq(2,1).*dMm/2;
Qb=Q+cq(2,1).*dMm/2;
Z1Prob(1:Mm)=0;
for nn=1:Nn
bq(1:6)=b(1:6,nn);
[Z0Prob] = CalculateProbabilitySeriesInv(Qa,Qb,bq);
% Z0Prob
%str=input('Look at numbers-tttt')
Z1Prob(1:Mm)=Z1Prob(1:Mm)+Z0Prob(1:Mm).*ZProb(nn);
end
pQ=Z1Prob/(cq(2,1).*dMm);
xx(1:Mm)=((1-gammaX).*Q(1:Mm)).^(1/(1-gammaX));
pxx(1:Mm)=pQ(1:Mm).*xx(1:Mm).^(-gammaX);
Mean=sum(xx(1:Mm).*Z1Prob(1:Mm));
Mean
% %gH00=gx00+gx20+3*gx40;
% gH0(:)=cq(1,:)+cq(3,:)+3*cq(5,:);%Coeffs of zeroth v hermite
%
% gH1(:)=cq(2,:)+3*cq(4,:)+15*cq(6,:);%Coeffs of 1st v hermite
%
% gH2(:)=cq(3,:)+6*cq(5,:);%Coeffs of 2nd v hermite
%
% gH3(:)=cq(4,:)+10*cq(6,:);%Coeffs of third v hermite
% gH4(:)=cq(5,:);
% gH5(:)=cq(6,:); %Coeffs of fourth v hermite
%
%
% cH00=gH0(1);
% cH0(1:5)=gH0(2:6);
% cH10=gH1(1);
% cH1(1:5)=gH1(2:6);
% cH20=gH2(1);
% cH2(1:5)=gH2(2:6);
% cH30=gH3(1);
% cH3(1:5)=gH3(2:6);
% cH40=gH4(1);
% cH4(1:5)=gH4(2:6);
% cH50=gH5(1);
% cH5(1:5)=gH5(2:6);
%
% [cHH00,cHH0] =ConvertZCoeffsToHCoeffs(cH00,cH0,SeriesOrder);
% [cHH10,cHH1] =ConvertZCoeffsToHCoeffs(cH10,cH1,SeriesOrder);
% [cHH20,cHH2] =ConvertZCoeffsToHCoeffs(cH20,cH2,SeriesOrder);
% [cHH30,cHH3] =ConvertZCoeffsToHCoeffs(cH30,cH3,SeriesOrder);
% [cHH40,cHH4] =ConvertZCoeffsToHCoeffs(cH40,cH4,SeriesOrder);
% [cHH50,cHH5] =ConvertZCoeffsToHCoeffs(cH50,cH5,SeriesOrder);
%
% cq0=sign(cHH00+cHH0(1)+sqrt(2)*cHH0(2)+sqrt(6)*cHH0(3)+sqrt(24)*cHH0(4)+sqrt(120)*cHH0(5)).* ...
% sqrt(abs(sign(cHH00).*cHH00.^2+sign(cHH0(1)).*cHH0(1).^2+sign(cHH0(2)).*cHH0(2).^2*2+ ...
% sign(cHH0(3)).*cHH0(3).^2*6+sign(cHH0(4)).*cHH0(4).^2*24+sign(cHH0(5)).*cHH0(5).^2*120));
%
%
% cq(1)=sign(cHH10+cHH1(1)+sqrt(2)*cHH1(2)+sqrt(6)*cHH1(3)+sqrt(24)*cHH1(4)+sqrt(120)*cHH1(5)).* ...
% sqrt(abs(sign(cHH10).*cHH10.^2+sign(cHH1(1)).*cHH1(1).^2+sign(cHH1(2)).*cHH1(2).^2*2+ ...
% sign(cHH1(3)).*cHH1(3).^2*6+sign(cHH1(4)).*cHH1(4).^2*24+sign(cHH1(5)).*cHH1(5).^2*120));
% %
% cq(2)=sign(cHH20+cHH2(1)+sqrt(2)*cHH2(2)+sqrt(6)*cHH2(3)+sqrt(24)*cHH2(4)+sqrt(120)*cHH2(5)).* ...
% sqrt(abs(sign(cHH20).*cHH20.^2+sign(cHH2(1)).*cHH2(1).^2+sign(cHH2(2)).*cHH2(2).^2*2+ ...
% sign(cHH2(3)).*cHH2(3).^2*6+sign(cHH2(4)).*cHH2(4).^2*24+sign(cHH2(5)).*cHH2(5).^2*120));
%
% cq(3)=sign(cHH30+cHH3(1)+sqrt(2)*cHH3(2)+sqrt(6)*cHH3(3)+sqrt(24)*cHH3(4)+sqrt(120)*cHH3(5)).* ...
% sqrt(abs(sign(cHH30).*cHH30.^2+sign(cHH3(1)).*cHH3(1).^2+sign(cHH3(2)).*cHH3(2).^2*2+ ...
% sign(cHH3(3)).*cHH3(3).^2*6+sign(cHH3(4)).*cHH3(4).^2*24+sign(cHH3(5)).*cHH3(5).^2*120));
%
% cq(4)=sign(cHH40+cHH4(1)+sqrt(2)*cHH4(2)+sqrt(6)*cHH4(3)+sqrt(24)*cHH4(4)+sqrt(120)*cHH4(5)).* ...
% sqrt(abs(sign(cHH40).*cHH40.^2+sign(cHH4(1)).*cHH4(1).^2+sign(cHH4(2)).*cHH4(2).^2*2+ ...
% sign(cHH4(3)).*cHH4(3).^2*6+sign(cHH4(4)).*cHH4(4).^2*24+sign(cHH4(5)).*cHH4(5).^2*120));
%
% cq(5)=sign(cHH50+cHH5(1)+sqrt(2)*cHH5(2)+sqrt(6)*cHH5(3)+sqrt(24)*cHH5(4)+sqrt(120)*cHH5(5)).* ...
% sqrt(abs(sign(cHH50).*cHH50.^2+sign(cHH5(1)).*cHH5(1).^2+sign(cHH5(2)).*cHH5(2).^2*2+ ...
% sign(cHH5(3)).*cHH5(3).^2*6+sign(cHH5(4)).*cHH5(4).^2*24+sign(cHH5(5)).*cHH5(5).^2*120));
wnStart=1;
%c0
%c
%str=input('Look at numbers')
%
% yy0=((1-gamma).*w0).^(1/(1-gamma));
%
w(1:Nn)=c0;
for nn=1:SeriesOrder
w(1:Nn)=w(1:Nn)+c(nn)*Z(1:Nn).^nn;
end
% q(1:Nn)=cq0;
% for nn=1:SeriesOrder
% q(1:Nn)=q(1:Nn)+cq(nn)*Z(1:Nn).^nn;
% end
% %Flag=0;
% %for nn=ceil(Nn/2)-1:-1:1
% % if((w(nn)<0)&&(Flag==0))
% % wnStart=nn+1;
% % Flag=1;
% % end
% %end
%
%
% %c0
% %c
%
%
% %str=input('Look at numbers')
yy0(wnStart:Nn)=((1-gamma).*w(wnStart:Nn)).^(1/(1-gamma));
% xx0(wnStart:Nn)=((1-gammaX).*q(wnStart:Nn)).^(1/(1-gammaX));
%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
% yw0=((1-gamma).*c0).^(1/(1-gamma));
% dyw0(1)=((1-gamma).*c0).^(1/(1-gamma)-1);
% dyw0(2)=(1/(1-gamma)-1).*((1-gamma).*c0).^(1/(1-gamma)-2)*(1-gamma);
% dyw0(3)=(1/(1-gamma)-1).*(1/(1-gamma)-2).*((1-gamma).*c0).^(1/(1-gamma)-3)*(1-gamma)^2;
% dyw0(4)=(1/(1-gamma)-1).*(1/(1-gamma)-2)*(1/(1-gamma)-3)*((1-gamma).*c0).^(1/(1-gamma)-4)*(1-gamma)^3;
% dyw0(5)=(1/(1-gamma)-1).*(1/(1-gamma)-2)*(1/(1-gamma)-3)*(1/(1-gamma)-4)*((1-gamma).*c0).^(1/(1-gamma)-5)*(1-gamma)^4;
% dyw0(6)=(1/(1-gamma)-1).*(1/(1-gamma)-2)*(1/(1-gamma)-3)*(1/(1-gamma)-4)*(1/(1-gamma)-5)*((1-gamma).*c0).^(1/(1-gamma)-6)*(1-gamma)^5;
% dyw0(7)=(1/(1-gamma)-1).*(1/(1-gamma)-2)*(1/(1-gamma)-3)*(1/(1-gamma)-4)*(1/(1-gamma)-5)*(1/(1-gamma)-6)*((1-gamma).*c0).^(1/(1-gamma)-7)*(1-gamma)^6;
% dyw0(8)=(1/(1-gamma)-1).*(1/(1-gamma)-2)*(1/(1-gamma)-3)*(1/(1-gamma)-4)*(1/(1-gamma)-5)*(1/(1-gamma)-6)*(1/(1-gamma)-7)*((1-gamma).*c0).^(1/(1-gamma)-8)*(1-gamma)^7;
% %
% % c(6)=0;
% % c(7)=0;
% % c(8)=0;
% %
% [y10,y1] = CalculateDriftbCoeffs08A(yw0,dyw0,c,SeriesOrder);
% [y20,y2] = CalculateDriftbCoeffs08A(yw0,dyw0,c,5);
% %
%
% yy1(1:Nn)=y10;
% %y(1:SeriesOrder)=c(1:SeriesOrder);
% for nn=1:SeriesOrder
% yy1(1:Nn)=yy1(1:Nn)+y1(nn)*Z(1:Nn).^nn;
% end
%
% yy2(1:Nn)=y20;
% %y(1:SeriesOrder)=c(1:SeriesOrder);
% for nn=1:5
% yy2(1:Nn)=yy2(1:Nn)+y2(nn)*Z(1:Nn).^nn;
% end
% plot(Z(1:Nn),yy0(1:Nn),'r',Z(1:Nn),yy1(1:Nn),'b',Z(1:Nn),yy2(1:Nn),'k');
% title(sprintf('x0 = %.4f,theta=%.3f,kappa=%.2f,gamma=%.3f,sigma=%.2f,T=%.2f,dt=%.5f', x0,theta,kappa,gamma,sigma0,T,dt));%,sprintf('theta= %f', theta), sprintf('kappa = %f', kappa),sprintf('sigma = %f', sigma0),sprintf('T = %f', T));
%
% legend({'SDE Variable Converted on Grid','SDE Variable From Eight Cumulants','SDE Variable From Six Cumulants'},'Location','northeast')
%
% %str=input('red line is density of SDE from Ito-Hermite method, green is monte carlo.');
%
%
% str=input('red line is SDE from Ito-Hermite method.');
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
yy=yy0;
% xx=xx0;
Dfyy(wnStart:Nn)=0;
%Dfyy1(wnStart:Nn)=0;
%Dfyy2(wnStart:Nn)=0;
%Dfxx(wnStart:Nn)=0;
for nn=wnStart+1:Nn-1
Dfyy(nn) = (yy(nn + 1) - yy(nn - 1))/(Z(nn + 1) - Z(nn - 1));
% Dfyy1(nn) = (yy1(nn + 1) - yy1(nn - 1))/(Z(nn + 1) - Z(nn - 1));
% Dfyy2(nn) = (yy2(nn + 1) - yy2(nn - 1))/(Z(nn + 1) - Z(nn - 1));
% Dfxx(nn) = (xx(nn + 1) - xx(nn - 1))/(Z(nn + 1) - Z(nn - 1));
%Change of variable derivative for densities
end
%Dfyy(Nn)=Dfyy(Nn-1);
%Dfyy(1)=Dfyy(2);
%Dfyydt(Nn)=Dfyydt(Nn-1);
%Dfyydt(1)=Dfyydt(2);
pyy(1:Nn)=0;
%pyy1(1:Nn)=0;
%pyy2(1:Nn)=0;
%pxx(1:Nn)=0;
for nn = wnStart+1:Nn-1
pyy(nn) = (normpdf(Z(nn),0, 1))/abs(Dfyy(nn));
% pyy1(nn) = (normpdf(Z(nn),0, 1))/abs(Dfyy1(nn));
% pyy2(nn) = (normpdf(Z(nn),0, 1))/abs(Dfyy2(nn));
% pxx(nn) = (normpdf(Z(nn),0, 1))/abs(Dfxx(nn));
end
toc
ItoHermiteMeanVar=sum(yy(wnStart:Nn).*ZProb(wnStart:Nn)) %Original process average from coordinates
ItoHermiteMeanAsset=Mean
disp('true Mean only applicable to standard SV mean reverting type models otherwise disregard');
%TrueMean=theta+(v0-theta)*exp(-kappa*T)%Mean reverting SDE original variable true average
%yy0
theta1=1;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%rng(29079137, 'twister')
rng(15898837, 'twister')
paths=100000;
V(1:paths)=v00; %Original process monte carlo.
X=0.0;
X(1:paths)=x0;
alpha1=0;
alpha2=1;
a=mu1X;
b=mu2X;
rho=0;
sigma1=sigmaX;
gammaV=.5;
Random1(1:paths)=0;
Random2(1:paths)=0;
for ttM=1:TtM
Random1=randn(size(Random1));
Random2=randn(size(Random2));
X(1:paths)=X(1:paths)+ ...
(a* X(1:paths).^alpha1 + b* X(1:paths).^alpha2)* dtM + ...
sqrt(1-rho^2)* sigma1* V(1:paths).^gammaV.* X(1:paths).^gammaX .*Random1(1:paths) * sqrt(dtM) + ...
rho* sigma1* V(1:paths).^gammaV .*X(1:paths).^gammaX .*Random2(1:paths)*sqrt(dtM) + ...
(a*alpha1* X(1:paths).^(alpha1-1)+b*alpha2* X(1:paths).^(alpha2-1)).* ...
(((a* X(1:paths).^alpha1 + b* X(1:paths).^alpha2)* dtM^2/2)+ ...
(sqrt(1-rho^2)* sigma1* V(1:paths).^gammaV.* X(1:paths).^gammaX .*Random1(1:paths) *(1-1/sqrt(3)).*dtM^1.5+ ...
rho* sigma1* V(1:paths).^gammaV .*X(1:paths).^gammaX .*Random2(1:paths)*(1-1/sqrt(3)).*dtM^1.5))+ ...
.5*(a*alpha1*(alpha1-1)* X(1:paths).^(alpha1-2)+b*alpha2*(alpha2-1).* X(1:paths).^(alpha2-2)).* ...
( sigma1^2* V(1:paths).^(2*gammaV).* X(1:paths).^(2*gammaX)) *dtM^2/2 + ...
sqrt(1-rho^2)* sigma1* V(1:paths).^gammaV.*gammaX.* X(1:paths).^(gammaX-1).* ...
((a* X(1:paths).^alpha1 + b* X(1:paths).^alpha2).*Random1(1:paths) * 1/sqrt(3).* dtM^1.5 + ...
sqrt(1-rho^2)* sigma1* V(1:paths).^gammaV.* X(1:paths).^gammaX .*(Random1(1:paths).^2-1) * dtM/2 + ...
rho* sigma1* V(1:paths).^gammaV .*X(1:paths).^gammaX .*Random1(1:paths).*Random2(1:paths)*dtM/2)+ ...
.5*sqrt(1-rho^2)* sigma1* V(1:paths).^gammaV.*gammaX.*(gammaX-1).* X(1:paths).^(gammaX-2).* ...
(sigma1^2* V(1:paths).^(2*gammaV).* X(1:paths).^(2*gammaX) .*Random1(1:paths).*1/sqrt(3).*dtM^1.5)+ ...
sqrt(1-rho^2)* sigma1*gammaV.* V(1:paths).^(gammaV-1).* X(1:paths).^(gammaX).* ...
((mu1.*V(1:paths).^beta1 + mu2.*V(1:paths).^beta2).*Random1(1:paths) * 1/sqrt(3).* dtM^1.5 + ...
sigma0*V(1:paths).^gamma.*Random1(1:paths).*Random2(1:paths)*dtM/2)+ ...
.5*sqrt(1-rho^2)* sigma1*gammaV.*(gammaV-1).* V(1:paths).^(gammaV-2).* X(1:paths).^(gammaX).* ...
(sigma0^2*V(1:paths).^(2*gamma).*Random1(1:paths)*1/sqrt(3)*dtM^1.5)+ ...
sqrt(1-rho^2)* sigma1*gammaV.* V(1:paths).^(gammaV-1).*gammaX.* X(1:paths).^(gammaX-1).* ...
rho.* sigma1.* V(1:paths).^gammaV .*X(1:paths).^gammaX .*sigma0.*V(1:paths).^gamma.*Random1(1:paths)*1/sqrt(3)*dtM^1.5+ ...
rho* sigma1* V(1:paths).^gammaV.*gammaX.* X(1:paths).^(gammaX-1).* ...
((a* X(1:paths).^alpha1 + b* X(1:paths).^alpha2).*Random2(1:paths) * 1/sqrt(3).* dtM^1.5 + ...
sqrt(1-rho^2)* sigma1* V(1:paths).^gammaV.* X(1:paths).^gammaX .*Random1(1:paths).*Random2(1:paths) * dtM/2 + ...
rho* sigma1* V(1:paths).^gammaV .*X(1:paths).^gammaX .*(Random2(1:paths).^2-1)*dtM/2)+ ...
.5*rho* sigma1* V(1:paths).^gammaV.*gammaX.*(gammaX-1).* X(1:paths).^(gammaX-2).* ...
(sigma1^2* V(1:paths).^(2*gammaV).* X(1:paths).^(2*gammaX) .*Random2(1:paths).*1/sqrt(3).*dtM^1.5)+ ...
rho* sigma1*gammaV.* V(1:paths).^(gammaV-1).* X(1:paths).^(gammaX).* ...
((mu1.*V(1:paths).^beta1 + mu2.*V(1:paths).^beta2).*Random2(1:paths) * 1/sqrt(3).* dtM^1.5 + ...
sigma0*V(1:paths).^gamma.*(Random2(1:paths).^2-1)*dtM/2)+ ...
.5*rho* sigma1*gammaV.*(gammaV-1).* V(1:paths).^(gammaV-2).* X(1:paths).^(gammaX).* ...
sigma0^2.*V(1:paths).^(2*gamma).*Random2(1:paths) * 1/sqrt(3).* dtM^1.5+ ...
rho* sigma1*gammaV.* V(1:paths).^(gammaV-1).*gammaX.* X(1:paths).^(gammaX-1).* ...
rho.* sigma1.* V(1:paths).^gammaV .*X(1:paths).^gammaX .*sigma0.*V(1:paths).^gamma.*Random2(1:paths)*1/sqrt(3)*dtM^1.5;
VBefore=V;
V(1:paths)=V(1:paths)+ ...
(mu1.*V(1:paths).^beta1 + mu2.*V(1:paths).^beta2)*dtM + ...
sigma0*V(1:paths).^gamma .*Random2(1:paths)*sqrt(dtM) + ...
(mu1.*beta1*V(1:paths).^(beta1-1) + mu2.*beta2.*V(1:paths).^(beta2-1)).* ...
((mu1.*V(1:paths).^beta1 + mu2.*V(1:paths).^beta2)*dtM^2/2 + ...
sigma0*V(1:paths).^gamma .*Random2(1:paths)*(1-1/sqrt(3))*dtM^1.5) + ...
.5*(mu1.*beta1.*(beta1-1).*V(1:paths).^(beta1-2) + mu2.*beta2.*(beta2-1).*V(1:paths).^(beta2-2)).* ...
sigma0^2.*V(1:paths).^(2*gamma).*dtM^2/2 + ...
sigma0*gamma*V(1:paths).^(gamma-1) .* ...
((mu1.*V(1:paths).^beta1 + mu2.*V(1:paths).^beta2).*Random2(1:paths).*1/sqrt(3)*dtM^1.5 + ...
sigma0.*V(1:paths).^gamma .*(Random2(1:paths).^2-1)*dtM/2) + ...
.5*sigma0*gamma*(gamma-1).*V(1:paths).^(gamma-2) .* ...
sigma0^2.*V(1:paths).^(2*gamma) .*Random2(1:paths).*1/sqrt(3)*dtM^1.5;
%Vm=.5*VBefore+.5*V;
Vm=V;
% X(1:paths)=X(1:paths)+ ...
% sigma1* Vm(1:paths).^gammaV.* X(1:paths).^gammaX .*Random1(1:paths) * sqrt(dtM) + ...
% sigma1* Vm(1:paths).^gammaV.*gammaX.* X(1:paths).^(gammaX-1).* ...
% (sigma1* Vm(1:paths).^gammaV.* X(1:paths).^gammaX .*(Random1(1:paths).^2-1) * dtM/2)+ ...
% .5*sigma1* Vm(1:paths).^gammaV.*gammaX.*(gammaX-1).* X(1:paths).^(gammaX-2).* ...
% (sigma1^2* Vm(1:paths).^(2*gammaV).* X(1:paths).^(2*gammaX) .*Random1(1:paths).*1/sqrt(3).*dtM^1.5);%+ ...
end
%SVolMeanAnalytic=thetaV+(V0-thetaV)*exp(-kappaV*dt*Tt)
SVolMeanAnalytic=theta+(v00-theta)*exp(-kappa*dt*Tt)
SVolMeanMC=sum(V(1:paths))/paths
AssetMeanAnalytic=x0
AssetMeanMC=sum(X(1:paths))/paths
theta
v00
kappa
dt
Tt
T
%MeanX
disp('true Mean only applicble to standard SV mean reverting type models otherwise disregard');
TrueMean=theta+(v00-theta)*exp(-kappa*T)%Mean reverting SDE original variable true average
MaxCutOff=30;
NoOfBins=1*300;%round(1*500*gamma^2*4*sigma0/sqrt(MCMean)/(1+kappa));%Decrease the number of bins if the graph is too
[XDensity,IndexOutX,IndexMaxX] = MakeDensityFromSimulation_Infiniti_NEW(X,paths,NoOfBins,MaxCutOff );
plot(xx(wnStart+1:Mm-1),pxx(wnStart+1:Mm-1),'r',IndexOutX(1:IndexMaxX),XDensity(1:IndexMaxX),'g');
%plot(y_w(wnStart+1:Nn-1),fy_w(wnStart+1:Nn-1),'r',IndexOutY(1:IndexMaxY),YDensity(1:IndexMaxY),'g',Z(wnStart+1:Nn-1),fy_w(wnStart+1:Nn-1),'b');
title(sprintf('x0 = %.2f,thetaX=%.2f,kappaX=%.2f,gammaX=%.2f,sigmaX=%.2f,v0 =%.2f,kappa=%.2f,theta=%.2f,gamma=%.2f,sigma0=%.2f,T=%.2f,dt=%.3f,M=%.4f',x0,thetaX,kappaX,gammaX,sigmaX,v00,kappa,theta,gamma,sigma0,T,dt,ItoHermiteMeanAsset));
%,sprintf('theta= %f', theta), sprintf('kappa = %f', kappa),sprintf('sigma = %f', sigma0),sprintf('T = %f', T));
legend({'Ito-Hermite Density','Monte Carlo Density'},'Location','northeast')
str=input('red line is density of SDE from Ito-Hermite method, green is monte carlo.');
%plot(y_w(wnStart+1:Nn-1),fy_w(wnStart+1:Nn-1),'r',IndexOutY(1:IndexMaxY),YDensity(1:IndexMaxY),'g',Z(wnStart+1:Nn-1),fy_w(wnStart+1:Nn-1),'b');
NoOfBins=round(2*500*gamma^2*4*sigma0/sqrt(SVolMeanMC)/(1+kappa))/10;
[VDensity,IndexOutV,IndexMaxV] = MakeDensityFromSimulation_Infiniti_NEW(V,paths,NoOfBins,MaxCutOff );
%[YdtDensity,IndexOutYdt,IndexMaxYdt] = MakeDensityFromSimulation_Infiniti_NEW(YYdt,paths,NoOfBins,MaxCutOff );
plot(yy(wnStart+1:Nn-1),pyy(wnStart+1:Nn-1),'r',IndexOutV(1:IndexMaxV),VDensity(1:IndexMaxV),'g');
title(sprintf('v0 =%.2f,kappa=%.2f,theta=%.2f,gamma=%.2f,sigma0=%.2f,T=%.2f,dt=%.3f,M=%.4f',v00,kappa,theta,gamma,sigma0,T,dt,ItoHermiteMeanVar));
end