Я только начал изучать MATLAB и я пытаюсь нормализовать функцию рельефности даетсяMATLAB - «Невозможно доказать ошибку« expr` буквально ... »при попытке нормализовать функцию.
function b = bump(x);
region1 = abs(x) < 1
b(region1) = (exp(-1./(1 - x(region1).^2)))
region2 = abs(x) >= 1
b(region2) = 0
Чтобы сделать это, мне нужно разделить на определенный интеграл от -1 до 1. Однако при вводе
syms x;
int(bump(x), -1, 1)
,
Я получаю длинное сообщение об ошибке, в котором говорится
Error using symengine (line 58)
Unable to prove 'abs(x) < 1' literally. To test the statement mathematically, use isAlways.
Error in sym/subsindex (line 1554)
X = find(mupadmex('symobj::logical',A.s,9)) - 1;
Error in sym>privformat (line 2357)
x = subsindex(x)+1;
Error in sym/subsref (line 1578)
[inds{k},refs{k}] = privformat(inds{k});
Error in bump (line 3)
b(region1) = (exp(-1./(1 - x(region1).^2)))
Я попытался заменить abs(x)<1
с тем, что я думаю, что это предложил isAlways(abs(x)<1)
, и что устраняет ошибку, хотя это дает неправильный ответ (он говорит, что интеграл равна нулю). Я даже не уверен, что означает сообщение об ошибке. Любая помощь будет оценена по достоинству.
Спасибо.
Вы используете символические объекты? –
@EitanT: если он только изучает MATLAB, тогда я бы предположил «нет». – nneonneo
@nneonneo Я стараюсь не вводить слова в рот OP, вот почему я спрашиваю. –