2014 dxdy logo

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

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


Правила форума


В этом разделе нельзя создавать новые темы.



Начать новую тему Ответить на тему
 
 вопрос из практики теоретикам
Сообщение16.09.2010, 11:27 


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

 Профиль  
                  
 
 Re: вопрос из практики теоретикам
Сообщение16.09.2010, 11:52 
Заслуженный участник
Аватара пользователя


13/08/08
14495
Указанный Вами приём хорошо работает, когда надо просуммировать элементы из третьего диапазона, удовлетворяющих набору условий и когда желательно наглядно представлять распределение в ряду этих элементов по каждому условию отдельно. Хотя требует создания нескольких параллельных массивов.

Фактически Вы суммируете те элементы третьего диапазона для которых выполняются оба условия. Это можно сделать и с помощью формулы суммирования с проверкой внутри цикла суммирования: формула 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 


28/08/10
36
уважаемый 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 
Заслуженный участник
Аватара пользователя


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

 Профиль  
                  
 
 Re: вопрос из практики теоретикам
Сообщение16.09.2010, 16:25 


28/08/10
36
у меня похоже затруднение в том, чтобы сформулировать вопрос.
попробую еще раз.
понятно, что результат формулы рассчитывается следующим образом
$ 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 
Заслуженный участник
Аватара пользователя


13/08/08
14495
А, ну понятно. Для двух векторов это просто скалярное произведение. ( сумма попарных произведений элементов - матричное произведение лежачего вектора на стоячий той же длины).
То есть Вы хотите для $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 


28/08/10
36
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 
Заслуженный участник
Аватара пользователя


13/08/08
14495
Давайте так обозначим:

$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 


28/08/10
36
спасибо вам уважаемый gris.
теперь я хотя бы знаю формулировку вопроса.
буду искать.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group