2016-03-06 3 views
0

Это мой вопрос назначения:Как создать 3D-график с использованием равномерно распределенных значений?

Создание 3D-графика y = sin(2πx), y = cos(2πx) над [0,π], используя 500 равномерно распределенных значений.

Я не понял вопрос, потому что он говорит, чтобы создать 3D-график y = sin(2*pi*x) и y = cos(2*pi*x) но обе эти функции 2D графики, а не 3D. Поэтому я попросил намеки. Эти подсказки, которые я получил:

Для второго использования функции z = cos(2 pi x) вместо y = cos(2 pi x).

Это все еще не имеет смысла. Должна ли z быть функцией как x, так и y, если мы хотим сделать 3D-график, иначе его можно сделать только в 2D-графике?

Она ответила:

Вы должны создать 3d график, используя X значения, что вам нужно создать с помощью команды LINSPACE, а затем вычислить Y значения (sin) и Z значения (cos) .. участок x, y и z ..

Это то, что я пробовал:

x = linespace(0, 500); 
y = sin(2*pi*x); 
z = cos(2*pi*x); 
figure; 
plot3(x, y, z); 

И это то, что я получил:

enter image description here

Я не уверен, если это правильный способ сделать это, хотя. Я правильно ответил на вопрос?

+0

Что вы сделали, выглядит правильно. – Aziz

+1

Коррекция: 'x' имеет только 100 значений (не 500). Чтобы исправить это, вам нужно использовать 'x = linspace (0, 4, 500);' – Aziz

+0

@Aziz Почему у него только 100 значений? –

ответ

2

Ваше замешательство больше связано с различными способами представления того, что вы хотите построить. То, что вы, вероятно, имеете в виду, это функция с двумя параметрами, которая выглядит как f (x, y) = x + y, обычно определяющая нечто вроде поверхности. Вы получили parametric equation. Этот код делает то же самое, просто переписано в соответствии с обозначениями Википедия использует:

%parametric representation of a spiral 
t = linspace(0, pi, 500); %correct use of linspace, see Felix's answer. 
x = t; 
y = sin(2*pi*t); 
z = cos(2*pi*t); 

Может быть, позвольте мне перефразировать, как бы я задал вопрос:

Создание 3D-графика параметрического уравнения х = t, y = sin (2 * pi * t), z = cos (2 * pi * t) для 500 равномерно разнесенных значений t.

Вы также игнорировать диапазон [0, пи] при вызове linspace, а функция называется linspace, не linespace

+1

Спасибо. Является ли имя функции 'linspace' или' linespace'? Я попробовал 'linepace', и я получил ошибку. –

+0

Да, скопировал это из вашего вопроса, не заметив, это 'linspace'. Также забыл установить правильный диапазон 0, pi, который заметил Феликс. Теперь исправлено в ответе. – Daniel

2

Вы только хотите построить над [0, пи] не более 0 до 500.

x = linespace(0, 500); 

Вы создали вектор из 100 значений (это номер по умолчанию для linspace) между 0 и 500.Что вы хотите сделать:

x = linspace(0, pi, 500); 

Это разделит интервал 0 на pi на 500 значений.

Остальная часть кода была в порядке.

Смежные вопросы