gpt4 book ai didi

matlab - 如何计算系列的总和,直到总和在 Matlab 中停止变化

转载 作者:太空宇宙 更新时间:2023-11-03 20:24:13 32 4
gpt4 key购买 nike

我想在 Matlab 中计算以下系列的总和:

enter image description here

我正在使用这个 MATLAB 函数:

>> syms i;
>> S = symsum((0.5^i*sin(i))/i^2, i, 0, Inf)

问题是我想在总和停止变化时停止添加项。例如,何时停止的条件可能是步骤 i 的总和与步骤 i+1 的总和之间的差异不大于某个用户定义的公差 10^-8。如何将此条件包含在上述总和计算中?

最佳答案

我个人不会使用 Symbolic Math Toolbox,而更喜欢使用简单的循环。具体来说,我会以数字方式进行此操作,并逐渐向系列中添加术语,直到满足您所说的条件为止。顺便说一句,你的总和从 i=0 开始,但是当 i=0 时,总和是未定义的(你有一个 0/0 未定义的除法结果)。我假设您打算改为从 i=1 开始。

我想到了这样的事情:

s = 0;
s_before = realmax;
tol = 1e-8;
ii = 0;

while (abs(s_before - s) >= tol)
ii = ii + 1;
s_before = s;
s = s + ((0.5^ii)*sin(ii))/(ii^2);
end

前四行代码用于设置。 s 包含最终总和,s_before 包含上一次迭代的总和。 tol 定义了一个公差(您的示例是 1e-8),它衡量连续迭代之间的差异。 ii 是一个计数器变量,即求和公式中的i 变量。请注意,我将其初始化为 0,但在第一次迭代时,它将设置为 1。我还选择使用 ii 而不是 i 作为 i 保留给复杂变量。

接下来,我们使用 while 循环,只要连续迭代之间的差异大于容差,我们就会继续循环。我们保存前一次迭代的总和,然后计算系列中的下一项并将其累加到总和中。我们还确保增加计数器变量。当连续迭代之间的差异小于一定量时,这将退出。

运行此代码后,我得到了迭代总数和总和:

>> format long g;
>> s

s =

0.475415855580831

>> ii

ii =

18

在开头执行 format long g; 将使我们能够显示更多的精度位数。默认情况下,MATLAB 最多只显示 4 位小数。结果告诉我们,这需要在您的总和中使用 18 项才能“停止变化”。

关于matlab - 如何计算系列的总和,直到总和在 Matlab 中停止变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34408573/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com