function [ truecapacity , approxcapacity1 , approxcapacity2]=part2trueapproxcapacity1(L,N,sigma)
    angl = pi/4;
    d = 1;
    lambda = 10;
    
    c = L/N;
  
    %Construct the P matrix
    P = zeros(L,L);
    step = floor(L/3);
    for (k=1:step)
      P(k,k) = 0.5;
      P(k+step,k+step) = 1;
      P(k+2*step,k+2*step) = 1.5;
    end
    %get an estimate very close to the true capacity
    numsamples = 1000;
    sum = 0;
    for (k=1:numsamples)
      V = zeros(N,L);
      for (k=1:L) 
        theta = 2*angl*(rand(1)-0.5);
        V(:,k) = ((exp(2*pi*j*sin(theta)*d/lambda)).^(0:(N-1)))';
      end
      V = (1/sqrt(N))*V;
      sum = sum + log2(det( eye(N,N) + (1/(sigma^2)) * V * P * V' ));
    end
    truecapacity = sum/(numsamples*N);

    pmoms = [];
    for (k=1:7)
      pmoms(k) = (1/L)*trace(P^k);
    end
    
    dmoms(1) = 1;
    dmoms(2) = (2*pi)^(2-1)*quad(@p2,-pi,pi);
    dmoms(3) = (2*pi)^(3-1)*quad(@p3,-pi,pi);  
    dmoms(4) = (2*pi)^(4-1)*quad(@p4,-pi,pi);  
    dmoms(5) = (2*pi)^(5-1)*quad(@p5,-pi,pi);  
    dmoms(6) = (2*pi)^(6-1)*quad(@p6,-pi,pi);
    dmoms(7) = (2*pi)^(7-1)*quad(@p7,-pi,pi);

    %apply the vandermonde convolution formulas
    moms = pmoms*c;
    moms=vandermonconv(moms,dmoms);
    moms = moms/c;
    %We now have the moments of PV'V
    %We now have the moments of VPV'

    approxcapacity1 = 0;
    for (k=1:3)
      approxcapacity1 = approxcapacity1 + (-1)^(k+1)*moms(k)/(k*sigma^(2*k));
    end
    approxcapacity1 = approxcapacity1/log(2);
    
    approxcapacity2 = 0;
    for (k=1:7)
      approxcapacity2 = approxcapacity2 + (-1)^(k+1)*moms(k)/(k*sigma^(2*k));
    end
    approxcapacity2 = approxcapacity2/log(2);