Нарисовать график функции с двумя переменными

Рейтинг: 0Ответов: 1Опубликовано: 27.12.2014

Задали нарисовать в matlab такой график:

alt text

Я не понимаю, дано ограничения для переменной x. А в функции только x0, x1. Ну я подумал, наверное, ограничение имеется в виду на обе переменные, сделал такой код:

Xmin(1) = -5;
Xmax(1) = 5;

Xmin(2) = -5;
Xmax(2) = 5;
dx1 = (Xmax(1)-Xmin(1))/49;
dx2 = (Xmax(2)-Xmin(2))/49;
x1 = Xmin(1):dx1:Xmax(1);
x2 = Xmin(2):dx2:Xmax(2);
n1 = length(x1);
n2 = length(x2);

    for i=1:1:n1
        for j=1:1:n2
            Y(i,j) = x1(i)^4-4*x1(i)^3+4*x1(i)^2+x2(i)^2;
        end
    end

surfc(x1,x2,Y), grid on;
xlabel('x1');
ylabel('x2');
zlabel('f(x)');

Но мне кажется, я всё-таки неправильно понял, что от меня хочет преподаватель. И протянул, нету возможности спросить, в понедельник сдавать нужно. Помогите, пожалуйста, правильно ли я нарисовал график функции, предоставленной на скрине?

Ответы

▲ 2Принят

В целом похоже на правду, но вы явно запутались с индексами - у вас j не используется для переменных. А вообще я бы убрал циклы, а вместо них сгенерил прямоугольную сетку по двум координатам с помощью [X1,X2] = meshgrid(x1, x2); и тогда вашу функцию можно посчитать просто как Z=X1.^4+4*X1.^3+4*X1.^2+X2.^2 без всяких циклов, поверьте, оно в матлабе работает быстрее, да и преподаватели обычно именно этого хотят