# Homework Help: Matlab help, function handle

1. Feb 9, 2010

### Jackk

1. The problem statement, all variables and given/known data
Hi,

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;
end

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);
end

--
when I write
t=0:1:10;
ode1sol(1,1,sin(6*t))

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...