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

Error using integral: A and B must be floating-point scalars

我要求积分的简单例子

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.

有什么建议吗?我积分的下限一定是函数,不是数字

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

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

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

Matlab 命令solve returns 符号结果。 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

the lower limit of my integral must be a function, not a number

integral是数值积分例程;积分的限制必须是数字。