MATLAB - 通过迭代找到函数和的零

MATLAB - Finding Zero of Sum of Functions by Iteration

我正在尝试对一个函数求和,然后试图找到所述函数的根。也就是说,例如,取:

假设我有一个矩阵 X 和向量 t,其值是:X(2*n+1,n+1), t(n+1)

for j = 1:n+1
        sum = 0;
    for i = 1:2*j+1
        f = @(g)exp[-exp[X(i,j)+g]*(t(j+1)-t(j))];
        sum = sum + f;
    end
        fzero(sum,0)
end

我想在

评估

j = 1

f = @(g)exp[-exp[X(1,1)+g]*(t(j+1)-t(j))]
fzero(f,0)

j = 2

f = @(g)exp[-exp[X(1,2)+g]*(t(j+1)-t(j))] + exp[-exp[X(2,2)+g]*(t(j+1)-t(j))] + exp[-exp[X(3,2)+g]*(t(j+1)-t(j))]
fzero(f,0)

j = 3

等...

但是,我不知道如何在实践中实际实现它。

感谢任何帮助!

PS - 我没有 Matlab 中的符号工具箱。

我建议利用matlab的数组操作:

zerovec = zeros(1,n+1); %preallocate
for k = 1:n+1
    f = @(y) sum(exp(-exp(X(1:2*k+1,k)+y)*(t(k+1)-t(k))));
    zerovec(k) = fzero(f,0);
end

但是请注意,指数之和永远不会为零,除非指数是复数。 fzero 永远找不到,所以这个问题有点没有实际意义。

另一种解决方法是写一个函数:

 function [ sum ] = func(j,g,t,X)
    sum = 0;
    for i = 0:2*j
        f = exp(-exp(X(i+1,j+1)+g)*(t(j+3)-t(j+2)));
        sum = sum + f;
    end
 end

然后循环你的求解器

for j=0:n
  fun = @(g)func(j,g,t,X);
  fzero(fun,0)
end