Странный вывод функции Mathematica - PullRequest
2 голосов
/ 26 октября 2011

Привет Я не могу понять вывод следующей функции.

ListPointPlot3D[Table[Sin[x^2 + y],
                      {x, 0, 3, 0.15}, {y, 0, 3, 0.15}],
                      AxesLabel -> {"X axis", "Y axis", "Z axis"}
               ]

enter image description here

Я сказал X и Y, что они находятся в интервале [0,3] Но диаграмма показывает совершенно другой диапазон для этих переменных, примерно от [0,21].

Как это случилось?

Ответы [ 4 ]

7 голосов
/ 26 октября 2011

Вы дали ListPointPlot3D матрицу значений.Каждое значение интерпретируется как «высота» (z-координата) и матричные индексы значений как координаты x и y.

Возможно, вы хотите

ListPointPlot3D[Join @@ Table[{x, y, Sin[x^2 + y]}, {x, 0, 3, 0.15}, {y, 0, 3, 0.15}]]

Mathematica graphics

или

Plot3D[Sin[x^2 + y], {x, 0, 3}, {y, 0, 3}]

Mathematica graphics

Также ознакомьтесь с документами по опции Mesh Plot3D.

5 голосов
/ 26 октября 2011

Вы можете использовать опцию DataRange, чтобы указать область действия осей:

ListPointPlot3D[Table[Sin[x^2 + y], {y, 0, 3, 0.15}, {x, 0, 3, 0.15}],
   AxesLabel -> {"X axis", "Y axis", "Z axis"}, 
   DataRange -> {{0, 3}, {0, 3}}]

Mathematica graphics

Обратите внимание, что я также переключил итераторы x и y в Table, потому что Table[..., {x, ..}, {y, ...}] соответствует Table[Table[..., {y, ...}], {x, ...}]. (Вы можете убедиться, что это правильно, изменив один из 0.15 размеров шагов на 1.)

4 голосов
/ 26 октября 2011

Все функции построения 2D List* принимают List как {{x1,y1},{x2,y2},...} в качестве первого аргумента, и это правильно построит точки x и y. Однако, если вы указываете только один набор координат как {y1,y2,...}, он использует положение каждого из этих y_i s для отметок x. Аналогично для всех функций печати List*3D.

Таким образом, в вашем случае есть только одна переменная, переменная z, и она просто использует индекс отдельных суб List s для тиков x и y. Попробуйте вместо этого:

ListPointPlot3D[
 Flatten[Table[{x, y, Sin[x^2 + y]}, {x, 0, 3, 0.15}, {y, 0, 3, 
    0.15}], 1], AxesLabel -> {"X axis", "Y axis", "Z axis"}]

Mathematica graphics

1 голос
/ 26 октября 2011

Похоже, что каждый «образец» не является фактическим значением x / y, так как между 0 и 3 есть 20 0,15, и это размер шага вашей таблицы

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