1. PF Contest - Win "Conquering the Physics GRE" book! Click Here to Enter
    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!

Matlab help, function handle

  1. Feb 9, 2010 #1
    1. The problem statement, all variables and given/known data

    I'm writing a little Matlab function that solves an equation with the help of a function handle.The equation is

    x(t) = exp(-a*t)*x0 + exp(-a*t) * int(exp(a*s)*y(s), s=0..t)

    I have tried it with two following functions

    2. The attempt at a solution

    function #1
    function ode = ode1sol(a, x0, y, tol)

    % if tol is not given
    if nargin == 3
    tol = 1e-6;

    t = 0:1:10;

    % sub3 being a subfunction
    ode = sub3(a,x0,y,t,tol);

    function #2
    function x = sub3(a,x0,y,t,tol)

    f = @(s) exp(a*s) .* y(s);

    for i = 1:length(t)
    x(i) = exp(-a*t(i))*x0 + exp(-a*t(i)) .* quad(f,0,t(i),tol);

    when I write

    Matlab gives me this error
    ??? Subscript indices must either be real positive integers or logicals.

    Error in ==> sub3>@(s)exp(a*s).*y(s) at 5
    f = @(s) exp(a*s) .* y(s);

    Error in ==> quad at 77
    y = f(x, varargin{:});

    Error in ==> sub3 at 8
    x(i) = exp(-a*t(i))*x0 + exp(-a*t(i)) .* quad(f,0,t(i),tol);

    Error in ==> ode1sol at 13
    ode = sub3(a,x0,y,t,tol);

    I'm confusing the indices somehow but I don't know why...
  2. jcsd
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Can you offer guidance or do you also need help?
Draft saved Draft deleted