【问题标题】:Matlab numerical integrationMatlab数值积分
【发布时间】:2023-03-08 00:26:01
【问题描述】:

我正在尝试使用 matlab 集成 x,使用以下命令很简单:

syms x

a=int(x)

问题是我不确定如何实现数值积分。我想使用不同的技术使用一定数量的间隔对 x 进行积分。

谁能帮我解决数值积分的语法调用? MathWorks 网站不是很有帮助。

我也知道有一种称为陷阱的方法,但我正在寻找 matlab 中的其他方法,例如黎曼和近似。

更新

所以特别是我正在寻找的是一个函数,它将 x 分成 8 个区域,然后将这 8 个区域加在一起。除了 trapz 之外,还有没有预定义的函数可以做这样的事情?

好的,我想我已经得出结论,没有这样的事情。你必须自己做。

【问题讨论】:

    标签: matlab integration numerical-integration


    【解决方案1】:

    对于数值积分,您可以使用大量函数:

    trapz
    quad
    quadgk
    integral
    

    用于一维集成。

    如果您对多维集成技术感兴趣,您可能会考虑使用以下功能

    dblquad
    quad2d
    integral2
    integral3
    

    编辑

    在你的情况下,我会这样做:

    x = 0:.1:2;
    y = x;
    trapz(x,y);
    

    y = @(x) x;
    quad(y,0,2);
    

    编辑 2

    看看这个:

    clc,clear
    
    s = 0:7;
    y = @(x) x;
    
    k = 1;
    for ii = 1:numel(s)-1
      f(k) = quad(y,s(k), s(k+1));
      k = k + 1;
    end
    sum(f)
    

    【讨论】:

    • 所以为了确保我理解这一点,这些函数以前对我不起作用的原因是因为我使用的是“syms x”而不是创建增量长度为“b”的 xa 向量" 从“a”开始,到“b”结束。从那里,我可以调用您提到的任何功能?哇!谢谢
    • @Mechy: syms 正在调用符号工具箱,而我上面提到的函数以数字方式计算您的积分。
    • 您能否再解释一下您在“y=@(x) x”上的符号。那是在做什么?我可以用四边形指定我的间隔长度或间隔数量吗? "y=f(x)" 也不起作用。 Matlab 不喜欢这样。或者你是说我在这些位置计算函数的值,然后将它们输入到向量中?
    • 我将您重定向到:mathworks.com/help/matlab/ref/function_handle.htmlmathworks.com/help/matlab/function-handles.html。它会帮助你理解函数句柄
    • 所以为了确保我理解这一点,“y=@(x)x”将数组 x 作为输入,然后在第一个右括号之后对其执行操作。例如,y=@(x)x^2 将获取数组 x,然后将其中的每个数字平方并将其传递给 y。
    猜你喜欢
    • 2021-07-20
    • 2013-05-14
    • 2019-07-19
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    • 2018-08-16
    • 2014-06-12
    相关资源
    最近更新 更多