Как построить участок поверхности с ограничениями - PullRequest
0 голосов
/ 02 декабря 2018

Я пытаюсь построить функцию с тремя ограничениями (см. Код)

Теперь я попробовал следующее

function value = example(x1, x2)

if x1 < 0 || x2 < 0 || x1+2*x2 > 6
    value = NaN;
else 
    value = abs(x1 - x2) + exp(-x1 - x2); 
end

[X, Y] = meshgrid(-10:10, -10:10);
Z = example(X,Y);
surf(X, Y, Z)

Теперь возникает ошибка, поскольку предложение if не можетбыть оценены для входов X и Y. Есть идеи, как заставить эту работу?

1 Ответ

0 голосов
/ 02 декабря 2018

Как упоминалось @Cris, используйте логическое индексирование .

Основная идея (x1 < 0 | x2 < 0 | x1+2*x2 > 6) даст вам матрицу (того же размера, что и value) нулей и единиц.Положения тех соответствуют истинному состоянию.Попробуйте это:

function value = example(x1, x2)
value = abs(x1 - x2) + exp(-x1 - x2); 
value(x1 < 0 | x2 < 0 | x1+2*x2 > 6) = NaN;

Вывод:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...