Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка для практики.doc
Скачиваний:
2
Добавлен:
25.11.2018
Размер:
2.97 Mб
Скачать

Программный элемент «Накопление»

Общая постановка задачи «Накопления» сводится к следующему: надо найти какую либо статистическою характеристику массива (сумму, произведение, среднее арифметическое и т. д.) среди элементов отвечающих некоторому условию (чётных, попадающих в заданный интервал, преобразованных каким либо образом).

Решение в Excel

Будем использовать функции массивов. Для отбора элементов массива применим логическую функцию

ЕСЛИ(лог_выражение; значение_если_истина ; значение_если_ложь)

Функции возвращает одно значение, если заданное условие при вычислении дает значение ИСТИНА, и другое значение, если ЛОЖЬ.

При накоплении суммы, в случае невыполнения условия функция должна возвращать 0, для произведения 1.

Введём на листе Excel матрицу, строку над матрицей заполним номерами столбцов, столбец слева от матрицы номерами строк. Присвоим имена: диапазону матрицы дадим имя A_, диапазону номеров строк имя I_ , диапазону номеров столбцов имя J_.

Таблица имён

A_

=Лист1!$D$3:$H$7

I_

=Лист1!$C$3:$C$7

J_

=Лист1!$D$2:$H$2

Так как в этом типе задач производится обработка элементов массива и вначале неявным образом возвращается массив то, хотя результат получается в одной клетке надо завершать ввод формулы комбинацией клавиш «Ctrl+Shft+Enter».

Примеры:

Рассмотрим подробнее следующий пример:

Найти среднее арифметическое элементов матрицы попадающих в диапазон [x,y].

Подсчёт количества элементов попадающих в диапазон производится по формуле

{=СУММ(ЕСЛИ(A_>=x_;ЕСЛИ(A_<=y_;1;0);0))}

Сумма рассчитывается по формуле

{=СУММ (ЕСЛИ(A_>=x_;ЕСЛИ(A_<=y_;A_;0);0))}

Для вывода преобразованной матрицы выделим диапазон клеток такой же, как исходная матрица, прономеруем строки и столбцы, дадим им имена и введём формулу {=ЕСЛИ(I_=2;ЕСЛИ(J_=3;SRA_;A_);A_)}

ввод формулы завершим комбинацией клавиш «Ctrl+Shft+Enter».

Примечание. Логическую функцию И() в данной задаче применить нельзя, так как при первом значении ЛОЖЬ, она вернёт ЛОЖЬ для всего диапазона. Поэтому приходится применять двойное ЕСЛИ().

Решение в MathCad

В MathCAD индексация массива по молчанию начинается с нуля. Изменить начало массива можно присвоив переменной ORIGIN требуемое значение.

ORIGIN:=1 устанавливаем начало массива с единицы.

Функция rows(имя массива) возвращает число строк в массиве.

Функция cols(имя массива) возвращает число столбцов в массиве.

Для суммирования применяется символ , произведения

Например, для получения суммы элементов вектора

Произведение всех элементов матрицы

При решении задачи накопления элементов отвечающих некоторому условию надо использовать функцию if().

Примеры:

Определить среднее арифметическое элементов на главной

диаго­нали матрицы.

Устанавливаем начало нумерации массива с единицы

Создаём функцию суммы элементов матрицы отвечающих условию, в данном случае условию нахождения на главной диагонали, индекс строки равен индексу столбца

Функция количества диагональных элементов

В условных выражениях знак равенства надо вводить как булевское (логическое) равно (Ctrl + =) или с панели

Имя матрицы Маt – это имя формального аргумента функции, при вызове функции формальный аргумент заменяется фактическим.

Функция среднего арифметического диагональных элементов

Протестируем полученную функцию на конкретной матрице

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

Рассмотрим пример с двойным условием.

Найти среднее геометрическое элементов матрицы попадающих в диапазон [x,y] и находящихся в четных столбцах. Полученное значение присвоить элементу матрицы, распо­ложенному во второй строке последнего столбца.

Здесь в логическом выражении надо использовать логическое И

При отсутствии на панели символов логических операций (в версии MathCAD 6.0) в качестве логического And надо использовать символ умножения (*) .

Для логических операндов, операция умножения тождественна операции логического And, операция сложения (+), тождественна операции логического Or (Или).

Для отбора нечетных столбцов применена функция деления по модулю, которая возвращает остаток деления числа а на число b.

Функция имеет три аргумента: имя матрицы(Mat), нижняя граница(x) диапазона, верхняя граница диапазона(y).