【问题标题】:Summing a series in matlab在matlab中对一个系列求和
【发布时间】:2013-10-31 03:43:04
【问题描述】:

我正在尝试编写一个通用函数来查找输入到函数中的值的余弦值。我使用的余弦公式是:

        n
cosx = sum((-1)^n*x^(2n)/(2n)!)
       n=1

我查看了 matlab 文档,this page 暗示“sum”函数应该能够做到这一点,所以我尝试通过输入来测试它:

sum(x^n, n=1..3)

但它只是给我“错误:等号左侧的表达式不是赋值的有效目标”。

matlab 可以默认执行无限级数的求和,还是我必须使用函数和循环来模拟它?

【问题讨论】:

    标签: matlab sum series trigonometry


    【解决方案1】:

    如果您想将其近似为有限数量的项,您可以在 Matlab 中完成,无需工具箱或循环:

    sumCos = @(x, n)(sum(((-1).^(0:n)).*(x.^(2*(0:n)))./(factorial(2*(0:n)))));
    

    然后像这样使用它

    sumCos(pi, 30)
    

    第一个参数是角度,第二个参数是您想要将系列带到的项数(即影响精度)。这是一个数值解,我认为这正是您所追求的。

    顺便说一句,我冒昧地更正了您的初始总和,如果您要近似 cos,n 肯定必须从 0 开始

    如果您想了解我的公式(您肯定会),那么您需要阅读一些基本的 Matlab 基础知识,即colon operator,然后是使用. 执行element-wise operations 的概念。

    【讨论】:

    • 谢谢。我明白你做了什么;出于某种原因,我完全忘记了矢量化!而且,是的,它绝对应该从零开始;我的错。
    【解决方案2】:

    在 MATLAB 本身中,不,您无法求解无限和。你必须按照你的建议估计它。您正在查看的页面是 Symbolic Math 工具箱的一部分,它是 MATLAB 的一个附加组件。特别是,您正在查看与 Mathematica 非常相似的 MuPAD。它是一个符号数学工作区,而 MATLAB 更像是一个数字数学工作区。如果您拥有 Symbolic Math 工具箱,您可以像上面尝试的那样使用 MuPAD,也可以使用 MATLAB 内部的 symsum 函数来执行序列和。

    【讨论】:

      猜你喜欢
      • 2014-10-12
      • 1970-01-01
      • 1970-01-01
      • 2012-10-04
      • 1970-01-01
      • 1970-01-01
      • 2013-10-24
      • 2021-12-31
      • 2014-10-24
      相关资源
      最近更新 更多