Численные методы решения уравнений и систем уравнений
Решение системы линейных алгебраических уравнений методом Гаусса. Анализ способа нахождения корней функции, не прибегая к вычислению производной. Построение последовательных приближений. Итерационный численный метод нахождения нуля заданной функции.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 17.12.2016 |
Размер файла | 134,9 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство образования и науки РФ
Федеральное государственное бюджетное образовательное учреждение высшего образования
«Ижевский государственный технический университет имени М.Т. Калашникова»
Кафедра «Программное обеспечение»
Отчёт по лабораторной работе №1
по теме «Численные методы решения уравнений и систем уравнений»
Выполнил А.С. Варламов
Принял А.В. Коробейников
Ижевск 2016
1. ЗАДАНИЕ НА ЛАБОРАТОРНУЮ РАБОТУ
Вариант №10
Цель работы: закрепление теоретического материала по разделам: численное решение уравнений и численное решение систем уравнений.
Задание на выполнение работы:
1) решение уравнения одним из методов Ньютона при a = -1 и b = 0;
2) решение системы линейных алгебраических уравнений методом Гаусса.
2. ОСНОВНЫЕ ПОЛОЖЕНИЯ ПО ЗАДАНИЯМ
2.1 Задание 1
Метод секущих является модификацией метода Ньютона, позволяющий находить корни функции, не прибегая к вычислению производной. Значение производной в итерационной формуле заменяется её оценкой по двум предыдущим точкам итераций.
Метод Ньютона (также известный как метод касательных) -- это итерационный численный метод нахождения корня (нуля) заданной функции. Метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643--1727).
Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации. В отличие от метода Ньютона, метод секущих имеет меньшую скорость сходимости. Порядок сходимости метода равен «золотому сечению», ? 1.618033.
линейный алгебраический уравнение корень
2.1.1 Алгоритм
Задается начальное и конечное приближение x0 и хn.
Пока не выполнено условие остановки, в качестве которого можно взять |xn+1 -xn| < (то есть погрешность в нужных пределах), вычисляют новое приближение:
2.2 Задание 2
Метод Гаусса -- классический метод решения системы линейных алгебраических уравнений (СЛАУ). Назван в честь немецкого математика Карла Фридриха Гаусса. Это метод последовательного исключения переменных, когда с помощью элементарных преобразований система уравнений приводится к равносильной системе треугольного вида, из которой последовательно, начиная с последних (по номеру), находятся все переменные системы.
Алгоритм решения СЛАУ методом Гаусса разделяется на два этапа.
На первом этапе осуществляется так называемый прямой ход, когда путём элементарных преобразований над строками систему приводят к ступенчатой или треугольной форме, либо устанавливают, что система несовместна. А именно, среди элементов первого столбца матрицы выбирают ненулевой, перемещают его на крайнее верхнее положение перестановкой строк и вычитают получившуюся после перестановки первую строку из остальных строк, домножив её на величину, равную отношению первого элемента каждой из этих строк к первому элементу первой строки, обнуляя тем самым столбец под ним. После того, как указанные преобразования были совершены, первую строку и первый столбец мысленно вычёркивают и продолжают пока не останется матрица нулевого размера. Если на какой-то из итераций среди элементов первого столбца не нашёлся ненулевой, то переходят к следующему столбцу и проделывают аналогичную операцию.
На втором этапе осуществляется так называемый обратный ход, суть которого заключается в том, чтобы выразить все получившиеся базисные переменные через небазисные и построить фундаментальную систему решений, либо, если все переменные являются базисными, то выразить в численном виде единственное решение системы линейных уравнений. Эта процедура начинается с последнего уравнения, из которого выражают соответствующую базисную переменную (а она там всего одна) и подставляют в предыдущие уравнения, и так далее, поднимаясь по «ступенькам» наверх. Каждой строчке соответствует ровно одна базисная переменная, поэтому на каждом шаге, кроме последнего (самого верхнего), ситуация в точности повторяет случай последней строки.
3. ТЕКСТ ПРОГРАММЫ
3.1 Решение уравнения
#include <iostream>
#include <cmath>
#include <conio.h>
#include <iomanip>
using namespace std;
double F (double x) {
return (sin(0.2*x - 3))/(pow(x, 2)+1);
}
int main()
{
setlocale(LC_ALL, "rus");
double a, b, E = 0.0001;
int n=0;
cout << "Метод секущих" << endl;
cout << "Введите начало и конец отрезка (через пробел)" << endl;
cin >> a >> b;
if((F(a)*F(b) < 0) && (a<b)) {
double xa = a;
double xb = b;
while(abs(F(xa)) > E) {
n++;
double p1 = F(xa);
xa = xb-F(xb)*((xb-xa)/(F(xb)-F(xa)));
xb=p1;
cout << "Ответ x=" << xa << endl << "Найден на " << n << "-ой итерации" << endl << "Значение функции при данном х: ";
cout << F(xa);
} else {
cout << "Что-то пошло не так (нет корня или начало отрезка больше конца)" << endl;
}
getch();
return 0;
}
3.2 Решение СЛАУ
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <locale.h>
#include <conio.h>
using namespace std;
int main()
{
int i, j, n, m;
setlocale(LC_ALL, "rus");
n=3;
m=4;
float **matrix = new float *[n];
for (i=0; i<n; i++)
matrix[i] = new float [m];
matrix[0][0] = -9.11;
matrix[0][1] = -1.06;
matrix[0][2] = 0.67;
matrix[0][3] = -1.56;
matrix[1][0] = 7.61;
matrix[1][1] = 6.35;
matrix[1][2] = -2.42;
matrix[1][3] = 2.33;
matrix[2][0] = -4.64;
matrix[2][1] = 1.23;
matrix[2][2] = -8.88;
matrix[2][3] = -3.75;
cout << "matrix: " << endl;
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
cout << matrix[i][j] << " ";
cout << endl;
}
cout << endl;
float tmp, *xx = new float[m];
int k;
for (i=0; i<n; i++)
{
tmp=matrix[i][i];
for (j=n;j>=i;j--)
matrix[i][j]/=tmp;
for (j=i+1;j<n;j++)
{
tmp=matrix[j][i];
for (k=n;k>=i;k--)
matrix[j][k]-=tmp*matrix[i][k];
}
}
xx[n-1] = matrix[n-1][n];
for (i=n-2; i>=0; i--)
{
xx[i] = matrix[i][n];
for (j=i+1;j<n;j++) xx[i]-=matrix[i][j]*xx[j];
}
for (i=0; i<n; i++)
cout << xx[i] << " ";
cout << endl;
delete[] matrix;
getch();
return 0;
}
4. РЕЗУЛЬТАТЫ РЕШЕНИЯ
4.1 Решение уравнения =0
На графике (рис. 1) видно, что уравнение имеет решение на отрезке [-2 ; 0].
Рис. 1
Корень уравнения был найден с точностью 0.0001.
Корень уравнения: .
4.2 Решение СЛАУ
Решим систему методом Гаусса:
Результат работы программы:
Таблица 1
-9.11 |
-1.06 |
0.67 |
-1.56 |
|
7.61 |
6.35 |
-2.42 |
2.33 |
|
-4.64 |
1.23 |
-8.88 |
-3.75 |
Корни системы уравнений:
ВЫВОД
В ходе работы были написаны две программы на языке C++, одна из которых реализует метод секущих, а вторая - метод Гаусса.
Решение уравнения =0 методом секущих дало достаточно точный результат . Решение системы линейных алгебраических уравнений методом Гаусса дало следующие результаты:
Полученные ответы получились достаточно точными и удовлетворяют запрашиваемым требованиям к погрешности результата. В процессе работы были закреплены на практике теоретические сведения по разделам «численное решение уравнений» и «численное решение систем уравнений».
Размещено на Allbest.ru
...Подобные документы
Системы линейных алгебраических уравнений. Код программы для решения систем линейных алгебраических уравнений. Математические и алгоритмические основы решения задачи методом Гаусса. Программная реализация решения. Алгоритмы запоминания коэффициентов.
лабораторная работа [23,5 K], добавлен 23.09.2014Алгоритм решения систем линейных уравнений методом Гаусса, его этапы. Система уравнений для определения коэффициентов сплайна, представляющая собой частный случай систем линейных алгебраических уравнений. Программная реализация, тестовый пример.
курсовая работа [431,8 K], добавлен 15.06.2013Решение системы линейных уравнений с матричными элементами и свободными членами с использованием метода Гаусса с выбором главного элемента, основанного на приведении матрицы системы к треугольному виду с помощью нахождения элементов главной диагонали.
лабораторная работа [71,1 K], добавлен 10.12.2014Системы линейных алгебраических уравнений. Решение систем уравнений графическим способом. Разработка программного кода модуля, реализующего приближенное решение систем линейных уравнений графическим способом. Отладка программного модуля "Метод Гаусса".
курсовая работа [858,5 K], добавлен 01.12.2013Численные методы решения нелинейных уравнений, систем линейных и нелинейных алгебраических уравнений, дифференциальных уравнений, определенных интегралов. Методы аппроксимации дискретных функций и методы решения задач линейного программирования.
методичка [185,7 K], добавлен 18.12.2014Метод Гаусса как прямой метод нахождения решений для систем системы линейных уравнений маленькой и средней размерности с помощью компьютерной техники. Редактор кода и исходный код основной программы в Delphi, блок-схема и графическое решение задачи.
контрольная работа [460,8 K], добавлен 15.06.2015Решение уравнения методом половинного деления. Программа в Matlab для уравнения (x-2)cos(x)=1. Решение нелинейных уравнений методом Ньютона. Интерполяция заданной функции. Решение системы линейных алгебраических и обыкновенных дифференциальных уравнений.
курсовая работа [1,4 M], добавлен 15.08.2012Применение итерационных методов численного решения системы линейных алгебраических уравнений при вычислении на ЭВМ. Математические и алгоритмические основы решения задачи, метод Гаусса. Функциональные модели и блок-схемы, программная реализация решения.
курсовая работа [527,5 K], добавлен 25.01.2010Численные методы решения задач. Решение алгебраических и трансцендентных уравнений. Уточнение корня по методу половинного деления. Решение систем линейных уравнений методом итераций. Методы решения дифференциальных уравнений. Решение транспортной задачи.
курсовая работа [149,7 K], добавлен 16.11.2008Разработка программного продукта для решения систем линейных алгебраических уравнений методом Гаусса с помощью ЭВМ. Математическое описание объекта моделирования, начальные и граничные условия. Алгоритм реализации задачи. Использование модуля CRT.
курсовая работа [269,6 K], добавлен 07.01.2016Решение систем алгебраических линейных уравнений методом Крамера. Сущность метода прогонки. Программная реализация метода: блок-схема алгоритма, листинг программы. Проверка применимости данного способа решения для конкретной системы линейных уравнений.
курсовая работа [581,0 K], добавлен 15.06.2013Проектирование приложения, позволяющего находить решение системы алгебраических линейных уравнений матричным методом. Выбор количества уравнений, заполнение значений коэффициентов системы уравнений и свободных членов, алгоритм решения линейных уравнений.
курсовая работа [939,4 K], добавлен 16.01.2014Матричная форма записи системы линейных уравнений, последовательность ее решения методом исключений Гаусса. Алгоритмы прямого хода и запоминания коэффициентов. Решение задачи о сглаживании экспериментальных данных с помощью метода наименьших квадратов.
курсовая работа [610,7 K], добавлен 25.06.2012Использование метода Зейделя для нахождения корней системы линейных алгебраических уравнений. Суть метода простых итераций. Оценка погрешности нормальной системы. Составление алгоритма, блок-схемы и кода программы. Тестовый пример и проверка в MathCad.
лабораторная работа [174,8 K], добавлен 02.10.2013Объектно-ориентированное программирование: основная идея, сопровождение, модификация, термины и положения. Понятие объекта как логической единицы, правила (методы) обработки данных. Метод Гаусса для решения систем линейных алгебраических уравнений.
курсовая работа [125,1 K], добавлен 22.04.2009Сущность и особенности языка программирования Си. Основные этапы алгоритма решения системы линейных алгебраических уравнений методом Гаусса, реализация программы для их расчета. Инструкции пользователя и программиста. Тестирование функции решения.
курсовая работа [153,9 K], добавлен 18.02.2013Системы линейных алгебраических уравнений. Матричный метод решения систем линейных уравнений. Решение задачи математическим методом. Блок-схема алгоритма и листинг программы. Расчет трудоемкости разработки программы. Расчет себестоимости и цены программы.
дипломная работа [144,8 K], добавлен 25.04.2012Идентификация объектов методом наименьших квадратов. Анализ коэффициентов парной, частной и множественной корреляции. Построение линейной модели и модели с распределенными параметрами. Итерационный численный метод нахождения корня (нуля) заданной функции.
курсовая работа [893,3 K], добавлен 20.03.2014Преобразование матрицы системы линейных алгебраических уравнений (СЛАУ) с помощью алгоритма Гаусса. Решение задачи методом простой итерации. Создание блок-схемы и текста программы для решения СЛАУ, реализованной на языке программирования Turbo Pascal.
курсовая работа [1,2 M], добавлен 15.06.2013Применение метода Гаусса для решения системы линейный алгебраических уравнений. Алгоритм нахождения максимального по модулю элемента в текущей строке и его перестановки на первое место при помощи матрицы перестановок. Блок-схема и код программы.
лабораторная работа [171,3 K], добавлен 02.10.2013