Как считать комплексные числа в excel

Обновлено: 07.07.2024

adjust0.jpg

Не очень частый, но и не экзотический случай. На моих тренингах такой вопрос задавали не один и не два раза :) Суть в том, что мы имеем конечный набор каких-то чисел, из которых надо выбрать те, что дадут в сумме заданное значение.

В реальной жизни эта задача может выглядеть по-разному.

  • Например, мы выгрузили из интернет-банка все платежи, которые поступили на наш счет за последний месяц. Один из клиентов разбивает сумму своего платежа на несколько отдельных счетов и платит частями. Мы знаем общую сумму оплаты и количество счетов, но не знаем их сумм. Надо подобрать те суммы в истории платежей, которые дадут в общем заданное значение.
  • У нас есть несколько рулонов стали (линолеума, бумаги. ), из которых надо подобрать под заказ те, что дадут заданную длину.
  • Блэкджек или в народе "очко". Надо набрать карты суммарной стоимостью максимально близкой к 21 баллу, но не превысить этот порог.

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

Давайте рассмотрим несколько способов решения такой задачи в Excel.

Способ 1. Надстройка Поиск решения (Solver)

Эта надстройка входит в стандартный набор пакета Microsoft Office вместе с Excel и предназначена, в общем случае, для решения линейных и нелинейных задач оптимизации при наличии списка ограничений. Чтобы ее подключить, необходимо:

  • в Excel 2007 и новее зайти Файл - Параметры Excel - Надстройки - Перейти (File - Excel Options - Add-ins - Go)
  • в Excel 2003 и старше - открыть меню Сервис - Надстройки (Tools - Add-ins)

и установить соответствующий флажок. Тогда на вкладке или в меню Данные (Data) появится нужная нам команда.

Чтобы использовать надстройку Поиск решения для нашей задачи необходимо будет слегка модернизировать наш пример, добавив к списку подбираемых сумм несколько вспомогательных ячеек и формул:

adjust1.jpg

  • Диапазон A1:A20 содержит наши числа, из которых мы будем выбирать нужные, чтобы "вписаться" в заданную сумму.
  • Диапазон В1:B20 будет своего рода набором переключателей, т.е. будет содержать нули или единички, показывая, отбираем мы данное число в выборку или нет.
  • В ячейке E2 стоит обычная автосумма всех единичек по столбцу B, подсчитывающая кол-во выбранных чисел.
  • В ячейке E3 с помощью функции СУММПРОИЗВ (SUMPRODUCT) считается сумма попарных произведений ячеек из столбцов А и B (то есть A1*B1+A2*B2+A3*B3+. ). Фактически, здесь подсчитывается сумма чисел из столбца А, отобранных единичками из столбца В.
  • В розовую ячейку E4 пользователь вводит желаемую сумму для подбора.
  • В ячейке E5 вычисляется абсолютное по модулю значение погрешности подбора с целью ее будущей минимизации.
  • Все желтых ячейках Е8:E17 хотелось бы получить список отобранных чисел, т.е. тех чисел из столбца А, напротив которых в столбце В есть единички. Для этого необходимо выделить сразу все (!) желтые ячейки и в них ввести вот такую формулу массива:

=ЕСЛИОШИБКА(ИНДЕКС($A$1:$A$20;НАИМЕНЬШИЙ(ЕСЛИ(B1:B20=1;СТРОКА(B1:B20);"");СТРОКА()-СТРОКА($E$8)+1));"")

=IFERROR(INDEX($A$1:$A$20;SMALL(IF(B1:B20=1;ROW(B1:B20);"");ROW()-ROW($E$8)+1));"")

После ввода формулы ее необходимо ввести не как обычную формулу, а как формулу массива, т.е. нажать не Enter, а Ctrl+Shift+Enter. Похожая формула используется в примере о ВПР, выдающей сразу все найденные значения (а не только первое).

Теперь перейдем на вкладку (или в меню) Данные и запустим инструмент Поиск решения (Data - Solver):

adjust4.jpg

В открывшемся окне необходимо:

  • Задать как целевую функцию (Target Cell) - ячейку вычисления погрешности подбора E5. Чуть ниже выбрать опцию - Минимум, т.к. мы хотим подобрать числа под заданную сумму с минимальной (а лучше даже нулевой) погрешностью.
  • В качестве изменяемых ячеек переменных (Changing cells) задать диапазон столбца переключателей B1:B20.
  • С помощью кнопки Добавить (Add) создать дополнительное условие на то, что ячейки диапазона B1:B20 должны быть бинарными (т.е. содержать только 0 или 1):

После ввода всех параметров и ограничений запускаем процесс подбора кнопкой Найти решение (Solve). Процесс подбора занимает от нескольких секунд до нескольких минут (в тяжелых случаях) и заканчивается появлением следующего окна:

adjust3.jpg

Теперь можно либо оставить найденное решение подбора (Сохранить найденное решение), либо откатиться к прежним значениям (Восстановить исходные значения).

Необходимо отметить, что для такого класса задач существует не одно, а целое множество решений, особенно, если не приравнивать жестко погрешность к нулю. Поэтому запуск Поиска решения с разными начальными данными (т.е. разными комбинациями 0 и 1 в столбце В) может приводить к разным наборам чисел в выборках в пределах заданных ограничений. Так что имеет смысл прогнать эту процедуру несколько раз, произвольно изменяя переключатели в столбце В.

Найденные комбинации можно сохранять виде сценариев (кнопка Сохранить сценарий), чтобы вернуться к нем позднее с помощью команды Данные - Анализ "что-если" - Диспетчер сценариев (Data - What-If Analysis - Scenario Manager):

adjust7.jpg

И весьма удобно будет вывести все найденные решения, сохраненные в виде сценариев, в одной сравнительной таблице с помощью кнопки Отчет (Summary):

adjust8.jpg

Способ 2. Макрос подбора

В этом способе всю работу делает макрос, который тупо перебирает случайные комбинации чисел, пока не наткнется на нужную сумму в пределах разрешенной погрешности. Добавлять столбец с нулями и единичками и формулы в этом случае не нужно.

adjust9.jpg

Для использования макроса нажмите сочетание Alt+F11, в открывшемся окне редактора Visual Basic вставьте новый модуль через меню Insert - Module и скопируйте туда этот код:

Аналогично первому способу, запуская макрос несколько раз, можно получать разные наборы подходящих чисел.

Окно открывается после щелчка на пиктограмме с изображением функции слева от строки формул (рис. 6.13) или на пиктограмме вставки функции в группе Библиотека функций вкладки Формулы (рис. 6.14).

Рис. 6.12. В окне мастера вставки функции выбрана категория инженерных функций

Рис. 6.12. В окне мастера вставки функции выбрана категория инженерных функций

Главная Вставка Разметка страницы Формулы Данные

2 Автосумма т Логическиет ^

Недавно использовались w Текстовые ' j\g т ^ ^ ^ Определенные

15? Финансовые - Цд1 Дата и время - [Црт имена т

Библиотека функций 11

Вставить функцию CShTft+F3)

Изменение формулы в текущей ячейке посредством выбора функций и изменения аргументов.

Для получения дополнительных сведений нажмите клавишу F1.

Рис. 6.13. Щелчок на пиктограмме вставки функции слева от строки формул

? Автосумма т Логические т ^

Определенные ЕЦРТ именат

?уг Недавно использовались

^ Текстовые т ?9 Финансовые т j^f Дата и время

Вставить функцию (Shift*F3)

Изменение формулы в текущей ячейке посредством выбора функций и изменения аргументов,

Для получения дополнительных сведении нажмите клавишу F1,

6.14. Щелчок на пиктограмме вставки функции в группе Библиотека функций вкладки Формулы

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

Комплексные числа используются достаточно часто при решении самых разнообразных задач. Нередко задача сама по себе не содержит явного указания на комплексные величины, однако формальный переход к множеству комплексных чисел упрощает задачу. Примером могут служить задачи электротехники.

В Excel в качестве обозначения для мнимой единицы i (напомним, і2 = -1) по выбору пользователя могут использоваться символы i или j. По умолчанию используется символ i.

Как известно, комплексное число z может быть представлено в алгебраической форме z = x + iy или тригонометрической форме z =| z | ехр(іф) z | (cos(q>) + i sin(q>)), где использована формула Эйлера

ехр(іф) = cos(ф) + іsin^). Через | z \=yjx2 + y2 обозначен модуль комплексного

числа, а через ф обозначен аргумент комплексного числа. Для аргумента справедливы соотношения cos^) = xj| z | и sin(ф) = у/1 z |. Этими соотношениями аргумент однозначно не определяется. Обычно принимается соглашение, в соответствии с которым аргумент 0



= Мир MS Excel/Комплексные числа - Мир MS Excel

Войти через uID

Войти через uID

Всем привет. С наступившими.
Люди добрые, подскажите как выполнить решение примера (см. вложение) посредством функций Excel.
Я так понимаю нужно использовать =МНИМ.*, но не въеду как
Помогите советом, пожалуйста. Всем привет. С наступившими.
Люди добрые, подскажите как выполнить решение примера (см. вложение) посредством функций Excel.
Я так понимаю нужно использовать =МНИМ.*, но не въеду как
Помогите советом, пожалуйста. light26 Во вложении пример того как я не въеду в то как использовать = МНИМ.* ))) Во вложении пример того как я не въеду в то как использовать = МНИМ.* ))) light26 А как показательная форма КЧ вычисляется? я уже забыл, по нет лазить неохота. А как показательная форма КЧ вычисляется? я уже забыл, по нет лазить неохота. Michael_S А как показательная форма КЧ вычисляется? я уже забыл, по нет лазить неохота.
Да у меня тоже склероз )))
После того как сессия закончилась сразу все забыл ))))
Для решения пользовался онлайн формой А как показательная форма КЧ вычисляется? я уже забыл, по нет лазить неохота.
Да у меня тоже склероз )))
После того как сессия закончилась сразу все забыл ))))
Для решения пользовался онлайн формой light26

Я не волшебник. Я только учусь

А как показательная форма КЧ вычисляется? я уже забыл, по нет лазить неохота.
Да у меня тоже склероз )))
После того как сессия закончилась сразу все забыл ))))
Для решения пользовался онлайн формой Автор - light26
Дата добавления - 11.01.2013 в 20:59 Вообще, имхо, там ошибка в вычислениях. В знаменателе должна быть
а не разность. А уж как потом перевести. в нете посотрел - вроде сначала в тригономерическую форму, потом в показательную. но это долго и мне не надо. Вообще, имхо, там ошибка в вычислениях. В знаменателе должна быть
а не разность. А уж как потом перевести. в нете посотрел - вроде сначала в тригономерическую форму, потом в показательную. но это долго и мне не надо. Michael_S а не разность. А уж как потом перевести. в нете посотрел - вроде сначала в тригономерическую форму, потом в показательную. но это долго и мне не надо. Автор - Michael_S
Дата добавления - 11.01.2013 в 21:02
Да, мой косяк. Но это суть дела не меняет.
Вопрос остается открытым: как перевести комплексное число в показательное?
Да, мой косяк. Но это суть дела не меняет.
Вопрос остается открытым: как перевести комплексное число в показательное? light26
Да, мой косяк. Но это суть дела не меняет.
Вопрос остается открытым: как перевести комплексное число в показательное? Автор - light26
Дата добавления - 11.01.2013 в 21:45


Привет, Саш.
Википедию я уже прочитал
Мне интересно как это в excele реализовать
Спасибо за помощь. Я, значит, не те функции использовал

И еще просьба подскажи можно ли тут

сделать так, чтобы минус был перед j, а не перед результатом? я хотел через =ЕСЛИ,

но тогда результат придется умножать на -1 и использовать в дальнейшем при расчетах будет нельзя.

Привет, Саш.
Википедию я уже прочитал
Мне интересно как это в excele реализовать
Спасибо за помощь. Я, значит, не те функции использовал

И еще просьба подскажи можно ли тут

сделать так, чтобы минус был перед j, а не перед результатом? я хотел через =ЕСЛИ,

но тогда результат придется умножать на -1 и использовать в дальнейшем при расчетах будет нельзя. light26

Я не волшебник. Я только учусь

И еще просьба подскажи можно ли тут

сделать так, чтобы минус был перед j, а не перед результатом? я хотел через =ЕСЛИ,

но тогда результат придется умножать на -1 и использовать в дальнейшем при расчетах будет нельзя. Автор - light26
Дата добавления - 11.01.2013 в 22:44

Читайте также: