matlab函数工作错误

我试图在matlab中创建这样的功能

它必须是l_k的数组,从1到n,但是.

在代码中:x – 一些向量(数组),z – 标量;在代码中,w是压裂的上部,而g是较低的.

function out_l =  l_k(z, x)
%вычисления массива l_k для числа z
%x - узлы интерполяции
%z - значение для которог овычисляем значение полинома
n = size(x);
w = 1;
g = 1;
out_l = zeros(n);

for k = 1:n

    for j = 1:n
    %вычислим w
        for i=1:n
            if((i ~= k) && (i ~= j))
                w = w * (z - x(i));
            end
        end
    %вычислим g
        for i=1:n
            if(i ~= k)
                g = g * (x(k) - x(i));
            end
        end

    end
    out_l(k) =  (w/g);  
end
end

问题是 – 当涉及到循环时,它只是在第一次检查if语句后退出!什么是哇?

 %вычислим w
            for i=1:n
                if((i ~= k) && (i ~= j))
                    w = w * (z - x(i));
                end
            end
        %вычислим g
            for i=1:n
                if(i ~= k)
                    g = g * (x(k) - x(i));
                end
            end

最佳答案 线n = size(x);如果你想要n中的元素数量(大小返回维度的行向量,而不是标量),则没有意义.试试n = numel(x);代替.

稍后编辑:我也看到你像这样分配你的输出数据:out_l = zeros(n);但你应该知道它创建了一个nxn矩阵,而不是你想象的数组.尝试out_l =零(1,n);改变.

另一个建议是:如有疑问,请尽可能频繁地使用F1键. 🙂 Matlab集成的帮助非常擅长解释Matlab的东西.

点赞