SBK Пользователь Сообщений: 9 |
Сразу сообщаю: я не программист. Только пользователь excel. Сейчас передо мной стала задача. Есть два выражения. В них входит трансцендентная переменная. В выражения входят и другие параметры. Одни из них постоянные. Другие образуют таблицу со ссылкой на массив, изменяющий формулы. До сих пор я пользовался функцией «подобрать параметр» в каждой строке. Сейчас у меня огромное количество строк (более тысячи). Можно ли автоматизировать данную функцию таким образом, чтобы она пересчитывала весь массив, подбирая параметр для каждой строки по движению курсора, как это происходит при вычислении обычных функций, а потом сама пересчитывала при изменении постоянных? Спасибо за помощь, Сергей |
_Igor_61 Пользователь Сообщений: 3007 |
#2 18.08.2017 21:58:59 Здравствуйте, Сергей!
Какие?
Что она из себя представляет и где она?
Какие?
Какие именно?
Какие и какую таблицу?
Наверное, можно, если знать ответы на все вопросы и увидеть файл-пример |
||||||||||||
SBK Пользователь Сообщений: 9 |
Прикладываю файл. Прикрепленные файлы
|
AndreTM Пользователь Сообщений: 454 |
А расскажите-ка про решаемую задачу… Сдается мне, что вы подбором решаете уравнения, которые имеют аналитическое решение. В примере показаны серым цветом ваши только нужные исходные данные, салатовым — новые формулы. Изменено: AndreTM — 19.08.2017 03:30:08 |
SBK Пользователь Сообщений: 9 |
#5 19.08.2017 08:09:53
Задача не аналитическая. Я просто на бегу сформировал вчера вечером файл и сделал в нём неправильную ссылку. В столбце F под косинусом стоит ссылка на столбец D. Так что уравнение трансцендентное. Никуда не деться от подбора параметров. И принципом малости оперировать тоже не получается, чтобы свести решение к приближённому аналитическому. Сама задача о полях с запаздыванием. Это одна из простейших, начальных задач, на которых мне нужно учиться, чтобы выйти на реальные сложные задачи взаимодействия в динамических полях, хотя и к этому уровню шёл немало. Спасибо за то, что возитесь со мной. Сейчас нашёл функцию подбора параметров в надстройке, но как его вставить чтобы это работало? Прикрепленные файлы
|
||
AndreTM Пользователь Сообщений: 454 |
#6 19.08.2017 15:47:45 Еще раз.
Если опять посмотреть на ваше «приравнивание» a(c-Δc) = d, то мы будем иметь уравнение вида или, если исходить из условий, что (a, b, c, L, R) > 0, (c-Δc) > 0 (кстати, -pi/2 < β < pi/2) левая часть — синусоида, правая — парабола (с вершиной над Ox и ветвями вниз), графически решается на раз, и можно решения найти аналитически, особенно уточнив ограничения для констант. ———————————————————— Если по теме — «подбор параметра» можно запускать макросом. То есть просто определить ваш диапазон с данными, и затем циклом перебирать строки, вычисляя значение: Прикрепленные файлы
Изменено: AndreTM — 19.08.2017 16:00:04 |
|
SBK Пользователь Сообщений: 9 |
#7 19.08.2017 17:54:58
Вот это дело! Вы даже не представляете как Вы мне развязали руки. Теперь же с этим макросом я на коне. Когда сделаю, обязательно поделюсь полученным. Поклон до земли за такую нужную и своевременную помощь. |
||
SBK Пользователь Сообщений: 9 |
#8 14.09.2017 09:09:28 Уважаемый AndreTM, извините, что снова беспокою со своими проблемами. У меня была проблема автоматизации подбора параметров для некоторого массива ячеек чтобы
[P]Макрос прекрасно работал на примере, но как только я изменил расположение и размер массива на странице, программка перестала работать. Я уже её и так, и этак, со словами и без слов – не хочет. Нашёл программку на этом же форуме в теме «VBA — подбор параметра для диапазона ячеек» http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=8&TID=18189
В ней хотя бы понятно, как изменять диапазон, что для меня важно, поскольку по ходу задачи диапазоны будут изменяться. Но она тоже не захотела у меня работать. Говорит, что недопустимые назначения в «глобал». У меня excel 2003. Может в этом проблема? НЕ могли бы помочь мне довести макрос до ума. Или показать, что я должен изменять в исходном, Вашем макросе, чтобы работал при изменении диапазонов ячеек, или довести приведенную программку, чтобы она заработала. Огромное спасибо. Изменено: SBK — 14.09.2017 10:14:02 |
||||
SBK Пользователь Сообщений: 9 |
#9 14.09.2017 16:48:35
Это расчёт динамических полей.
Там действительно много параметров. Пример, который я давал вначале, в принципе, отражал задачу, хотя и не в полном объёме, чтобы не морочиться с большими массивами ячеек. Сейчас, когда я начал уже работу с задачей, у меня более 1600 строк. Но задача остаётся чисто для подбора параметре и вручную они прекрасно подбирается для единичных ячеек. Изменено: SBK — 14.09.2017 16:49:50 |
||||
SBK Пользователь Сообщений: 9 |
#10 18.09.2017 15:52:55 Ничего не могу понять. При изменении номеров ячеек макрос перестаёт работать. Прикрепленные файлы
Изменено: SBK — 18.09.2017 15:54:52 |
Здравствуйте!
Возможно ли создать макрос, выполняющий подбор значений? Эту операцию надо проделывать многократно, от того ручками долго. Он категорически не хочет, у меня по крайней мере, записывать значение из необходимой ячейки в буфер обмена, а затем вставлять его в искомое значение. Пробовал создать объект (Dim MyDataObj As New DataObject) затем присвоить ему значение (MyDataObj.SetText (H41)), затем вставить его (MyDataObj.PutInClipboard). Но когда в строке Range(«C49»).GoalSeek Goal:=1473, ChangingCell:=Range(«C42») вместо числа вставляю этот объект, получаю ошибку.
Visual Basic | ||
|
Прошу простить, если что не так оформлено, я во всём этом новичок. Заранее благодарю)
Автоматический подбор параметров расчёта |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
можно будет покрыть все расходы на издательство книги и начинать получать прибыль. Метод GoalSeek (команда «Подбор параметра») позволяет отыскать приводящее к нужному результату значение переменной. Этот метод также можно использовать для анализа функций, решения уравнений. Говоря простым математическим языком, подбор параметра – это средство отыскания решения уравнения с одним неизвестным.
Метод GoalSeek подбирает значение параметра (неизвестной величины), являющееся решением уравнения с одной переменной. Предполагается, что уравнение приведено к виду: правая часть является постоянной, не зависящей от параметра, который входит только в левую часть уравнения.
Синтаксис: Объект. GoalSeek(Goal, ChangingCell)
Аргументы:
Объект Ячейка, в которую введена формула, являющаяся правой частью решаемого уравнения. В этой формуле роль параметра (неизвестной величины) играет ссылка на ячейку, указанную в аргументе ChangingCell
Goal Значение левой части решаемого уравнения, не содержащей параметра
ChangingCell Ссылка на ячейку, отведенную под параметр (неизвестную величину). Значение, введенное в данную ячейку до активизации метода GoalSeek, рассматривается как начальное приближение к искомому корню
Формула, которая использует в качестве аргумента данные, зависящие от ее собственного значения, называется формулой с циклическими ссылками. Иногда такая ситуация возникает в результате какой-нибудь ошибки, однако некоторые задачи требуют для своего решения использования именно циклических ссылок. Для решения подобных задач Excel использует итерации, т.е. повторяющиеся циклические вычисления, выполняемые до тех пор, пока не будет выполнено требуемое условие.
Для поиска решения метод GoalSeek использует метод итераций. Это означает следующее: прежде всего проверяется начальное значение в изменяемой ячейке (ChangingCell), содержащей параметр. Если начальное значение не дает требуемое значение (Goal) целевой функции, производится изменение значения параметра и новое
101
вычисление результата, и так до тех пор, пока не будет отыскано нужное значение параметра (если, конечно, итерации сходятся).
Точность, с которой находится корень и предельно допустимое число итераций, используемых для нахождения корня, устанавливаются свойствами MaxChange и MaxIterations объекта Application. Например, определение корня с точностью до 0,0001 максимум за 1000 итераций устанавливается инструкцией:
With Application
. MaxIterations = 1000
. MaxChange = 0.0001 End With
Пример 1. Создать программу приближенного решения уравнения (2х2+3)(1-sinx)-lnx=2. Результаты вычислений вывести на рабочий лист Excel.
Для решения уравнения используем метод GoalSeek, который вычисляет корень, используя метод последовательных приближений, результат выполнения которого зависит от начального приближения.
Поместим в ячейку В5 начальное значение х, например, единицу. В ячейку В3 поместим значение правой части уравнения (в нашем примере это два). (Рис. 8.1).
Рис. 8.1.
Напишем процедуру обработки события Click для CommandButton1 (кнопка «Выполнить»). В ячейку В4 вставим формулу вычисления левой части уравнения. Применим метод GoalSeek: в ячейке В4 установить значение 2, изменяя значение ячейки В5, т.е. напишем инструкцию:
Range(«B4»).GoalSeek goal:=2, CchangingCell:=Range(«B5»)
После нажатия на кнопку «Выполнить» результат расчета будет помещен в ячейки В5 (значение корня в данном случае 0,635796191) и В4 (значение левой части уравнения при найденном значении корня) в
102
данном случае оно равно 1,999809434) (рис. 8.2). В силу того решение находится приближенно с указанной точностью в ячейке В4 получилось 1,999809434, а не ровно 2. Увеличивая точность можно найти лучшее приближение к корню.
Код модуля рабочего листа Лист1
Private Sub CommandButton1_Click() Range(«B4»).FormulaLocal = «=(2*B5^2+3)*(1-sin(B5))-ln(B5)» Range(«B4»).GoalSeek goal:=2, changingCell:=Range(«B5») End Sub
Рис. 8.2.
В MS Excel 2010 данная задача решается следующим образом. После ввода в ячейки В3, В5 исходных данных и соответствующей формулы в ячейку В4, перейти на вкладку Данные, в группе Работа с данными из списка Анализ «что-если« выбрать команду
Подбор параметра.
Вокне Подбор параметра установить соответствующие значения
инажать на ОК.
Пример 2. Клиент хочет открыть счет в банке под 5% годовых и за пять лет накопить $150 тыс. Он собирается производить ежегодные отчисления на этот счет и хочет узнать необходимые размеры ежегодного отчисления.
Для решения этой задачи можно использовать финансовую функцию БС и метод GoalSeek. Функция БС возвращает будущее значение вклада на основе периодических постоянных платежей и постоянной процентной ставки. Синтаксис этой функции:
103
БС(ставка; кпер; плт; пс; тип)
Эта функция имеет три обязательных параметра – процентную ставку, общее число периодов выплат и размер одиночной выплаты. Необязательные параметры:
пс — это приведенная к текущему моменту стоимость или общая сумма, которая на текущий момент равноценна ряду будущих платежей. Если аргумент пс опущен, то он полагается равным 0. В этом случае должно быть указано значение аргумента плт.
Тип — число 0 или 1, обозначающее, когда должна производиться выплата. Если аргумент «тип» опущен, то он полагается равным 0.
Тип |
Когда нужно платить |
0 |
В конце периода |
1 |
В начале периода |
В ячейку В2 поместим процентную ставку, в ячейку В3 – количество периодов выплат (рис. 8.2). В ячейку В4 поместим формулу для вычисления размера одиночной выплаты:
Range(«B5»).FormulaLocal = «=БС(B2;B3;B4)»
Применим метод GoalSeek: в ячейке В5 установить значение 150000, изменяя значение ячейки В4, т.е. напишем инструкцию:
Range(«B5»).GoalSeek goal:=150000, changingCell:=Range(«B4»)
После нажатия на кнопку «Вычислить» результат расчета будет помещен в ячейки В4 размер ежегодного отчисления — $27146,22 и в ячейку В5 будущее значение вклада $150000. (Рис. 8.3).
Рис. 8.3.
Код модуля рабочего листа Лист1
Private Sub CommandButton1_Click()
Range(«B5»).FormulaLocal = «=БС(B2;B3;B4)»
104
Range(«B5»).GoalSeek goal:=150000, changingCell:=Range(«B4») End Sub
8.2. Метод AutoFill
Метод AutoFill (автозаполнение) автоматически заполняет ячейки диапазона элементами последовательности. При этом методе явно указывается диапазон, в котором будет располагаться прогрессия. Вручную этот метод эквивалентен расположению указателя мыши на маркере заполнения выделенного диапазона (в который введены значения, порождающие создаваемую последовательность) и протаскивании маркера заполнения вдоль диапазона, в котором будет располагаться создаваемая последовательность.
Синтаксис:
Объект.AutoFill(destination, type)
Аргументы:
Объект |
Диапазон, с которого начинается заполнение |
destination |
Диапазон, который заполняется |
type |
Допустимые значения: x1FillDefault, x1FillSries, |
x1FillCopy, x1FillFormats, x1FillValues, x1FillDays, |
|
x1FillWeekDays, x1FillMonths, x1FillYears, |
|
x1LinearTrend, x1GrowthTrend. По умолчанию |
|
x1FillDefault |
Пример 1. Создать программу заполнения таблицы значений функции у = х2 — 8 при х изменяющемся от -3 до 3 с шагом 1.
Рис. 8.4.
Сначала задачу решим на рабочем листе вручную. В ячейку А2 введем начальное значение х –минус три, в ячейку А3 следующее значение — минус два. Выделим диапазон А2:А3, содержащий два
105
первых значения х. Протащим маркер заполнения вниз по столбцу так, чтобы создать требуемую последовательность значений х, до ячейки А8. В ячейку В2 введем формулу вычисления значения y: =А2^2-8. Выделим данную ячейку и протащим маркер заполнения до ячейки В8 (рис. 8.4).
На VBA тот же результат получается следующим образом: для вычисления значения х аргументу destination присваивается значение Range(«A2:A8»), аргументу type присваивается x1FillDefault, а
метод применяется к диапазону Range(«A2:A3»). Для вычисления значения у аргументу destination присваивается значение Range(«В2:В8»), аргументу type присваивается x1FillDefault, а метод применяется к диапазону Range(«В2»).
Таким образом, имеем:
Range(«A2:A3»).AutoFill Destination:=Range(«A2:A8»), _ Type:=x1FillDefault
Range(«B2»).FormulaLocal = «=A2^2-8» Range(«В2»).AutoFill Destination:=Range(«B2:B8»), _
Type:=x1FillDefault
Пример 2. Создать программу, которая вычисляет n –ый член и сумму членов арифметической прогрессии, при n, изменяющемся от 1 до 10. Первый член арифметической прогрессии равен -2, d = 0,725, n
–ый член вычисляется по формуле: аn=a1 + d(n-1), сумма : sn = (a1+an)*n/2.
На рабочем листе запишем исходные данные. (Рис. 8.5). В ячейку А5 запишем значение разности d. Ячейке А5 присвоим имя d, для этого выделим эту ячейку, перейдем на вкладку Формулы и в
группе Определение имени нажмем кнопку Присвоить имя ,
откроется окно Создание имени, в поле Имя введем d. В столбец В начиная с пятой строки запишем номера первого и второго членов прогрессии, в ячейку С5 – первый член прогрессии, в ячейку D5 – S1. Применим метод AutoFill к диапазону Range(«B5:B6»), аргументу destination присвоим значение Range(«В5:В14»). В ячейку С6 запишем формулу вычисления второго члена прогрессии в формате R1C1. Применим метод AutoFill к ячейке Range(«С6»), аргументу destination присвоим значение Range(«С6:С14»). В ячейку D6 запишем формулу вычисления суммы двух первых членов прогрессии в
106
формате R1C1. Применим метод AutoFill к ячейке Range(«D6»),
аргументу destination присвоим значение Range(«D6:D14»).
Рис.8.5.
Код модуля рабочего листа Лист1
Private Sub CommandButton1_Click()
Dim d As Single
d = Range(«A5»).Value
Range(«B5:B6»).AutoFill Destination:=Range(«B5:B14»)
Cells(6, 3).Activate
ActiveCell.FormulaR1C1 = «=R[-1]C+d»
Range(«C6»).AutoFill Destination:=Range(«C6:C14»)
Cells(6, 4).Activate
ActiveCell.FormulaR1C1 = «=(R5C3+RC[-1])*RC[-2]/2»
Range(«D6»).AutoFill Destination:=Range(«D6:D14»)
End Sub
8.3. Метод Sort
Сортировка позволяет выстраивать данные в алфавитном или цифровом порядке по возрастанию или по убыванию. Microsoft Excel может сортировать строки, а также столбцы списков рабочих листов. При сортировке текста в таблице можно сортировать как один столбец, так и таблицу целиком. Кроме того можно выполнить сортировку по нескольким словам или полям в одном столбце таблицы, а также — для выделенного диапазона списка. Если на
107
108
x1Ascending (возрастающий порядок) x1Descending (убывающий порядок)
вкладке Данные, в группе Сортировка и фильтр выбрать кнопку Сортировка, то откроется окно, в котором можно задать ключи сортировки (столбцы или строки), порядок сортировки и некоторые другие параметры (рис. 8.6).
Рис. 8.6. Окно Сортировка с открытым окном Параметры
сортировки
В VBA для осуществления сортировки данных с учетом до трех критериев, по которым производится сортировка, применяется метод Sort, который позволяет сортировать строки списков, сводных таблиц и баз данных, а также столбцы рабочих листов.
Синтаксис:
Объект. Sort (key1, order1, key2, order2, key3, order3, header, orderCustom, matchCase, orientation)
Аргументы: |
||
Объект |
Диапазон, который будет сортироваться |
|
key1 |
Ссылка на первое упорядочиваемое поле |
|
order1 |
Задает порядок упорядочивания. Допустимые |
|
значения: |
||
|
x1Ascending (возрастающий порядок) |
|
|
x1Descending (убывающий порядок) |
|
key2 |
Ссылка на второе упорядочиваемое поле |
|
order2 |
Задает порядок упорядочивания. Допустимые |
|
значения: |
||
|
||
|
Key3 |
Ссылка на третье упорядочиваемое поле |
|
Order3 |
Задает порядок упорядочивания. Допустимые |
|
значения: |
||
|
x1Ascending (возрастающий порядок) |
|
|
x1Descending (убывающий порядок) |
|
header |
Допустимые значения: |
|
x1Yes (первая строка диапазона содержит |
||
заголовок, который не сортируется) |
||
x1No (первая строка диапазона не содержит |
||
заголовок) |
||
x1Guess (Excel решает, имеется ли заголовок) |
||
orderCustom |
Пользовательский порядок сортировки. По |
|
умолчанию используется Normal |
||
matchCase |
Допустимые значения: True (учитываются регистры) |
|
и Fulse (регистры не учитываются) |
||
orientation |
Допустимые значения: |
x1TopToBottom (сортировка осуществляется сверху вниз, т.е. по строкам),
x1LeftToRight ( по столбцам)
8.4.Метод AutoFilter
Для поиска и фильтрации данных в MS Excel существуют автофильтр и расширенный фильтр. Автофильтр используется для простых условий отбора; а расширенный фильтр – для более сложных условий отбора.
В отфильтрованном списке отображаются только те строки, отвечающие условиям отбора, заданным для столбца. При фильтрации порядок записей в списке не изменяется, строки, которые не удовлетворяют критерию фильтрации, временно скрываются.
При использовании автофильтра для поиска данных в списке, справа от подписей столбцов в фильтруемом списке появляются
стрелки автофильтра . У отфильтрованных данных номера строк окрашиваются в синий цвет, а стрелка автофильтра превращается в
стрелку с воронкой (фильтром) возле тех полей, по которым произведен отбор данных.
109
Рис. 8.7. Раскрывающийся список автофильтра
Для фильтрации данных с помощью автофильтра необходимо выполнить следующие действия.
1.Установить указатель ячейки в список данных.
2.Перейти на вкладку Данные, в группе Сортировка и фильтр использовать команду Фильтр. Возле каждого поля строки
заголовка списка появятся стрелки автофильтра .
3.Перейти к необходимому полю.
4.Из раскрывающегося списка автофильтра выбрать требуемый критерий поиска (рис. 8.7).
Метод AutoFilter (автофильтр) объекта Range позволяет программным способом задать выполнение автофильтрации списка по критериям, указанным в параметрах. При применении метода AutoFilter допустимы два синтаксиса.
Синтаксис 1:
Объект. AutoFilter
В этом случае метод AutoFilter выбирает или отменяет команду Данные, Фильтр примененную к диапазону, заданному в аргументе
Объект.
Синтаксис 2:
Объект.AutoFilter(field,criteria1,operator, criteria2)
110
Соседние файлы в папке функция
- #
06.06.2017953.79 Кб191.docx
- #
06.06.201719.83 Кб50Krasyuk_9_variant.xlsm
- #
- #
- #
- #
- #
06.06.201725.47 Кб81функции Михайлицын вариант 12.xlsm
- #
06.06.20179.04 Кб69функция.xlsx
12. Подбор параметра
Функция Подбор параметра.
Решение уравнений средствами программы Excel
Задача : Найти решение уравнения x 3 — Зх 2 +х= -1.
1. Присвойте рабочему листу имя Уравнение.
2. Занесите в ячейку A 1 значение 0.
3. Занесите в ячейку B 1 левую часть уравнения, используя в качестве независи мой переменной ссылку на ячейку A 1. Соответствующая формула может, напри мер, иметь вид = A 1^3-3* A 1^2+ A 1.
4. На вкладке Данные, в группе Работа с данными выберите Анализ «что если» — Подбор параметра.
5. В поле Установить в ячейке укажите В1, в поле Значение задайте -1, в поле Изменяя значение ячейки укажите А1.
6. Щелкните на кнопке ОК и посмотрите на результат подбора, отображаемый в диалоговом окне Результат подбора параметра. Щелкните на кнопке ОК, чтобы сохранить полученные значения ячеек, участвовавших в операции.
7. Повторите расчет, задавая в ячейке A 1 другие начальные значения, например 0,5 или 2. Совпали ли результаты вычислений? Чем можно объяснить различия?
Мы научились численно решать с помощью программы Excel уравнения, содержащие одно неизвестное и задаваемые формулой. Мы выяснили, что при наличии нескольких корней результат решения уравнения зависит от того, какое число было выбрано в качестве начального приближения.
Составление штатного расписания больницы.
Вы — заведующий больницей. Составьте штатное расписание, то есть определите, сколько сотрудников, на каких должностях и с каким окладом вы должны принять на работу. Общий месячный фонд зарплаты составляет $10.000.
Предположим, что для нормальной работы больницы нужно 5-7 санитарок, 8-10 медсестер, 10-12 врачей, 1 заведующий аптекой, 3 заведующих отделениями, 1 главный врач, 1 заведующий хозяйством, 1 заведующий больницей.
Предлагается следующая модель решения задачи. За основу берется оклад санитарки, а остальные вычисляются исходя из него с помощью коэффициентов оклада:
Коэффициенты назначаются следующим образом:
медсестра должна получать в 1,5 раза больше санитарки;
врач — в 3 раза больше санитарки;
заведующий отделением — на $30 больше, чем врач;
заведующий аптекой — в 2 раза больше санитарки;
заведующий хозяйством — на $40 больше медсестры;
главный врач — в 4 раза больше санитарки;
заведующий больницей — на $20 больше главного врача.
Оформите таблицу, используя следующие столбцы: Должность, Количество сотрудников, Коэффициент A , Коэффициент B , Оклад, Итого.
1. В первой строке – название таблицы.
2. Во второй строке – название столбцов таблицы.
3. В ячейках А3:А10 введите названия должностей – от санитарки до главного врача. В ячейках В3:В10 – количество сотрудников по верхнему пределу, заданному в условии задачи. В ячейке С3 – 1, в ячейках C 4: C 10 – во сколько раз данный оклад больше оклада санитарки. В ячейках D 3: D 10 – на сколько больше (обратите внимание, что размер оклада нужно выразить относительно оклада санитарки). Ячейку Е3 оставьте пустой – там будет формироваться величина оклада. В ячейках Е4:Е10 – введите формулу для вычисления оклада (см. в условии задачи). В столбце F подсчитайте сумму окладов по должностям и итоговую по всей по больнице.
При решении задачи используйте сервисную функцию Excel Подбор параметра : Данные– (Работа с данными) Анализ «Что если» (см. рисунок Подбор параметра).
В поле Установить в ячейке ввести адрес ячейки, где вычисляется общая месячная зарплата всех сотрудников больницы. В поле Значение ввести предельное значение месячного фонда зарплаты. В поле Изменяя значение ячейки ввести адрес ячейки, где находится оклад санитарки. После нажатия ОК произойдет автоматический подбор значения оклада санитарки таким образом, чтобы общий месячный фонд зарплаты составил $10.000.
4. Рассчитайте оклады для нескольких вариантов штата, изменяя количество штатных единиц в соответствии с заданными условиями.
Для этого несколько раз подряд придется выполнять рутинные действия по вызову команды Подбор параметра и заполнению всех полей ее диалогового окна.
Создание простого макроса и кнопки.
Для упрощения работы с предыдущим заданием создадим простейший макрос — программу на языке VBA ( VisualBasicforApplication ), встроенном в офисные программы. Причем сделаем это, не зная пока самого языка. В этом нам поможет MacroRecorder — транслятор, перево дящий на язык VBA действия пользователя с момента запуска MacroRecorder до окончания записи макроса.
Для активизации MacroRecorder выбираем команду Вид – Макросы – Запись макроса . В появившемся диалоговом окне Запись макроса (см. рисунок) задаем имя макроса (« Staff ») и описание макроса (не обязательно). В поле Сохранить в: оставляем опцию по умолчанию Эта книга (тогда созданный макрос сохранится на новом листе модуля в активной рабочей книге).
После нажатия OK на экране появляется кнопка Остановить запись в левом нижнем углу MSExcel . Теперь все ваши действия над ячейками будут записываться.
В данном случае действия будут простые. Вызовем сервис ную функцию Подбор параметра, выполним описанные ранее действия по расчету штатного расписания и остановим запись макроса.
Чтобы посмотреть, какая же все-таки VBA — программа «создана» нами, выполним команду Вид — Макросы — Макросы. В появившемся диалоговом окне выберем макрос с именем « Staff » и нажмем кнопку Изменить. Откроется главное окно редактора VBA с текстом записанного макроса, например:
‘ Штатное расписание таблицы
Range(«F11»).GoalSeek Goal:=10000, ChangingCell:=Range(«E3»)
Именно эта процедура и выполняется, если в диалоговом ок не Макросы нажать кнопку Выполнить. Рассчитываются оклады для заданного заранее нового количества штатных единиц.
Для еще большей оптимизации действий по расчету штатного расписания разместим на листе Кнопку, при нажатии на которую будут производиться нужные действия.
Кнопка является одним из элементов управления листа, соз даваемых с помощью панели инструментов Формы. Обычно этой панели нет на экране, поэтому выполняем команду Файл | Параметры | Настройка ленты| Все команды. На экран выводится панель инструментов Всех команд, находим название Кнопка, затем нажимаем на Добавить >> (данная функция уже есть в ранее созданной вкладке). Выбираем на ней щелчком мыши форму Кнопка, при этом указатель мыши превращается в тонкий крестик. Щелкаем им по листу. На нем появляется кнопка с именем Кнопка1 и одновременно открывается диалоговое окно Назначение макроса объекту. В поле Имя макроса выбираем имя нашего макроса « Staff ».
Теперь указанная выше процедура расчета окладов будет выполняться простым нажатием кнопки.
Решение системы уравнений в Microsoft Excel
Умение решать системы уравнений часто может принести пользу не только в учебе, но и на практике. В то же время, далеко не каждый пользователь ПК знает, что в Экселе существует собственные варианты решений линейных уравнений. Давайте узнаем, как с применением инструментария этого табличного процессора выполнить данную задачу различными способами.
Варианты решений
Любое уравнение может считаться решенным только тогда, когда будут отысканы его корни. В программе Excel существует несколько вариантов поиска корней. Давайте рассмотрим каждый из них.
Способ 1: матричный метод
Самый распространенный способ решения системы линейных уравнений инструментами Excel – это применение матричного метода. Он заключается в построении матрицы из коэффициентов выражений, а затем в создании обратной матрицы. Попробуем использовать данный метод для решения следующей системы уравнений:
-
Заполняем матрицу числами, которые являются коэффициентами уравнения. Данные числа должны располагаться последовательно по порядку с учетом расположения каждого корня, которому они соответствуют. Если в каком-то выражении один из корней отсутствует, то в этом случае коэффициент считается равным нулю. Если коэффициент не обозначен в уравнении, но соответствующий корень имеется, то считается, что коэффициент равен 1. Обозначаем полученную таблицу, как вектор A.
Отдельно записываем значения после знака «равно». Обозначаем их общим наименованием, как вектор B.
Аргумент «Массив» — это, собственно, адрес исходной таблицы.
Итак, выделяем на листе область пустых ячеек, которая по размеру равна диапазону исходной матрицы. Щелкаем по кнопке «Вставить функцию», расположенную около строки формул.
Выполняется запуск Мастера функций. Переходим в категорию «Математические». В представившемся списке ищем наименование «МОБР». После того, как оно отыскано, выделяем его и жмем на кнопку «OK».
Итак, после этого программа производит вычисления и на выходе в предварительно выделенной области мы имеем матрицу, обратную данной.
Теперь нам нужно будет умножить обратную матрицу на матрицу B, которая состоит из одного столбца значений, расположенных после знака «равно» в выражениях. Для умножения таблиц в Экселе также имеется отдельная функция, которая называется МУМНОЖ. Данный оператор имеет следующий синтаксис:
Выделяем диапазон, в нашем случае состоящий из четырех ячеек. Далее опять запускаем Мастер функций, нажав значок «Вставить функцию».
В категории «Математические», запустившегося Мастера функций, выделяем наименование «МУМНОЖ» и жмем на кнопку «OK».
Активируется окно аргументов функции МУМНОЖ. В поле «Массив1» заносим координаты нашей обратной матрицы. Для этого, как и в прошлый раз, устанавливаем курсор в поле и с зажатой левой кнопкой мыши выделяем курсором соответствующую таблицу. Аналогичное действие проводим для внесения координат в поле «Массив2», только на этот раз выделяем значения колонки B. После того, как вышеуказанные действия проведены, опять не спешим жать на кнопку «OK» или клавишу Enter, а набираем комбинацию клавиш Ctrl+Shift+Enter.
Способ 2: подбор параметров
Второй известный способ решения системы уравнений в Экселе – это применение метода подбора параметров. Суть данного метода заключается в поиске от обратного. То есть, основываясь на известном результате, мы производим поиск неизвестного аргумента. Давайте для примера используем квадратное уравнение
-
Принимаем значение x за равное 0. Высчитываем соответствующее для него значение f(x), применив следующую формулу:
Вместо значения «X» подставляем адрес той ячейки, где расположено число 0, принятое нами за x.
Переходим во вкладку «Данные». Жмем на кнопку «Анализ «что если»». Эта кнопка размещена на ленте в блоке инструментов «Работа с данными». Открывается выпадающий список. Выбираем в нем позицию «Подбор параметра…».
Запускается окно подбора параметров. Как видим, оно состоит из трех полей. В поле «Установить в ячейке» указываем адрес ячейки, в которой находится формула f(x), рассчитанная нами чуть ранее. В поле «Значение» вводим число «0». В поле «Изменяя значения» указываем адрес ячейки, в которой расположено значение x, ранее принятое нами за 0. После выполнения данных действий жмем на кнопку «OK».
После этого Эксель произведет вычисление с помощью подбора параметра. Об этом сообщит появившееся информационное окно. В нем следует нажать на кнопку «OK».
Этот результат также можно проверить, подставив данное значение в решаемое выражение вместо значения x.
Способ 3: метод Крамера
Теперь попробуем решить систему уравнений методом Крамера. Для примера возьмем все ту же систему, которую использовали в Способе 1:
-
Как и в первом способе, составляем матрицу A из коэффициентов уравнений и таблицу B из значений, которые стоят после знака «равно».
Далее делаем ещё четыре таблицы. Каждая из них является копией матрицы A, только у этих копий поочередно один столбец заменен на таблицу B. У первой таблицы – это первый столбец, у второй таблицы – второй и т.д.
Теперь нам нужно высчитать определители для всех этих таблиц. Система уравнений будет иметь решения только в том случае, если все определители будут иметь значение, отличное от нуля. Для расчета этого значения в Экселе опять имеется отдельная функция – МОПРЕД. Синтаксис данного оператора следующий:
Таким образом, как и у функции МОБР, единственным аргументом выступает ссылка на обрабатываемую таблицу.
Итак, выделяем ячейку, в которой будет выводиться определитель первой матрицы. Затем жмем на знакомую по предыдущим способам кнопку «Вставить функцию».
Активируется окно Мастера функций. Переходим в категорию «Математические» и среди списка операторов выделяем там наименование «МОПРЕД». После этого жмем на кнопку «OK».
Запускается окно аргументов функции МОПРЕД. Как видим, оно имеет только одно поле – «Массив». В это поле вписываем адрес первой преобразованной матрицы. Для этого устанавливаем курсор в поле, а затем выделяем матричный диапазон. После этого жмем на кнопку «OK». Данная функция выводит результат в одну ячейку, а не массивом, поэтому для получения расчета не нужно прибегать к нажатию комбинации клавиш Ctrl+Shift+Enter.
Функция производит подсчет результата и выводит его в заранее выделенную ячейку. Как видим, в нашем случае определитель равен -740, то есть, не является равным нулю, что нам подходит.
Аналогичным образом производим подсчет определителей для остальных трех таблиц.
На завершающем этапе производим подсчет определителя первичной матрицы. Процедура происходит все по тому же алгоритму. Как видим, определитель первичной таблицы тоже отличный от нуля, а значит, матрица считается невырожденной, то есть, система уравнений имеет решения.
Способ 4: метод Гаусса
Решить систему уравнений можно также, применив метод Гаусса. Для примера возьмем более простую систему уравнений из трех неизвестных:
-
Опять последовательно записываем коэффициенты в таблицу A, а свободные члены, расположенные после знака «равно» — в таблицу B. Но на этот раз сблизим обе таблицы, так как это понадобится нам для работы в дальнейшем. Важным условием является то, чтобы в первой ячейке матрицы A значение было отличным от нуля. В обратном случае следует переставить строки местами.
Копируем первую строку двух соединенных матриц в строчку ниже (для наглядности можно пропустить одну строку). В первую ячейку, которая расположена в строке ещё ниже предыдущей, вводим следующую формулу:
Если вы расположили матрицы по-другому, то и адреса ячеек формулы у вас будут иметь другое значение, но вы сможете высчитать их, сопоставив с теми формулами и изображениями, которые приводятся здесь.
После того, как формула введена, выделите весь ряд ячеек и нажмите комбинацию клавиш Ctrl+Shift+Enter. К ряду будет применена формула массива и он будет заполнен значениями. Таким образом мы произвели вычитание из второй строки первой, умноженной на отношение первых коэффициентов двух первых выражений системы.
После этого копируем полученную строку и вставляем её в строчку ниже.
Выделяем две первые строки после пропущенной строчки. Жмем на кнопку «Копировать», которая расположена на ленте во вкладке «Главная».
Пропускаем строку после последней записи на листе. Выделяем первую ячейку в следующей строке. Кликаем правой кнопкой мыши. В открывшемся контекстном меню наводим курсор на пункт «Специальная вставка». В запустившемся дополнительном списке выбираем позицию «Значения».
В следующую строку вводим формулу массива. В ней производится вычитание из третьей строки предыдущей группы данных второй строки, умноженной на отношение второго коэффициента третьей и второй строки. В нашем случае формула будет иметь следующий вид:
После ввода формулы выделяем весь ряд и применяем сочетание клавиш Ctrl+Shift+Enter.
Теперь следует выполнить обратную прогонку по методу Гаусса. Пропускаем три строки от последней записи. В четвертой строке вводим формулу массива:
Таким образом, мы делим последнюю рассчитанную нами строку на её же третий коэффициент. После того, как набрали формулу, выделяем всю строчку и жмем сочетание клавиш Ctrl+Shift+Enter.
Поднимаемся на строку вверх и вводим в неё следующую формулу массива:
Жмем привычное уже нам сочетание клавиш для применения формулы массива.
Поднимаемся ещё на одну строку выше. В неё вводим формулу массива следующего вида:
Опять выделяем всю строку и применяем сочетание клавиш Ctrl+Shift+Enter.
Как видим, в Экселе систему уравнений можно решить целым рядом способов, каждый из которых имеет собственные преимущества и недостатки. Но все эти методы можно условно разделить на две большие группы: матричные и с применением инструмента подбора параметров. В некоторых случаях не всегда матричные методы подходят для решения задачи. В частности тогда, когда определитель матрицы равен нулю. В остальных же случаях пользователь сам волен решать, какой вариант он считает более удобным для себя.
Помимо этой статьи, на сайте еще 12689 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Решение уравнений в Excel методом итераций Крамера и Гаусса
В программе Excel имеется обширный инструментарий для решения различных видов уравнений разными методами.
Рассмотрим на примерах некоторые варианты решений.
Решение уравнений методом подбора параметров Excel
Инструмент «Подбор параметра» применяется в ситуации, когда известен результат, но неизвестны аргументы. Excel подбирает значения до тех пор, пока вычисление не даст нужный итог.
Путь к команде: «Данные» — «Работа с данными» — «Анализ «что-если»» — «Подбор параметра».
Рассмотрим на примере решение квадратного уравнения х 2 + 3х + 2 = 0. Порядок нахождения корня средствами Excel:
- Введем в ячейку В2 формулу для нахождения значения функции. В качестве аргумента применим ссылку на ячейку В1.
- Открываем меню инструмента «Подбор параметра». В графе «Установить в ячейку» — ссылка на ячейку В2, где находится формула. В поле «Значение» вводим 0. Это то значение, которое нужно получить. В графе «Изменяя значение ячейки» — В1. Здесь должен отобразиться отобранный параметр.
- После нажатия ОК отобразится результат подбора. Если нужно его сохранить, вновь нажимаем ОК. В противном случае – «Отмена».
Для подбора параметра программа использует циклический процесс. Чтобы изменить число итераций и погрешность, нужно зайти в параметры Excel. На вкладке «Формулы» установить предельное количество итераций, относительную погрешность. Поставить галочку «включить итеративные вычисления».
Как решить систему уравнений матричным методом в Excel
Дана система уравнений:
- Значения элементов введем в ячейки Excel в виде таблицы.
- Найдем обратную матрицу. Выделим диапазон, куда впоследствии будут помещены элементы матрицы (ориентируемся на количество строк и столбцов в исходной матрице). Открываем список функций (fx). В категории «Математические» находим МОБР. Аргумент – массив ячеек с элементами исходной матрицы.
- Нажимаем ОК – в левом верхнем углу диапазона появляется значение. Последовательно жмем кнопку F2 и сочетание клавиш Ctrl + Shift + Enter.
- Умножим обратную матрицу Ах -1х на матрицу В (именно в таком порядке следования множителей!). Выделяем диапазон, где впоследствии появятся элементы результирующей матрицы (ориентируемся на число строк и столбцов матрицы В). Открываем диалоговое окно математической функции МУМНОЖ. Первый диапазон – обратная матрица. Второй – матрица В.
- Закрываем окно с аргументами функции нажатием кнопки ОК. Последовательно нажимаем кнопку F2 и комбинацию Ctrl + Shift + Enter.
Получены корни уравнений.
Решение системы уравнений методом Крамера в Excel
Возьмем систему уравнений из предыдущего примера:
Для их решения методом Крамера вычислим определители матриц, полученных заменой одного столбца в матрице А на столбец-матрицу В.
Для расчета определителей используем функцию МОПРЕД. Аргумент – диапазон с соответствующей матрицей.
Рассчитаем также определитель матрицы А (массив – диапазон матрицы А).
Определитель системы больше 0 – решение можно найти по формуле Крамера (Dx / |A|).
Для расчета Х1: =U2/$U$1, где U2 – D1. Для расчета Х2: =U3/$U$1. И т.д. Получим корни уравнений:
Решение систем уравнений методом Гаусса в Excel
Для примера возьмем простейшую систему уравнений:
3а + 2в – 5с = -1
2а – в – 3с = 13
а + 2в – с = 9
Коэффициенты запишем в матрицу А. Свободные члены – в матрицу В.
Для наглядности свободные члены выделим заливкой. Если в первой ячейке матрицы А оказался 0, нужно поменять местами строки, чтобы здесь оказалось отличное от 0 значение.
- Приведем все коэффициенты при а к 0. Кроме первого уравнения. Скопируем значения в первой строке двух матриц в ячейки В6:Е6. В ячейку В7 введем формулу: =B3:Е3-$B$2:$Е$2*(B3/$B$2). Выделим диапазон В7:Е7. Нажмем F2 и сочетание клавиш Ctrl + Shift + Enter. Мы отняли от второй строки первую, умноженную на отношение первых элементов второго и первого уравнения.
- Копируем введенную формулу на 8 и 9 строки. Так мы избавились от коэффициентов перед а. Сохранили только первое уравнение.
- Приведем к 0 коэффициенты перед в в третьем и четвертом уравнении. Копируем строки 6 и 7 (только значения). Переносим их ниже, в строки 10 и 11. Эти данные должны остаться неизменными. В ячейку В12 вводим формулу массива.
- Прямую прогонку по методу Гаусса сделали. В обратном порядке начнем прогонять с последней строки полученной матрицы. Все элементы данной строки нужно разделить на коэффициент при с. Введем в строку формулу массива: <=B12:E12/D12>.
- В строке 15: отнимем от второй строки третью, умноженную на коэффициент при с второй строки (<=(B11:E11-B16:E16*D11)/C11>). В строке 14: от первой строки отнимаем вторую и третью, умноженные на соответствующие коэффициенты (<=(B10:E10-B15:E15*C10-B16:E16*D10)/B10>). В последнем столбце новой матрицы получаем корни уравнения.
Примеры решения уравнений методом итераций в Excel
Вычисления в книге должны быть настроены следующим образом:
Делается это на вкладке «Формулы» в «Параметрах Excel». Найдем корень уравнения х – х 3 + 1 = 0 (а = 1, b = 2) методом итерации с применением циклических ссылок. Формула:
M – максимальное значение производной по модулю. Чтобы найти М, произведем вычисления:
f’ (1) = -2 * f’ (2) = -11.
Полученное значение меньше 0. Поэтому функция будет с противоположным знаком: f (х) = -х + х 3 – 1. М = 11.
В ячейку А3 введем значение: а = 1. Точность – три знака после запятой. Для расчета текущего значения х в соседнюю ячейку (В3) введем формулу: =ЕСЛИ(B3=0;A3;B3-(-B3+СТЕПЕНЬ(B3;3)-1/11)).
В ячейке С3 проконтролируем значение f (x): с помощью формулы =B3-СТЕПЕНЬ(B3;3)+1.
Корень уравнения – 1,179. Введем в ячейку А3 значение 2. Получим тот же результат:
источники:
http://lumpics.ru/how-solve-system-equations-excel/
http://exceltable.com/otchety/reshenie-uravneniy