Как мне добавить значения одной таблицы в другую в Mathematica? - PullRequest
0 голосов
/ 21 сентября 2011

Я создал таблицу значений, известную как «значение1». «Значение1» - это не что иное, как значения z-координаты, в качестве альтернативы можно назвать «зона». Эти значения зависят от координаты x и координаты y, заданных соответственно как «x» и «y».

Код указан ниже

value1 = Table[{(10*(Cos[((x - 75)*2*3.14159)/
      200]^2)*(Cos[((y - 75)*2*3.14159)/200]^2)) + 
20}, {y, 0, 20, 5}, {x, 0, 20, 5}]

Вывод «value1» или «zone» равен

{{22.5}, {21.7274}, {21.0305}, {20.4775}, {20.1224}}, {{21.7274}, and so on

У меня есть другая таблица значений, известная как «значение 2». Эта таблица также дает мне другое значение z-координаты, которое можно альтернативно назвать «ztwo». Эти значения также зависят от координат x и y, определенных «x» и «y» соответственно.

Обратите внимание, что значение z генерируется определенным выражением, приведенным ниже

(((70 - ((10*(Cos[((x - 75)*2*3.14159)/
             200]^2)*(Cos[((y - 75)*2*3.14159)/200]^2)) + 
       20))*0.3333))

Я использовал приведенное выше выражение в таблице ниже для генерации значений "ztwo"

value2 = Table[{x,y, (((70 - ((10*(Cos[((x - 75)*2*3.14159)/
             200]^2)*(Cos[((y - 75)*2*3.14159)/200]^2)) + 
       20))*0.3333))}, {y, 0, 20, 5}, {x, 0, 20, 5}]

Выход "value2"

{{{0, 0, 15.8318}, {5, 0, 16.0892}, {10, 0, 16.3215}, {15, 0, 16.5059}, {20, 0, 16.6242}}, {{0, 5, 16.0892}, {5, 5,16.2672}, {10, 5, 16.4277}, {15, 5, 16.555},and so on

Как вы можете видеть сверху, "value2" имеет вид

{x1,y1,ztwo1},{x2,y2,ztwo2},{x3,y3,ztwo3}..and so on

Я хочу создать таблицу значений, известную как «значение3», которая в основном представляет собой сложение значений z от «значения 1», известного нам как «зона», ТОЛЬКО до значений z «значения2», известных нам как «ztwo msgstr "чтобы получить таблицу" value3 ". В таблице "value3" изменяются только значения z, но это ДОЛЖНО быть выражено, как показано ниже

{0,0,38.3317},{5,0,37.5592},{10,0,36.8623} and so on

Explanation: How do I get the above??
this is the "zone" values:
{{22.5}, {21.7274}, {21.0305}, {20.4775}, {20.1224}}, {{21.7274}, and so on

Below is "ztwo" values but expressed in{x,y,z} format

{{{0, 0, 15.8318}, {5, 0, 16.0892}, {10, 0, 16.3215}, {15, 0, 16.5059},    
{20,0,16.6242}}, {{0, 5, 16.0892} and so on

Now I want a table of "value 3" whose z values change since it is the addition of     
corresponding z co-ordinate values from table "value1" and table "value2"

 {0,0,15.8318+22.5},{5,0,16.0892+21.7274},{10,0,16.3215+36.8623} and so on

Which will lead to the desired, ideal output like this:

{0,0,38.3317},{5,0,37.5592},{10,0,36.8623} and so on

Вопрос Как мне создать таблицу «Value3», которая даст мне желаемый результат, добавив соответствующие значения z из таблицы «value1» в таблицу «value2»

1 Ответ

2 голосов
/ 21 сентября 2011

В вашем коде есть небольшая опечатка ... в определении value2 должна быть запятая между y и (((70 - ..., чтобы получить результат, который вы опубликовали ниже.

Исправляя это, вы можете сделать следующее, чтобы получить свой результат:

value3 = value2;
value3[[All, All, 3]] += value1[[All, All, 1]];

РЕДАКТИРОВАТЬ:

Приведенный выше код добавляет сложение так, как вы хотите,Я думаю, что путаница заключается в том, что вы хотите, чтобы каждая из трех координат была списком, а не матрицей.Для этого вам просто нужно Flatten список в Level 1.

Flatten[value3, 1]
Out[1]= {{0, 0, 38.3317}, {5, 0, 37.8167}, {10, 0, 37.3521}, {15, 0, 
  36.9833}, {20, 0, 36.7466}, {0, 5, 37.8167}, {5, 5, 37.4608}, {10, 
  5, 37.1397}, {15, 5, 36.885}, {20, 5, 36.7214}, {0, 10, 
  37.3521}, {5, 10, 37.1397}, {10, 10, 36.9482}, {15, 10, 
  36.7962}, {20, 10, 36.6986}, {0, 15, 36.9833}, {5, 15, 36.885}, {10,
   15, 36.7962}, {15, 15, 36.7258}, {20, 15, 36.6806}, {0, 20, 
  36.7466}, {5, 20, 36.7214}, {10, 20, 36.6986}, {15, 20, 
  36.6806}, {20, 20, 36.669}}
...