我在 octave 上工作,不确定它是否会在 matlab 中运行,我试图做一个简单的拉格朗日多项式来绘制点、函数和拉格朗日近似值,所以我做了以下操作,
clear all
clc
function [y] = lagrange(x, x0, y0)
n = size(x0,1);
y = 0;
for i=1:n
p = 1;
for j=1:n
if j == i % avoiding division by 0
continue;
endif;
p *= (x-x0(j)) / (x0(i)-x0(j));
endfor;
y += y0(i) * p;
endfor;
endfunction;
x=[0:0.1:5];
x0=[2;2.75;4];
y0=[1/2;1/2.75;1/4];
y=lagrange(x,x0,y0);
我遇到了以下问题,“运算符 *:不一致的参数(op1 是 1x41,op2 是 1x41)”仅在使用 x 中的向量时出现,如果我尝试评估例如 lagrange(3,x0,y0) in一个特定的点,该函数可以正常工作并且没有问题,问题是当您对 x 使用更大的向量时,
所以我的问题是,有没有一种方法可以修改函数以便它可以使用更大的向量 x,或者有一种方法可以绘制函数而不直接在函数中使用更大的向量?