使用积分时出错:A和B必须是浮点标量

时间:2015-04-22 17:22:13

标签: matlab integral

我想评估整数

的简单例子
a = max(solve(x^3 - 2*x^2 + x ==0 , x)); 
fun = @(x) exp(-x.^2).*log(x).^2;
q = integral(fun,0,a)

,错误是

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

任何提示?我的积分的下限必须是函数,而不是数字。

2 个答案:

答案 0 :(得分:2)

Matlab命令solve返回符号结果。 integral仅接受数字输入。使用double将符号转换为数字。由于您的代码现在已经编写,因此max已经因符号输入而引发错误。以下作品。

syms x;
a = max(double(solve(x^3 - 2*x^2 + x)));
fun = @(x) exp(-x.^2).*log(x).^2;
q = integral(fun,0,a)

输出:1.9331

  

我的积分的下限必须是函数,而不是数字

integral是一个数字集成例程;集成的限制必须是数字。

答案 1 :(得分:0)

在断点处检查a的值,或者删除;从行尾开始,打印 a 。根据错误, a 不是标量浮点数。您可能需要另一个max()或double()语句将向量转换为单个值。

解决帮助:http://www.mathworks.com/help/symbolic/solve.html

积分帮助:http://www.mathworks.com/help/ref/integral.html