
- •В.В.Ломтадзе,
- •Л.П.Шишкина
- •Информатика
- •Издание третье, переработанное
- •Содержание
- •1. Информационные технологии. Понятие информации. Информационное общество. Информационные революции. Поколения компьютерных систем
- •2. Вводные сведения о современных программных средствах
- •2.1. Особенности современных программных средств
- •2.2. Основные элементы управления в интерфейсе программных продуктов
- •2.3. Типовые диалоги в интерфейсе программных продуктов
- •3. Кодирование и хранение информации. Системы счисления
- •Запись содержимого полубайта в разных системах счисления
- •4. Алгоритмы. Роль алгоритмизации в решении задач и формализации знаний. Информационные ресурсы
- •5. Технические средства информационных технологий
- •5.1. Основные блоки персонального компьютера
- •С истемная
- •Генератор тактовых импульсов
- •5.2. Основные периферийные устройства, подключаемые к компьютеру
- •5.3. Компьютерные сети
- •6. Классификация и обзор программного обеспечения
- •6.1. Системное программное обеспечение
- •6.2. Инструментальные средства программирования
- •6.3. Прикладное программное обеспечение
- •7. Текстовый процессор Microsoft Word
- •7.1. Назначение. Основные понятия
- •7.2. Типовая последовательность создания документа
- •Пример разработки стилей
- •7.3. Редактирование, форматирование и оформление документа, вставка таблиц
- •Выделение фрагмента текста мышью
- •7.4. Вставка символа, рисунка, объекта
- •8. Электронные таблицы Microsoft Excel
- •8.1. Назначение. Основные понятия
- •8.2. Обобщенная технология работы в электронной таблице
- •8.3. Ввод, редактирование, форматирование данных
- •8.4. Выполнение расчетов по формулам и построение диаграмм
- •Операторы, используемые в Microsoft Excel
- •Ряды и категории данных
- •8.5. Сортировка, консолидация данных, сводные таблицы
- •9. Системы управления базами данных. Субд Access
- •9.1. Основные понятия
- •9.2. Нормализация отношений (таблиц) и обеспечение целостности данных в реляционной базе данных
- •9.3. Работа с субд Access
- •21 Августа 1999 г. Страница 1 из 1
- •9.4. Основные возможности языка структурированных запросов (sql)
- •10. Введение в программировние. Создание приложений на языке Visual Basic for Applications
- •10.1. Основные понятия
- •10.2. Создание интерфейса пользователя
- •V Режим конструктора isual Basic
- •10.3. Модули, процедуры, функции
- •Часто используемые встроенные функции Visual Basic
- •10.4. Работа с переменными, массивами, константами и со свойствами объектов
- •Встроенные типы данных vba
- •10.5. Основные инструкции языка Visual Basic и отладка программ
- •Арифметические операции
- •Операции сравнения
- •11. Самостоятельные работы
- •11.1. База данных “Архив предприятия”
- •11.2. Разработка приложения “Решение системы линейных уравнений”
- •Литература к самостоятельной работе 2
- •11.3. Разработка приложения “Статистический анализ данных”
- •Литература к самостоятельной работе 3
- •11.4. Разработка приложения “Преобразование географических координат в прямоугольные и прямоугольных в географические”
- •Литература к самостоятельной работе 4
- •11.5. Разработка приложения “Графические построения в плоскости xoy”
11.2. Разработка приложения “Решение системы линейных уравнений”
Взять за основу модуль, приведенный после рис. 10.5. Модуль должен содержать следующие общие процедуры:
MNTab - Определение M, N - размерности матрицы,
TabCXCY - Копирование идентификаторов столбцов и строк в массивы CX, CY,
TabA - Копирование матрицы с листа Excel в массив A,
XAI (I) - вычисление скалярного произведения вектора x на вектор aI (функция) с записью результата в I-ю ячейку первого столбца на листе Excel,
Jordan (r) - Шаг жорданова исключения (процедура поясняется ниже) – преобразование всей матрицы A с записью новых значений ее элементов в таблицу на листе Excel, обращение к процедуре TabA, перемена местами элементов CX(r) и CY(r) с записью значений и в ячейки Excel, копирование матрицы с листа Excel в массив A.
Разместить на листе Excel командную кнопку BTN1 с надписью (свойство Caption) Решение системы уравнений.
В событийную процедуру BTN1_Click включить:
определение M, N, вывод сообщения и завершение работы, если M не равно N;
переопределение размерности массивов CX, CY, A и копирование в них содержимого соответствующих ячеек листа Excel;
выполнение шага жорданова исключения N раз (r – номер диагонального элемента матрицы, называемого разрешающим; с ним выполняется шаг жорданова исключения); перед обращением к процедуре Jordan (r) надо проверять, не равен ли нулю элемент матрицы A(r,r) – этот фрагмент программы можно записать так:
For r = 1 To N
If Abs(A(r, r)) < 0.000000001 Then
MsgBox "Матрица содержит линейно зависимые строки (столбцы)": Exit Sub
End If
Jordan r
Next r
(проверка на нуль в программах выполняется с учетом точности вычислений);
вычисление каждого значения Xi (i=1,…,N) путем умножения вектора y на вектор Ai с использованием функции XAI; заметим, что после того, как были выполнены N шагов жордановых исключений, на месте матрицы A находится обратная матрица A-1, а массивы CX и CY поменялись своим содержимым – в массиве CX теперь хранятся известные значения Yj (j=1,…,N), а в массиве CY (и в первом столбце на листе Excel) – идентификаторы X1,…,XN. Эти идентификаторы и надо заменить вычисленными значениями Xi (i=1,…,N).
Поясним алгоритм шага жорданова исключения. В подразделе 10.4 упоминалось, что матрицу A (см. рис. 10.5) можно рассматривать как таблицу коэффициентов, позволяющих связать любой Yi уравнением со значениями X1 ,…, XN : Yi = x ∙ Ai. Глядя на эту таблицу, над столбиками представим себе значения Xj (вектор-строку x), а левее строк – значения Yi (вектор-столбец y). Один шаг жорданова исключения с разрешающим элементом Arr приводит к тому, что Xr и Yr меняются местами, а вся матрица A изменяется так:
разрешающий элемент A(r,r)=1/A(r,r) ,
элементы разрешающего столбца A(i,r)=A(i,r)/A(r,r) , i=1 ,…, N ,
элементы разрешающей строки A(r,j)= - A(r,j)/A(r,r), j=1 ,…, N ,
прочие элементы A(i,j) = ( A(i,j) ∙ A(r,r) – A(i,r) ∙ A(r,j) ) / A(r,r) .
После того, как будут выполнены N шагов жордановых исключений, вектор y окажется наверху (над матрицей), а вектор x – слева от матрицы. Сама матрица к этому моменту будет обращена – теперь она содержит коэффициенты, позволяющие вычислять значения Xi , если известны значения Yj : X(i)= y ∙ Ai.
Приложение надо отладить на примерах. Подготовить примеры совсем не трудно. Представим себе, что N=3, а значения элементов вектора x известны, например: x={1,2,3}.
Теперь, задавшись матрицей A, например, A={11,13,13; 21,22,24; 30,32,33}, получим y={76, 137, 193}. Неизвестными будем считать значения X1=1, X2=2, X3=3. Их и найдем.