ListPlot3D не работает, но ListPointPlot3D работает (Mathematica) - PullRequest
1 голос
/ 03 сентября 2011

Код ниже работает, но когда я заменяю ListPointPlot3D на ListPlot3D, он не работает!

Это работает:

ListPointPlot3D[Transpose[Table[{i,j, (150*(Sin[((i - 90)*2*3.14)/180]^2)* (Sin[((j - 45)*2*3.14)/180]^2)) - 150}, {i, 0, 270, 5}, {j, 0, 270, 5}]]]

Это не работает:

ListPlot3D[Transpose[Table[{i,j, (150*(Sin[((i - 90)*2*3.14)/180]^2)* (Sin[((j - 45)*2*3.14)/180]^2)) - 150}, {i, 0, 270, 5}, {j, 0, 270, 5}]]]

Есть идеи, почему это не работает ??

1 Ответ

6 голосов
/ 04 сентября 2011

Ваши данные:

In[1]:= Dimensions[
 Transpose[
  Table[{i, 
    j, (150*(Sin[((i - 90)*2*3.14)/180]^2)*(Sin[((j - 45)*2*3.14)/
           180]^2)) - 150}, {i, 0, 270, 5}, {j, 0, 270, 5}]]]

Out[1]= {55, 55, 3}

Но ListPlot3D хочет получить список троек, поэтому Свести 1 уровень:

ListPlot3D[
 Flatten[Transpose[
   Table[{i, 
     j, (150*(Sin[((i - 90)*2*3.14)/180]^2)*(Sin[((j - 45)*2*3.14)/
            180]^2)) - 150}, {i, 0, 270, 5}, {j, 0, 270, 5}]], 1]]

Транспонирование, следовательно, избыточно, так что это будет делать:

ListPlot3D[
 Flatten[Table[{i, 
    j, (150*(Sin[((i - 90)*2*3.14)/180]^2)*(Sin[((j - 45)*2*3.14)/
           180]^2)) - 150}, {i, 0, 270, 5}, {j, 0, 270, 5}], 1]]

Между тем, для этого примера, как насчет Plot3D вместо:

Plot3D[(150*(Sin[((i - 90)*2*3.14)/180]^2)*(Sin[((j - 45)*2*3.14)/
        180]^2)) - 150, {i, 0, 270}, {j, 0, 270}]
...