public Matrix HWSwaptionMatrix(Vector swaptionMaturity, Vector swapDuration, double a, double sigma, double deltaK)
{
Matrix result = new Matrix(swaptionMaturity.Length, swapDuration.Length);
Vector swapPayDate;
int npayment;
double FSR;
for (int i = 0; i < swaptionMaturity.Length; i++)
{
for (int j = 0; j < swapDuration.Length; j++)
{
npayment = (int)(swapDuration[j] / deltaK);
swapPayDate = Vector.Linspace(swaptionMaturity[i] + deltaK, swaptionMaturity[i] + swapDuration[j], npayment);
FSR = this.ForwardSwapRate(swaptionMaturity[i], swapPayDate);
result[i, j] = this.HWSwaption(a, sigma, 1000.0, FSR, swaptionMaturity[i], swapPayDate);
}
}
return result;
}