- #1
Jackk
- 4
- 0
Homework Statement
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...