Существует несколько способов построения эллипса, например, Вы также можете использовать параметрическое представление уравнения.
В вашем подходе, однако, при построении графиков функций с использованием команды plot (x, y) вам необходимо выразить зависимую переменную (y) через независимую переменную (x). Вы определили диапазон для x, который вы подставляете в свои уравнения, чтобы найти y. В то время как для параболы зависимость y от x очевидна, вы забыли получить такое отношение для эллипса. В этом случае это будет + -sqrt ((1 - x ^ 2/16) * 2). Таким образом, в вашем подходе вы должны учитывать как отрицательные, так и положительные y для одного и того же значения x. Также есть несоответствие в вашем письменном уравнении для эллипса (= 4) и уравнения в коде Matlab (= 1).
x = linspace(-5, 5);
y1 = sqrt((1 - x.^2/16)*2);
y2 = -5*x.^2 +2;
figure(1)
plot(x, real(y1), 'r', x, -real(y1), 'r')
hold on
plot(x, y2)
hold off
Поскольку эллипс имеет действительные значения y, а не целую область x, если вы хотите отобразить только реальные части, задайте real (y1) или abs (y1) (даже если Matlab делает это и для вас). Вы также можете отклонить комплексные числа для определенных x при вычислении y1, но для этого вам понадобится цикл for.
Чтобы упростить ситуацию, вы можете проверить функцию fimplicit , ezplot не рекомендуется в соответствии с документацией Matlab. Или, если вы хотите построить эллипс параметрическим способом, fplot также будет работать.
Другой (более классический) подход для параметрического построения дается здесь уже , тогда вам не нужны никакие другие функции, кроме тех, которые вы уже используете. Я думаю, что это самый простой и изящный способ построения эллипса.