1. Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Who can help me to run this code in matlab?

  1. Jul 21, 2009 #1
    who can help me to run this code in matlab? I run it in my computer but the result is totally different from the book! In the book,the image is a increase curve,but my result is a decrease curve.So, is there something wrong of my MATLAB???

    code:

    syms r P A B t;
    P = exp(A+B*r);
    disp('first derivative of P with respect to r')
    diff(P,r)
    disp('second derivative of P with respect to r')
    diff(diff(P,r))

    syms f B A s k m p r t DA DB
    f1=0.5*B^2*s^2+B*(k*(m-r)-p*s)-DA-DB*r-r
    collect(f1,r)

    dsolve('-B*k-DB-1=0','B(0)=0')
    B = -1/k+exp(-k*t)/k;
    f2=1/2*B^2*s^2+B*(k*m-p*s)-DA
    dsolve('1/2*(-1/k+exp(-k*t)/k)^2*s^2+(-1/k+exp(-k*t)/k)*(k*m-p*s)-DA=0','A(0)=0')

    tau=(1:1:60)';
    nTau=length(tau);
    p=0.20;s=0.25;k=0.30;theta=5;r=6;
    % Calculate A, B and the yield curve;
    B=(exp(-k.*tau)-1)./k;
    A=B.*(((p*s)/k)-theta)-theta.*tau+(p.*s.*tau)./k+(s^2/(4*k)).*(-(B.^2)+(2*exp(-k.*tau)-2)./(k^2)+(2.*tau)./k);
    y=-(1./tau).*(A+B.*r);
    figure;
    plot(tau,y)
     
  2. jcsd
  3. Jul 21, 2009 #2
    I would say change the sign of the exponential, it increases. There is no way that anybody can help you on this unless you state more precisely what the problem is.
     
  4. Jul 21, 2009 #3
    thank you! the problem is about a example of Vasicek model.it is in the book"Strategic Asset Allocation in Fixed Income Markets A Matlab based user's guide",page 77.It wants to solve a PDE of Vasicek model for bond pricing.
     
  5. Jul 21, 2009 #4
  6. Jul 22, 2009 #5
    Well, the code is running properly, and I don't have the book so my guess goes with some typos in the code... Try to comment some of the portions of the code and check by hand
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook