x = (a + (i-1).*h)';
alphax = alpha(x);
f = f(x);
I get error: Array indices must be positive integers or logical value
ive tried storing alpha as another variable, but I don't understand.
Here is the full code:
—————-
function [u,x] = solveHeat(alpha, f, a, b, n, tolerance, maxIterations)h= (b-a)/(n-1);i=1:n;x=(a+ (i-1).*h)';alphax=alpha(x);f=f(x);%define starting value of temperature, u
u= [a; zeros(n-2,1);b]r(1)=0;r(n)=0;Dinverse(2:n-1)=1./(-2alphax(2:n-1).*(h^2));Dinverse(1)=1;Dinverse(n)=1;for s =1:maxItreations r(2:n-1)= (u(1:n-2)-(2+alphax(2:n-1).*h^2)).*u(2:n-1)... +u(3:n)+(h^2)*f (2:n-1)); u(2:n-1)=u(2:n-1)-Dinverse(2:n-1').*r(2:n-1)'; if norm(r)<tol,break,end endend
code to call function
[u, x] = solveHeat(1, @(x) zeros(size(x)), 1, cosh(1), 20, 1e-6, 2000);error = norm(u - cosh(x))
Best Answer