Я только недавно начал работать с MATLAB для Uni в этом году, и в качестве вопроса о викторине для домашней работы меня попросили создать кусочную функцию (которую я назвал "piecewise_method"), которая может ввести другое уравнение для "x «в зависимости от того, находится ли« x »ниже 0, от 0 до 8 или выше 8. Вот код, который я написал до сих пор.
function solution = piecewise_method(x)
% given the value of the input x, the function
% piecewise_method will choose from one of the three specified
% equations to enact upon the given value of x
% and give the user a solution
solution = zeros(size(x));
e = exp(1);
for j = 1:size(x)
a = x(j);
if a < 0
solution(j) = -a.^3 - 2*a.^2 + 3*a;
elseif (a >= 0) && (a <= 8)
solution(j) = (12/pi)*sin(pi*a./4);
else
solution(j) = ((600.*e.^(a-8))./(7*(14+6.*e.^(a-8))) - 30/7);
end
end
При запуске с входом ...
x = -3:12
Он выдает этот результат для решения переменной ...
решение =
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Теперь это подсказывает мне, что массив создается правильно, но по тем или иным причинам цикл for не работает должным образом или, как ожидалось. Я несколько раз пытался восстановить цикл for от базового уровня, но когда я начал вводить уравнения, он снова начал распадаться, поэтому я считаю, что с моими уравнениями что-то не так (поэтому я везде ставлю скобки, на всякий случай).
В вопросе также содержится просьба использовать операторы if, поэтому я не могу попытаться использовать другие методы для создания функции кусочного метода, и из моего поиска не было много примеров операторов if в кусочных функциях. .
Если бы вы могли предоставить какие-либо предложения, которые могли бы помочь мне с этой функцией, которые были бы очень благодарны, спасибо!
P.S. Если у вас есть какие-либо предложения по улучшению моих вопросов в будущем, это тоже было бы хорошо!