我正在尝试对函数求和,然后尝试找到所述函数的根。也就是说,例如,采取:
考虑我有一个矩阵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中没有符号工具箱。
答案 0 :(得分:3)
我建议使用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
永远找不到,所以这个问题有点争论。
答案 1 :(得分:-1)
另一种解决方案是编写一个函数:
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