2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 вопрос из практики теоретикам
Сообщение16.09.2010, 11:27 
здравствуйте.
помогите разобраться пжлста.
в MS Excel есть такая прекрасная формула СУММПРОИЗВ().
она может перемножить несколько массивов ячеек и сложить результаты.
например
=СУММПРОИЗВ((ДИАПАЗОН_1=УСЛОВИЕ_1)*(ДИАПАЗОН_2=УСЛОВИЕ_2)*(ДИАПАЗОН_3))
в первых скобках (я так понял) формируется матрица столбец, в которой элементы равны 1 если условие выполняется , равны 0 если не выполняется.
во вторых скобках то же самое.
потом производится умножение этих трех этих матриц и суммирование элементов.
ВОПРОС - как это можно описать с помощью формулы?
знаний не хватает чтобы увязять суммирование и проверку условия на истинность.

 
 
 
 Re: вопрос из практики теоретикам
Сообщение16.09.2010, 11:52 
Аватара пользователя
Указанный Вами приём хорошо работает, когда надо просуммировать элементы из третьего диапазона, удовлетворяющих набору условий и когда желательно наглядно представлять распределение в ряду этих элементов по каждому условию отдельно. Хотя требует создания нескольких параллельных массивов.

Фактически Вы суммируете те элементы третьего диапазона для которых выполняются оба условия. Это можно сделать и с помощью формулы суммирования с проверкой внутри цикла суммирования: формула SUMIFS

Например, первый столбец содержит результаты каких-то измерений.
Во втором стоит индикатор того, что число из первого столбца в той же строке меньше 4 (или меньше числа из какой-то ячейки): B1=IF(A1<4;1;0)
В третьем стоит индикатор того, что число из первого столбца в той же строке больше 2 (или больше числа из какой-то ячейки): С1=IF(A1>2;1;0)
SUMPRODUCT(A:B:C) просуммирует числа из A, большее двух, но меньшие 4.
Немного искусственный приём, но когда много условий и их приходится постоянно варьировать и изображать наглядно, то это работает.

А можно просуммировать и так: A5=SUMIFS(A1:A4;A1:A4;"<4";A1:A4;">2")

Упс. нужна же теоретическая формула. Типа $\sum\limits_{2<a_k<4}a_k$

 
 
 
 Re: вопрос из практики теоретикам
Сообщение16.09.2010, 15:05 
уважаемый gris.
спасибо за Ваш ответ, однако разрешите мне кое что прояснить.
я знаю как работает формула СУММПРОИЗВ(). вы совершенно правы, что тоже самое можно сделать с помощью формулы SUMIFS (или СУММЕСЛИ).
в версии 2003 года у этой функции было ограничение на количество условий (кажется 8) поэтому её нельзя было использовать там, гле условий больше 8.
в версии 2007 года появилась функция СУММЕСЛИМНОГО. в ней это ограничение значительно изменено.
короче говоря один и тоже результат можно получить используя разные формулы,я просто привык уже формулой СУММПРОИЗВ() пользоваться.
если вернуться к формуле СУММПРОИЗВ().
вот такой пример. есть таблица. в первом столбце наименования машин. во втором наименования городов. в третьем численные значения.
стоит задача просуммировать численные значения для определенного типа машин и определенного города. решается это с помощью формулы.
=СУММПРОИЗВ((ДИАПАЗОН_1=УСЛОВИЕ_1)*(ДИАПАЗОН_2=УСЛОВИЕ_2)*(ДИАПАЗОН_3))
1-результат этого (ДИАПАЗОН_1=УСЛОВИЕ_1) вектор, который состоит из 1 и 0. 1 - если соответствует условия, 0 - соответственно не соответствует.
2-результат этого (ДИАПАЗОН_2=УСЛОВИЕ_2) тоже самое.
Что происходит дальше? Может быть используется бинарная логика? 0+0=0, 1+1=1, и так далее.
Используя эту логику в последнем векторе значения там где 0, тоже становятся нулевыми?
А потом просто суммирование элементов вектора.
$$\sum\limits_{i=1}^n a_i  $$
где n - количество элементов вектора.
Как написать математически 1 пункт?
У Брайсона "Прикладная теория оптимального управления" нашел пример умножения двух векторов, один из которых транспонированный, но это наверное не то.короче я думал что можно что вроде
$$\sum\limits_{i=1}^I   \sum\limits_{j=1}^J  \sum\limits_{r=1}^R a_i_j_r$$

 
 
 
 Re: вопрос из практики теоретикам
Сообщение16.09.2010, 15:49 
Аватара пользователя
Я пока не понял, в чём затруднение?
"Если" выставляет в ячейку что угодно по Вашему выбору, то есть числовые 1 и 0, которые и умножаются как числа.
Произведение равно нулю, если хотя бы один из сомножителей равен 0. Будут суммироваться только элементы, удовлетворяющие и первому, и второму условиям.
Можно выставлять наоборот для некоторых условий: 0, если выполняется и 1, если не выполняется.

 
 
 
 Re: вопрос из практики теоретикам
Сообщение16.09.2010, 16:25 
у меня похоже затруднение в том, чтобы сформулировать вопрос.
попробую еще раз.
понятно, что результат формулы рассчитывается следующим образом
$ x=\sum\limits_{n=1}^N (...)  $
вопрос в том, что писать в скобках?
вариант ответа - что то, что похоже на перемножение (сложение?) векторов, элементы которых в последствии суммируются.
вопрос - как это можно записать так, чтобы нормальный человек не понял (математическими символами) ?
может что то вроде
$$ \ \left( \begin{array}{ccc} x_{1} \\ ...\\ x_{n}\\ ... \\ x_{N}   \end{array} \right) * \ \left( \begin{array}{ccc} x_{1} \\ ...\\ x_{r}\\ ... \\ x_{R}   \end{array} \right)*\ \left( \begin{array}{ccc} x_{1} \\ ...\\ x_{i}\\ ... \\ x_{I}   \end{array} \right)$$

 
 
 
 Re: вопрос из практики теоретикам
Сообщение16.09.2010, 16:56 
Аватара пользователя
А, ну понятно. Для двух векторов это просто скалярное произведение. ( сумма попарных произведений элементов - матричное произведение лежачего вектора на стоячий той же длины).
То есть Вы хотите для $m$ векторов одной длины $\vec x_i=(x_{i1};x_{i2};...x_{in})$ как-то обозначить выражение

$F(\vec x_1,...\vec x_m)=\sum\limits_{j=1}^n\prod\limits_{i=1}^m x_{ij}$.

Вопрос: как называется и обозначается операция взятия суммы покомпонентных произведений координат (элементов) нескольких векторов.

 
 
 
 Re: вопрос из практики теоретикам
Сообщение16.09.2010, 18:54 
1- хотел добавить что моя запись некорректна была
$$ \ \left( \begin{array}{ccc} x_{1} \\ ...\\ x_{n}\\ ... \\ x_{N}   \end{array} \right) * \ \left( \begin{array}{ccc} x_{1} \\ ...\\ x_{r}\\ ... \\ x_{R}   \end{array} \right)*\ \left( \begin{array}{ccc} x_{1} \\ ...\\ x_{i}\\ ... \\ x_{I}   \end{array} \right)$$
надо наверное так
$$ \ \left( \begin{array}{ccc} a_{1} \\ ...\\ a_{n}\\ ... \\ a_{N}   \end{array} \right) * \ \left( \begin{array}{ccc} b_{1} \\ ...\\ b_{n}\\ ... \\ b_{N}   \end{array} \right)*\ \left( \begin{array}{ccc} c_{1} \\ ...\\ c_{n}\\ ... \\ c_{N}   \end{array} \right)$$

-- Чт сен 16, 2010 19:55:20 --

вектора должны быть одной длины, вы правы

-- Чт сен 16, 2010 19:56:45 --

Для двух векторов это просто скалярное произведение. ( сумма попарных произведений элементов - матричное произведение лежачего вектора на стоячий той же длины).

А для трех и более?

-- Чт сен 16, 2010 20:05:14 --

Вопрос: как называется и обозначается операция взятия суммы покомпонентных произведений координат (элементов) нескольких векторов.
В точку! Осталось ответ найти на этот вопрос.
Смущает меня ваше выражение.
$\prod\limits_{i=1}^m x_{ij}$
Что суммируется?

-- Чт сен 16, 2010 20:18:56 --

может так
$$ x_{_z_w_s}= \ \left( \begin{array}{ccc} a_{1} \\ ...\\ a_{n}\\ ... \\ a_{N}   \end{array} \right)_{a_{n}=z} * \ \left( \begin{array}{ccc} b_{1} \\ ...\\ b_{n}\\ ... \\ b_{N}   \end{array} \right)_{b_{n}=w}*\ \left( \begin{array}{ccc} c_{1} \\ ...\\ c_{n}\\ ... \\ c_{N}   \end{array} \right)_{c_{n}=s}$$

 
 
 
 Re: вопрос из практики теоретикам
Сообщение16.09.2010, 19:21 
Аватара пользователя
Давайте так обозначим:

$F(\vec x_1,...\vec x_m)=\sum\limits_{j=1}^n\prod\limits_{i=1}^m (x_i)_j}$.

То есть перемножаются первые координаты всех $m$ вектров, потом вторые, так до последних n-ных. Потом эти n произведений складываются.

Но вот, к сожалению, я не знаю, как называется эта операция. Ну типа как в матрице перемножить элементы каждой строки, а потом сложить.

Вы обозначили звёздочкой покомпонентное умножение векторов. Но есть ли такая операция? В линейной алгебре точно нет. Только умножение вектора на число и сложение векторов.

 
 
 
 Re: вопрос из практики теоретикам
Сообщение16.09.2010, 21:59 
спасибо вам уважаемый gris.
теперь я хотя бы знаю формулировку вопроса.
буду искать.

 
 
 [ Сообщений: 9 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group