在MATLAB中计算与变量边界的积分

时间:2017-05-09 23:46:32

标签: matlab

在MATLAB中考虑以下MWE:

Document document = (Document)session.getObject(id);
List<Document> versions = document.getAllVersions();
Logger.debug("Numero de versiones:"+versions.size() );
for(int i=0;i<versions.size();i++){
   Document version = versions.get(i);
   if("2.0".equals(version.getVersionLabel())){
     version.delete(false);
   }
}

这会产生错误

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

(还有一点)。我该如何解决?这甚至可能吗?我认为问题是变量上限。

1 个答案:

答案 0 :(得分:1)

如果您想使用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
相关问题