matrix dimensions must agree
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
I am writing a lagrange interpolator function and when runnign the test code, my program fails for most tests and i get "matrix dimensions must agree" error. I am not sure where the error is. Can anybody tell? Also, is it appropriate for me to be using .* as opposed to just * operators? Thanks.
function p = lagrangeval(x,y,w)
%% lagrangeval evalutates the Lagrange interpolant for a set of knots (x,y)
%% Inputs: numbers x1,x2,..xn; values f(x1),f(x2)..f(xn)
%% Output: p - the value of the polynomial going through the n data points
function p = lagrangeval(x,y,w)
%% lagrangeval evalutates the Lagrange interpolant for a set of knots (x,y)
%% Inputs: numbers x1,x2,..xn; values f(x1),f(x2)..f(xn)
%% Output: p - the value of the polynomial going through the n data points
n=size(x,2);
k=size(w,2);
p=zeros(n,k);
for i=1:n
p(i,1)=y(i);
end
for l=1:k
for i=1:n-1
for j=1:i
p(i+1,j+1)=(((w(l)-x(i-j+1)).*p(i+1,j))-((w(l)-x(i+1)).*p(i,j)))./(x(i+1)-x(i-j+1));
end
end
end
3 comentarios
Walter Roberson
el 5 de Nov. de 2019
I do not encounter any error messages when I pass the above values to your function.
Respuestas (1)
David Hill
el 4 de Nov. de 2019
Length of x and y must be equal since they are points. The following functions evaluations lagrange polynomial at each value of w (any length).
function p = lagrangeval(x,y,w)
a=length(x);
b=ones(1,a-1);
p=zeros(1,length(w));
for i=1:a
p=p+arrayfun(@(z)y(i)*(prod(z*b-x(x~=x(i)))/prod(x(i)*b-x(x~=x(i)))),w);
end
end
0 comentarios
Ver también
Categorías
Más información sobre Polynomials en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!