Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Линейных алгебраических уравнений↑ Стр 1 из 6Следующая ⇒ Содержание книги Поиск на нашем сайте
ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ
Методические указания к лабораторным работам по дисциплине “ВЫЧИСЛИТЕЛЬНАЯ МАТЕМАТИКА”
Санкт-Петербург Министерство общего и профессионального образования РФ __________________
Санкт-Петербургский государственный электротехнический университет ____________________________________________________________
ИНТЕРПОЛИРОВАНИЕ ФУНКЦИЙ И РЕШЕНИЕ СИСТЕМ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ
Методические указания к лабораторным работам по дисциплине “ВЫЧИСЛИТЕЛЬНАЯ МАТЕМАТИКА”
Санкт-Петербург
УДК 519.7
Интерполирование функций и решение систем линейных алгебраических уравнений: Методические указания к лабораторным работам по дисциплине "Вычислительная математика" / Сост.: В.Н. Кафтасьев, А.Р. Лисс, М.С. Титов; СПбГЭТУ. СПб., 1998. 32 с.
Содержат формулировку заданий лабораторных работ и необходимые для их исполнения пояснения. При разработке лабораторных работ особое внимание уделяется вопросам исследования точности и обусловленности применяемых методов машинных вычислений. Предназначены для студентов ФАВТ направления "Информатика и вычислительная техника" и специальности 220400, а также для студентов других специальностей, изучающих численные методы решения задач на ЭВМ.
Утверждено редакционно-издательским советом университета в качестве методических указаний
© СПбГЭТУ, 1998
ВВЕДЕНИЕ
Цикл лабораторных работ предназначен для студентов 2-го курса (четвертый семестр), изучающих дисциплину “Вычислительная математика” и работающих в компьютерных классах на базе ЭВМ типа IBM PC AT-286 и выше, снабженных компилятором языка С (С++). Работы цикла посвящены отработке тем “Интерполирование функций” и “Задачи линейной алгебры”. Каждая из работ ставит целью изучение либо конкретного численного метода, либо набора численных процедур (схем, формул), позволяющих реализовать выполнение одной из классических задач вычислительной математики: интерполирование функций в случаях неравноотстоящих и равноотстоящих узлов и решение систем линейных алгебраических уравнений с использованием различных вычислительных способов. Порядок расположения лабораторных работ в методических указаниях соответствует последовательности изложения лекционного материала. Для углубленного изучения упомянутых задач и методов их решения целесообразно воспользоваться изданиями [1]-[10]. Данные методические указания являются продолжением материала, изложенного авторами в [11]. Выполнять каждую лабораторную работу следует поэтапно в следующем порядке: - подготовка к решению задачи на персональной ЭВМ (ПЭВМ); - проведение вычислительного эксперимента на ПЭВМ; - анализ результатов вычислений; - оформление отчета. Подготовка к решению задачи на ПЭВМ производится как вне ком-пьютерного класса, так и непосредственно на ПЭВМ. Она включает: - ознакомление с описанием работы и заданием для выполнения; - составление программных модулей, содержащих определенные заданием и персональным вариантом вычислительные процедуры, и/или ввод исходных данных; - компиляцию разработанных программных модулей, их отладку и сопряжение с имеющимися для большинства работ программами-функциями, реализующими конкретные численные методы; - планирование вычислительного эксперимента на ПЭВМ в рамках выполняемого задания. Подпрограммы-функции, предназначенные для применения в процессе вычислений, представлены в виде библиотеки модулей на языке программирования С++. Это предопределяет ориентацию цикла работ на студентов, владеющих данным языком и навыками программирования в необходимом объеме. Проведение вычислительного эксперимента на ПЭВМ осуществляется в соответствии с порядком выполнения работы и заданием на исследование указанных зависимостей и обусловленности изучаемого метода. Анализ результатов вычислений заключается в построении исследуемых зависимостей и сравнительной оценке метода (вычислительной процедуры) по характерным для данной группы методов параметрам, например скорости сходимости, степени обусловленности, достижимой точности и т. п. Анализ результатов и оформление отчета производятся вне компьютерного класса. Отчет должен содержать: - постановку задачи; - тексты разработанных программ; - результаты вычислений, их теоретический и экспериментальный анализ в виде таблиц и графиков, снабженных необходимыми комментариями; - развернутые выводы по лабораторной работе.
ИНТЕРПОЛИРОВАНИЕ ФУНКЦИЙ
Пусть величина является функцией аргумента . Это означает, что любому значению из области определения поставлено в соответствие значение . Однако на практике часто неизвестна связь между и , т. е. невозможно записать эту связь в виде некоторой зависимости . В других случаях при известной зависимости ее использование в практических задачах затруднительно (например, она содержит сложные, трудно вычисляемые выражения). Наиболее распространенным и важным для практического использования случаем, когда вид связи между параметрами и неизвестен, является задание этой связи в виде некоторой таблицы , в которой дискретному множеству значений аргумента поставлено в соответствие множество значений функции . Эти значения – либо результаты расчетов, либо экспериментальные данные. На практике могут понадобиться значения величины и в других точках, отличных от узлов . Таким образом, приходим к необходимости использования имеющихся табличных данных для приближенного вычисления искомого параметра при любом значении (из некоторой области) определяющего параметра , поскольку точная связь неизвестна. Этой цели служит задача о приближении (аппроксимации) функций: данную функцию требуется аппроксимировать (приближенно заменить) некоторой функцией так, чтобы отклонение (в некотором смысле) от в заданной области было наименьшим. Функция при этом называется аппроксимирующей. Для практики важен случай аппроксимации функции многочленом (1.1) Этот случай, т. е. приближение многочленами, является одной из задач классического численного анализа [3], [4], [8], [10]. Рассмотрим аппроксимацию этого рода и методы ее реализации в вычислительных процедурах на ЭВМ. Коэффициенты в процедурах подбираются так, чтобы достичь наименьшего отклонения многочлена от данной функции. Если приближение строится на заданном дискретном множестве точек , то аппроксимация называется точечной. Одним из основных типов точечной аппроксимации является интерполирование, которое заключается в следующем: для данной функции строится многочлен (1.1), принимающий в заданных точках те же значения , что и функция , т. е. (1.2) При данной постановке задачи предполагается, что среди значений нет одинаковых: при . Точки называются узлами интерполяции, а многочлен - интерполяционным многочленом. Близость интерполяционного многочлена к заданной функции состоит, таким образом, в том, что их значения совпадают на заданной системе точек (узлов). Максимальная степень интерполяционного многочлена . В этом случае говорят о глобальной интерполяции, так как один многочлен (1.3) используется для интерполяции функции на всем рассматриваемом интервале изменения аргумента . Коэффициенты многочлена (1.3) находят из системы уравнений (1.2). Можно показать, что при () эта система имеет единственное решение [1] - [4], [10]. Возможны два случая задания функции : - точки располагаются на оси абсцисс неравномерно на различных расстояниях одна от другой - случай неравноотстоящих узлов; - точки располагаются на оси абсцисс равномерно с фиксирован- ным шагом - случай равноотстоящих узлов. В каждом из указанных случаев для интерполирования функций применяются различные интерполяционные формулы. Их изучению посвящены, соответственно, лабораторные работы № 9 и № 10.
Лабораторная работа № 10
В соответствии с заданием, полученным от преподавателя, студентам необходимо разработать программу, обеспечивающую вычисление значения функции в заданных точках с использованием подходящих для каждого конкретного случая интерполяционных формул.
Используя подходящую интерполяционную формулу, вычислите в точках x 1, x 2, x 3 значения функции, заданной таблицей, для узлов с равноотстоящим шагом.
Лабораторная работа № 11
В ходе выполнения работы студенты должны найти решение системы линейных уравнений с n неизвестными, заданной матрицей коэффициентов и вектором свободных членов , методом Гаусса. Выполнение работы состоит из следующих этапов: 1) с помощью преподавателя определить систему уравнений, которую нужно решить; 2) для решения системы уравнений разработать программу на языке C, использующую подпрограмму-функцию GAUSS из файла GAUSS.CPP. Данная функция имеет следующие параметры: - a - матрица коэффициентов системы уравнений размера , тип ; - - вектор свободных членов размера , тип ; - - выходной вектор результата решения размера , тип ; - - размер системы (матрицы a и вектора свободных членов ), тип . В разрабатываемой программе должна быть описана константа n max, равная максимальным размерам используемых матриц и векторов. Функция GAUSS в качестве значения типа возвращает: а) 0 - в случае нормального завершения процесса вычисления; б) 1 - в случае вырожденности матрицы а; в) 2 - если ; г) 3 - если . Провести вычисления с использованием разработанной программы и исследовать обусловленность задачи с использованием пакета Matlab, при этом для определения числа обусловленности матрицы A рекомендуется использовать функцию cond(A) [14]. Кроме того, для проверки получаемых результатов можно провести вычисления с помощью пакетов Matlab и Derive [15].
Итерации
Рассматривается система уравнений вида , (2.3) где - заданная числовая квадратная матрица n -го порядка, а b - заданный вектор (свободный член). Метод простой итерации состоит в следующем. Выбирается произвольный вектор x (начальное приближение), и строится итерационная последовательность векторов по формуле , (2.4) где k =1, 2, … Доказана теорема, что если норма , то система уравнений (2.3) имеет единственное решение и итерации (2.4) сходятся к решению со скоростью геометрической прогрессии [13]. Для оценки погрешности k -го приближения широко применяется неравенство , (2.5) которое может быть использовано для принятия решения об останове итерационного процесса при выполнении условия , где - некоторая заданная погрешность вычислений.
Лабораторная работа № 12
В работе студенты должны найти решение системы линейных уравнений с n неизвестными, заданной матрицей коэффициентов и вектором свободных членов b, методом простых итераций. Выполнение работы включает следующие этапы: 1) с помощью преподавателя определить систему уравнений, которую нужно решить. Привести исходную систему к виду (2.3), пригодному для использования метода простых итераций; 2) задать необходимую точность получения результата (количество знаков мантиссы числа); 3) разработать программу решения задачи на языке С с использованием подпрограммы-функции MITER из файла MITER.CPP. Функция MITER имеет следующие параметры: - - матрица коэффициентов преобразованной к виду (2.3) системы уравнений размера , тип ; - - вектор свободных членов преобразованной системы размера , тип ; - - полученный в результате проведения итераций вектор решения размера , тип ; - - размер системы уравнений, тип ; - - количество знаков после запятой в мантиссе результата, остающихся после округления, тип , ; - it - выходной параметр, равный количеству произведенных итераций, тип int. В качестве значения функции типа возвращается одно из следующих значений: а) 0 - все нормально, получено решение ; б) 1 - не выполняются условия сходимости итерационного процесса; в) 2 - размер ; г) 3 - значение . Константа должна быть задана при разработке головной программы аналогично тому, как это делается при выполнении лабораторной работы № 11; 4) произвести вычисления с использованием разработанной программы и построить график зависимости числа итераций от задаваемой точности.
Алгебраических уравнений
Файл GAUSS.CPP.
// Подключение математики: #include <math.h> // Математика подключена. gauss(a,b,x,n) float a[][nmax]; // Исходная матрица коэффицентов:a float b[]; // Правые части float x[]; // Результат (будет получен при решении) int n; // Количество элементов в векторах и размерность матрицы { int i,j,k,imax; int nm1=n-1; // Используется для удобства вместо n, так как // элементы массивов отсчитываются с 0, а не с 1 int err=0; // Начальное значение кода ошибки =0 (т.е. ошибки нет), // перед окончанием функции переменная err передается // в качестве значения функции float amax,t,mi,sum;
// Проверка корректности переменной n и константы nmax // в случае противоречий выход из функции: // endofproc -метка конца функции
if (n<2) { err=2; goto endofproc; } // В матрице <2 элементов if (n>nmax) { err=3; goto endofproc; } // n>реальной размерности =nmax
// Теперь все корректно.
// Далее следует... // Цикл из n-1 шагов, на каждом шаге находится главный элемент и // преобразовывается матрица. // Главный элемент определяется только из очередного столбца, // а не из всей матрицы. // n-й шаг цикла не нужен так как остается один элемент a[n-1][n-1], // который сам по себе главный (рассматривается после цикла).
for (k=0; k<=nm1-1; k++) { // Поиск главного элемента в текущем столбце (k):
for (i=k,amax=0.0; i<=nm1; i++) if (fabs(a[i][k]) > fabs(amax)) amax=a[(imax=i)][k]; // Главный элемент найден. // Если он =0, то ошибка, так как матрица вырождена и выход из функции // (метка endofproc стоит в конце функции): if (amax==0.0) { err=1; goto endofproc; } // Замена строки с найденным главным элементом на строку с номером k for (j=k;j<=nm1;j++) { t=a[imax][j]; a[imax][j]=a[k][j]; a[k][j]=t; } // Строки заменены. // Замена элементов правой части для тех же строк: t=b[imax]; b[imax]=b[k]; b[k]=t; // Заменены. // Определение mi для каждой строки (ниже главной) // и ее преобразование для найденного mi: for (i=k+1;i<=nm1;i++) { mi=-a[i][k]/amax; a[i][k]=0.0; for (j=k+1;j<=nm1;j++) a[i][j]+=a[k][j]*mi;
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-08-15; просмотров: 303; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.147.13.220 (0.014 с.) |