我刚刚开始学习MATLAB,我正在尝试规范化由{/ p>给出的bump
函数
function b = bump(x)
region1 = abs(x) < 1
b(region1) = (exp(-1./(1 - x(region1).^2)))
region2 = abs(x) >= 1
b(region2) = 0
end
要做到这一点,我需要将-1除以定积分。但是,当我输入
时syms x;
int(bump(x), -1, 1)
我收到一条很长的错误消息,上面写着
使用symengine时出错(第58行)
无法证明'abs(x)&lt; 1'字面意思。要以数学方式测试语句,请使用isAlways。sym / subsindex中的错误(第1554行)
X = find(mupadmex('symobj :: logical',A.s,9)) - 1;sym&gt; privformat中的错误(第2357行)
x = subsindex(x)+1;sym / subsref中的错误(第1578行)
[inds {k},refs {k}] = privformat(inds {k});碰撞错误(第3行)
b(region1)=(exp(-1 ./(1 - x(region1)。^ 2)))
我尝试将abs(x)<1
替换为我认为建议的isAlways(abs(x)<1)
,并删除了错误,但它给出了错误的答案(它表示积分为零)。
我不明白错误信息的含义。
答案 0 :(得分:2)
syms x
将x
定义为符号变量,在x
上调用符号计算。这可能不是你想要的。
相反,将x
定义为某种输入矩阵,例如: x = zeros(3);
。或者,要进行数值积分,请使用integral
函数:
integral(@bump, -1, 1)