АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Задание. 1. Округляя следующие числа до трех значащих цифр, определить абсолютную и относительную погрешности полученных приближенных чисел:

Читайте также:
  1. Window(x1, y1, x2, y2); Задание окна на экране.
  2. Б) Задание на проверку и коррекцию исходного уровня.
  3. В основной части решается практическое задание.
  4. Второй блок. Количество баллов за задание – 3.
  5. Домашнее задание
  6. Домашнее задание
  7. Домашнее задание
  8. Домашнее задание
  9. Домашнее задание
  10. Домашнее задание
  11. Домашнее задание
  12. Домашнее задание

1. Округляя следующие числа до трех значащих цифр, определить абсолютную и относительную погрешности полученных приближенных чисел:

 

Варианты заданий

  2,1514   -392,85   46,453
  0,16152   0,1545   0,088748
  0,01204   0,003922   0,34484
  1,225   625,55   0,096835
  -0,0015281   94,525   0,037862

 

2. Определить количество верных цифр в числе, если известна его a) абсолютная, b) относительная погрешности:

 

Варианты заданий

  a) x=0.3941, Δx=0.25*10-2 b) a=1.8921, δa=0.1*10-2   a) x=0.1132, Δx=0.1*10-3 b) a=0.2218, δa=0.2*10-1
  a) x=38.2543, Δx=0.27*10-2 b) a=22.351, δa=0.1   a) x=293.481, Δx=0.1 b) a=0.02425, δa=0.5*10-2
  a) x=2.325, Δx=0.1*10-1 b) a=0.000135, δa=0.15   a) x=14.00231, Δx=0.1*10-3 b) a=9.3598, δa=0.1%
  a) x=0.0842, Δx=0.15*10-2 b) a=0.11452, δa=10%   a) x=0.00381, Δx=0.1*10-4 b) a=48361, δa=1%
  a) x=-32.285, Δx=0.2*10-2 b) a=592.8, δa=2%   a) x=-0.2113, Δx=0.5*10-2 b) a=14.9360, δa=1%
  a) x=8.3445, Δx=0.2*10-2 b) a=46.453, δa=0.15%   a) x=0.38725, Δx=4.2*10-4 b) a=5.8425, δa=0.2%
  a) x=-6.4257, Δx=2.4*10-3 b) a=17.2834, δa=0.3%   a) x=22.553, Δx=0.1*10-2 b) a=2.8546, δa=0.3%
  a) x=0.75244, Δx=0.1*10-4 b) a=-97041.6, δa=5%    

 

3. Произвести расчет по заданной формуле для приведенных исходных данных. Рассчитать границы, погрешность и значение результата.

Варианты заданий

1. , где , , .  
2. , где , .  
3. , где , ,  
4. , где , , .  
5. , где , , , .  
6. , где , , ,
7. , где , , .
8. , где , .
9. , где , , .
10. , где , , .
11. , где , , .
12. , где , , , .
13. , где , , .
14. , где , , , .  
15. , где , , .

Глава 2
ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ ПОДХОД
К ПРОГРАММИРОВАНИЮ МЕТОДОВ
ЛИНЕЙНОЙ АЛГЕБРЫ

 

 

Прямые методы линейной алгебры – это методы решения систем линейных алгебраических уравнений (СЛАУ) и методы решения проблемы собственных значений. Известно, что прямые методы теоретически базируются на тех или иных элементарных матричных преобразованиях, которые, в конечном счете, приводят задачу к эквивалентной, но более простой форме, допускающей ее непосредственное решение [21]. Набор таких преобразований сравнительно невелик. Исходя из технологии объектно-ориентированного программирования (ООП) эти преобразования могут быть представлены матричными операциями с объектами особого рода – абстрактными матрицами [21]. Важной методологической составляющей реализации технологии ООП в курсе изучения вычислительных методов алгебры является определение необходимого набора таких матриц и представление их классами единой матричной иерархии, наряду с основными функциональными матрицами. Далее все прямые методы линейной алгебры рассматриваются как композиции матричных преобразований. При этом их программная реализация основывается на организации обобщенного суперкласса вычислительных методов, применимого ко всем конкретным типам задач линейной алгебры.

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

 

• AbstractMatrix

• Vector

• DiagonalMatrix

• ThreeDiagonalMatrix

• EMatrix

• SwapMatrix

• SquareMatrix

• FrobeniusMatrix

• JacobiMatrix

• AugmentMatrix

 

 

Вершиной матричной иерархии является абстрактный класс «AbstractMatrix», обобщающий свойства всех матриц. Далее иерархия продолжается тремя основными классами: «Vector» (Вектор), «SquareMatrix» (Квадратная матрица) и «AugmentMatrix» (Расширенная матрица). Эти классы объединяют основные функциональные группы элементарных матриц.

Класс «Vector» представлен тремя основными классами: «DiagonalMatrix» (Диагональная матрица), «ThreeDiagonalMatrix» (Трехдиагональная матрица), «EMatrix» (Единичная матрица),

Класс «DiagonalMatrix» определяет группу диагональных матриц, содержащих ненулевые элементы только на главной диагонали. На основе класса диагональных матриц строится класс «ThreeDiagonalMatrix» – трехдиагональных матриц.

Класс «EMatrix» представляет традиционный математический объект – единичную матрицу. Данный тип матрицы достаточно часто используется в вычислительной математике для представления более сложных матричных типов. В группе матриц «EMatrix» отдельно рассматривается класс матриц перестановок «SwapMatrix». Этот класс определяет элементарную перестановку пары столбцов или пары строк. Данный матричный класс соответствует преобразованиям переупорядочения столбцов и строк в основной матрице, которые обычно применяются в методах выбора главного элемента.

Класс «SquareMatrix» реализует семейство элементарных квадратных матриц. В рамках этого класса выделяют две группы – класс «FrobeniusMatrix» (Матрица Фробениуса), класс «JacobiMatrix» (Матрица Якоби). Эти классы необходимы для решения задач на собственные значения.

Класс «AugmentMatrix» представляет собой группу расширенных матриц.

Создание конкретного матричного класса в рамках ООП подхода сводится к реализации набора операций с элементарными матрицами [1; 21]. Этот набор определяется родительским классом «AbstractMatrix». Для основных матричных объектов виртуально определяются необходимые операции – получения и установки значения элемента, подсчета количества строк и столбцов матрицы, сложение, вычитание, умножение матриц. Операции матричного умножения определяются в двух вариантах, которые соответствуют левостороннему и правостороннему умножению.

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

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

Другая возможность экономии памяти при проведении и хранении необходимых матричных преобразований состоит в размещении их непосредственно на месте основной матрицы. Техника in-рlасе размещения применяется при процедурной реализации матричных факторизаций. При объектной реализации следует предусмотреть специальные классы элементарных матриц в рамках единой иерархии, которые через ссылку на основную матрицу определяют методы доступа к ее сегментам, хранящим элементы преобразования [15; 21].

Для эффективного применения ООП необходимо также сами методы линейной алгебры рассматривать как реализацию объектов соответствующих классов в их целостной объектной классификации [21]. При этом классификация объектно-ориентированного подхода должна следовать классификации задач линейной алгебры, т.к. результатом решения различных постановок являются объекты разных типов, и это должно отражаться в спецификациях алгоритмических классов. Кроме того, в классификации желательно отразить деление алгоритмов на прямые и итерационные, поскольку принципы их организации существенно отличаются, а это неизбежно приводит к различиям в их программной реализации.

В силу сделанных замечаний объектная классификация алгоритмов линейной алгебры может быть представлена схемой, в которой все алгоритмы линейной алгебры объединены в базовый класс «VMA». В рамках этого класса «VMA» происходит классификация на алгоритмы факторизации «FactorizationAlgorithms», основные алгоритмы решения систем линейных алгебраических уравнений «SLAU» и алгоритмы проблем собственных значений «Eigenvalues».

Объектная классификация методов факторизации представлена наиболее важными группами методов LU, LDU и QR-разложения произвольной матрицы, а также STS и STDS-разложений для симметричных матриц.

Принципы построения всех алгоритмических классов очень близки. В группах алгоритмов «SLAU» и «Eigenvalues» выделены классы «DirectMethods», «DirectMethodsE», «IterationMethods», «IterationMethodsE» для реализации прямых и итерационных алгоритмов соответственно. При организации этих классов в схеме предусматривается выделение основных изучаемых методов.

Описанная условная иерархия выглядит следующим образом.

• VMA

• FactorizationAlgorithms

• LU_decomposition

• LDU_decomposition

• STS_decomposition

• SDS_decomposition

• QR_decomposition

• Eigenvalues

• DirectMethodsE

• danilevskyMethod

• IterationMethodsE

• PartialProblem

• iterationMethod

• CompleteProblem

• jacobiMethod

• qrMethod

• SLAU

• DirectMethods

• DirectMethodsFactorization

• gaussMethod

• gaussChooseElement

• gaussJordanMethod

• squareMethod

• DirectMethodsNF

• sweepMethod

• IterationMethods

• simpleIterationMethod

• zeidelMethod

• methodSkorSpusk

 

В группе «SLAU» прямые алгоритмы решения систем линейных алгебраических уравнений «DirectMethods» в свою очередь подразделяются на алгоритмы непосредственного решения систем линейных алгебраических уравнений «DirectMethodsFactorization» (Прямые методы, использующие факторизацию) и «DirectMethodsNF» (Прямые методы, не использующие факторизацию).

Класс методов «DirectMethodsFactorization» предусматривает реализацию «gaussMethod» метода Гаусса, метода Гаусса с выбором главного элемента «gaussChooseElement», метода Жордана-Гаусса «gaussJordanMethod» и методa квадратного корня «squareMethod». Класс методов «DirectMethodsNF» содержит метод прогонки «sweepMethod».

Класс итерационных методов решения алгебраических уравнений «IterationMethods» предусматривает реализацию метода простой итерации «simpleIterationMethod», метода Зейделя «zeidelMethod» и метода скорейшего спуска «methodSkorSpusk».

В классе «DirectMethodsE» («Прямые методы нахождения собственных значений») реализуется метод Данилевского «danilevskyMethod» для решения полной проблемы нахождения собственных значений и собственных векторов матрицы.

От класса «Итерационные методы нахождения собственных значений» («IterationMethodsE») наследуется класс «CompleteProblem» (Полная проблема нахождения собственных значений). В данном классе реализуются «qrMethod» (QR-алгоритм) и «jacobiMethod» (метод Якоби) для нахождения собственных значений произвольной квадратной матрицы.

Класс «PartialProblem» (Частичная проблема нахождения собственных значений) наследуется от класса «IterationMethodsE» (Итерационные методы нахождения собственных значений). В данном классе реализован «iterationMethod» итерационный метод нахождения наибольшего по модулю собственного значения и соответствующего собственного вектора.

Разработанный ООП-подход к программированию вычислительных методов алгебры представлен в данном пособии в виде заданий к 16 лабораторным работам.

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.013 сек.)