用数值求解包含log的方程

时间:2014-05-13 12:06:12

标签: matlab

我有以下脚本定义一个函数并设置和方程式:

H = @(f) sum(log(f));
f = rand(1, 1);

syms a
H(f)-H(f-a)

我想为H(f)-H(f-a)=0解决a。我尝试以下列方式使用fzero,fzero('H(f)-H(f-a)', 0),但这并没有给我任何有用的东西。

1 个答案:

答案 0 :(得分:0)

对此明确的答案是a = 0。这当然是明显的答案,也许就是为什么你没有得到任何有用的东西",特别是当只考虑f的一个值时。

但是,当您添加更多值并使用solve函数时,实际上可以获得有用的信息。

H = @(f) sum(log(f));
f = rand(5, 1);
syms a
temp = H(f)-H(f-a);
out = double(solve(temp == 0,a));

这将输出一个向量,其中包含作为函数解的所有值。请注意,这通常不会产生最佳答案,高阶函数的数值求解相当困难且不可靠。因此,运行可能需要很长时间。