2012-10-09 2 views
0

Мне хотелось бы свернуть (чтобы суммировать) MapThread по двум спискам, используя функцию из трех переменных, где третья переменная постоянна над Mapthread. Я хотел бы сделать что-то вроде этого:MapThread в математике с одной константой константы

nList = {}; For[i = 0, i <= Length[N0], i++, nSum = 0; Fold[Plus,0,MapThread[n,T,M,N0[i]]]]; 

где п таково, что п [Траектория m_, n0_] Я мог бы сделать список N0' длины [T] и заполнить его с N0 [я] но это немного взломать. Любая помощь приветствуется!

+0

Я хочу быть полезным, но этот труд трудно прочитать. Не могли бы вы попытаться сделать его более читаемым и дать простой пример ввода и вывода, который вы хотите? –

ответ

0

Ваш пример синтаксически неверен; MapThread принимает только 3 аргумента.

Вместо петли For попробовать

[email protected]@MapThread[n[#1,#2,N0]&,{T,M}] 
  1. Idiom [email protected]@ (...) производит сумма данного списка (это относится Plus к списку)
  2. Mathematica является очень сильным с лямбда выражения, т. е. безымянные функции. Для удобства у него есть очень короткие обозначения для него: каждый аргумент, который вы заменяете заполнителем #1, #2, #3, ... и после тела функции, которую вы обозначили, является безымянной функцией с знаком &. Эквивалентно вы могли бы написать Function[{t,m},n[t,m,N0]] вместо n[#1,#2,No]&. См. Справку для Function.