主要内容

符号求和

Symbolic Math Toolbox™ 提供了两个用于计算和的函数:

  • sum 用于求符号向量和矩阵的元素和。与 MATLAB®sum 不同,符号 sum 函数不支持多维数组。有关详细信息,请参阅 MATLAB 的 sum 页面。

  • symsum 用于求符号级数的和。

比较 symsumsum

您可以使用 sumsymsum 两者来求定总和。sum 函数用于基于某个维度对输入求和,而 symsum 函数用于基于某个索引对输入求和。

假设有定总和 S=k=1101k2.首先,通过将索引值 k 代入表达式来求定总和的各项。然后,使用 sum 对得到的向量求和。

syms k
f = 1/k^2;
V = subs(f, k, 1:10)
S_sum = sum(V)
V =
[ 1, 1/4, 1/9, 1/16, 1/25, 1/36, 1/49, 1/64, 1/81, 1/100]
S_sum =
1968329/1270080

通过指定索引和求和限值,使用 symsum 求同一和。sumsymsum 返回的结果相同。

S_symsum = symsum(f, k, 1, 10)
S_symsum =
1968329/1270080

symsumsum 的计算速度对比

对于定级数求和,symsum 的运算速度通常快于 sum。对于不定级数求和,您只能使用 symsum

可以通过以下方式来证明 symsum 可能比 sum 更快:对类似以下所示的大型定级数求和 S=k=1100000k2.

为了在您的计算机上比较运行时间,请使用以下命令。

syms k
tic
sum(sym(1:100000).^2);
toc
tic
symsum(k^2, k, 1, 100000);
toc

symsumsum 之间的输出格式差异

sum 相比,symsum 可以提供更简洁的求和表示。通过比较函数对定级数 S=k=110xk. 的输出来演示此差异。为简化解,假设 x > 1

syms x
assume(x > 1)
S_sum = sum(x.^(1:10))
S_symsum = symsum(x^k, k, 1, 10)
S_sum =
x^10 + x^9 + x^8 + x^7 + x^6 + x^5 + x^4 + x^3 + x^2 + x
S_symsum =
x^11/(x - 1) - x/(x - 1)

使用 isAlways 来证明输出相等。isAlways 函数返回逻辑值 1 (true),表示输出相等。

isAlways(S_sum == S_symsum)
ans =
  logical
     1

为了执行进一步的计算,请清除假设。

assume(x, 'clear')