在 MATLAB 中计算具有可变边界的积分

  • 本文关键字:边界 MATLAB 计算 matlab
  • 更新时间 :
  • 英文 :


考虑MATLAB中的以下MWE:

f = @(t) integral(@(x) x.^2,0,t);
integral(f,0,1);

这会产生错误

Error using integral (line 85) A and B must be floating-point scalars.

(还有更多(。我该如何解决这个问题?这可能吗?我认为问题在于可变上限。

如果要使用integral,请将'ArrayValued'设置为true否则t将是integral(@(x) x.^2,0,t)中的无效端点。所以它会是:

f = @(t) integral(@(x) x.^2,0,t);
integral(f,0,1,'ArrayValued',true)
% ans =
%     0.0833

或者,由于您正在执行双重集成,因此请使用专用于此目的的功能,即 integral2 .对于您的示例,它将是:

f = @(t,x) x.^2 ;
integral2(f,0,1,0, @(t) t)
% ans =
%     0.0833

如果您有符号数学工具箱,您也可以使用int作为int(expr,var,a,b),但速度会更慢。对于您的情况,它将是:

syms x t;
f = x.^2;
req = int(int(f,x,0,t),t,0,1);    % It gives 1/12
req = double(req);                % Convert to double if required

最新更新