"Invalid second data argument" error while using "plot" function (Lagrange Interpolation)

1 visualización (últimos 30 días)
I want to take the graph of x and y points with plot function, pointx is okay, but there is a error with pointy1, and i think because it is a function respect to x.
When i delete @(x), it says "x is a undefined function or variable."
Can you help me?
clc;
clear all;
pointx = [-2 -1 0 1 2];
pointy1 =@(x) (2 - atan(x));
x = linspace(-5,5);
n = size(pointx, 2);
L = ones(n, size(x,2));
for i=1:n
for j=1:n
if (i~=j)
L(i,:).*(x-pointx(j))/(pointx(i)-pointx(j));
end
end
end
y = 0;
for i=1:n
y = y + pointy1(i)*L(i,:);
end
y1 = y;
plot(pointx, pointy1, 'r', x, y1, 'c--o');
hold on;

Respuesta aceptada

Tommy
Tommy el 25 de Mayo de 2020
You are correct, it is complaining because pointy1 is a function handle. You can obtain the output of pointy1 when evaluated at the x values within pointx by calling pointy1(pointx):
clc;
clear all;
pointx = [-2 -1 0 1 2];
pointy1 =@(x) (2 - atan(x));
x = linspace(-5,5);
n = size(pointx, 2);
L = ones(n, size(x,2));
for i=1:n
for j=1:n
if (i~=j)
L(i,:).*(x-pointx(j))/(pointx(i)-pointx(j));
end
end
end
y = 0;
for i=1:n
y = y + pointy1(i)*L(i,:);
end
y1 = y;
plot(pointx, pointy1(pointx), 'r', x, y1, 'c--o');
hold on;
This works because your pointy1 function is vectorized.

Más respuestas (0)

Categorías

Más información sobre Interpolation en Help Center y File Exchange.

Productos


Versión

R2015a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by