Численные методы решения уравнений и систем уравнений
Метод половинного деления как один из методов решения нелинейных уравнений, его основа на последовательном сужении интервала, содержащего единственный корень уравнения. Алгоритм решения задачи. Описание программы, структура входных и выходных данных.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 09.11.2012 |
Размер файла | 454,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
МИНОБРНАУКИ РОССИИ
Федеральное агентство по образованию
Государственное образовательное учреждение
высшего профессионального образования
"ИЖЕВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ
УНИВЕРСИТЕТ Им.М.Т. Калашникова"
Кафедра "Программное обеспечение"
Лабораторная работа
по дисциплине "Вычислительные методы"
на тему "Численные методы решения уравнений и систем уравнений"
Выполнил: Кузнецов А.В.
ст. гр. Б03-191-1
Принял: Коробейников А.В.
доцент, к. т. н.
Ижевск 2012
Содержание
- 1. Метод половинного деления
- 1.1 Постановки задачи
- 1.2 Краткое описание метода выполнения
- 1.3 Алгоритм решения задачи
- 1.4 Описание программы
- 1.4.1 Структура входных данных
- 1.4.2 Структура выходных данных
- 1.5 Листинг текста программы
- 1.6. Контрольные примеры
- 1.7 Выводы
- 2. Метод ГАУСА
- 2.1 Постановка задачи
- 2.2 Алгоритм решения задачи
- 2.3 Описание программы
- 2.3.1 Структура входных данных
- 2.3.2 Структура выходных данных
- 2.4 Листинг текста прораммы
- 2.5 Контрольные примеры
- 2.6 Выводы
1. Метод половинного деления
1.1 Постановки задачи
Запрограммировать метод половинного деления и вычислить один корень уравнения xsinx-1=0 (рисунок 1.1) с точностью до 0,001.
Рисунок 1.1
1.2 Краткое описание метода выполнения
Метод половинного деления один из методов решения нелинейных уравнений и основан на последовательном сужении интервала, содержащего единственный корень уравнения F (x) =0 до того времени, пока не будет достигнута заданная точность Е. Метод используется при решении квадратных уравнений и уравнений высших степеней.
1.3 Алгоритм решения задачи
Пусть задан отрезок [а,b], содержащий один корень уравнения. Этот отрезок может быть предварительно найден с помощью шагового метода.
численный метод уравнение программа
1. Определить новое приближение корня х в середине отрезка [а,b]: c= (а+b) /2.
2. Найти значения функции в точках а и х: F (a) и F (c).
3. Проверить условие F (a) *F (c) < 0. Если условие выполнено, то корень расположен на отрезке [а,c]. В этом случае необходимо точку b переместить в точку х (b=c). Если условие не выполнено, то корень расположен на отрезке [c,b]. В этом случае необходимо точку а переместить в точку c (а=c).
4. Перейти к пункту 1 и вновь поделить отрезок пополам. Алгоритм продолжить до того времени, пока не будет выполнено условие |F (x) | < e.
1.4 Описание программы
1.4.1 Структура входных данных
Имя переменной |
Тип |
Какую функцию выполняет |
|
A |
Дробное число |
Начало отрезка |
|
B |
Дробное число |
Конец отрезка |
|
E |
Дробное число |
Заданная точность |
1.4.2 Структура выходных данных
Имя переменной |
Тип |
Какую функцию выполняет |
|
c |
Дробное число |
Приближенный корень |
1.5 Листинг текста программы
#include <stdio. h>
#include <math. h>
#include <iostream>
using namespace std;
double function (double x)
{
return (x*sin (x) - 1);
}
int main ()
{
double a,a2,b,b2,c,e;
cout<<"Enter a: ";
cin>>a;
cout<<"Enter b: ";
cin>>b;
cout<<"Enter e: ";
cin>>e;
c= (a+b) /2;
while ( (fabs (b-a) >e) && (function (c)! =0))
{
if (function (a) *function (c) <0) b=c;
else a=c;
c= (a+b) /2;
}
cout<<"\nC="<<c<<endl;
return 0;
}
1.6. Контрольные примеры
1.7 Выводы
Корни, найденные с помощью программы, сходятся с корнями, полученными аналитически, значит, программа работает корректно.
2. Метод ГАУСА
2.1 Постановка задачи
Запрограммировать метод Гауса и вычислить корни для матрицы вида:
=
2.2 Алгоритм решения задачи
Суть метода Гауса заключается в последовательном исключении неизвестных. Пусть в системе уравнений (рисунок 2.1) первый элемент a11 (0) не равен 0.
Рисунок 2.1
Назовем его ведущим элементом первой строки. Поделим все элементы этой строки на a11 (0) и исключим x1 из всех последующих строк, начиная со второй, путем вычитания первой (преобразованной), умноженной на коэффициент при x1 в соответствующей строке. Получим следующий вид (рисунок 2.2).
Рисунок 2.2
Если a22 (1), то, продолжая аналогичное исключение, приходим к системе уравнений с верхней треугольной матрицей (рисунок 2.3).
Рисунок 2.3
Из нее в обратном порядке находим все значения xi (рисунок 2.4)
Рисунок 2.4
Процесс приведения к системе с треугольной матрицей называется прямым ходом, а нахождения неизвестных - обратным.
2.3 Описание программы
2.3.1 Структура входных данных
Имя переменной |
Тип |
Какую функцию выполняет |
|
a |
Двумерный массив дробных чисел |
Элементы матрицы |
2.3.2 Структура выходных данных
Имя переменной |
Тип |
Какую функцию выполняет |
|
x |
Массив дробных чисел |
Корни системы уравнений |
2.4 Листинг текста прораммы
#include <iostream>
#include <stdlib. h>
using namespace std;
void main ()
{
const int n=3; // Размерность системы
double a [3] [4] ={{0.20, 0.44, 0.81, 0.74},{0.58, - 0.29, 0.05, 0.02},{0.05, 0.34, 0.10, 0.32}};
int i,j,k;
double buf,x [n];
for (i=0; i<n; i++)
{
for (j=0; j<n+1; j++)
{
printf ("%6.2f", a [i] [j]);
}
printf ("\n");
}
// Прямой ход метода Гаусса
for (i=0; i<n-1; i++)
for (j=i+1; j<n; j++)
{
buf=a [i] [i] /a [j] [i];
for (k=0; k<=n; k++)
a [j] [k] =a [j] [k] *buf-a [i] [k];
}
// Обратный ход метода Гаусса
x [n-1] =a [n-1] [n] /a [n-1] [n-1];
for (i=n-2; i>=0; i--)
{
buf=0;
for (j=i+1; j<n; j++)
buf+=a [i] [j] *x [j];
x [i] = (a [i] [n] - buf) /a [i] [i];
}
cout << endl << "Reshenie: " << endl;
for (i=0; i<n; i++)
printf ("%5.2f \n", x [i]);
}
2.5 Контрольные примеры
2.6 Выводы
Корни, найденные с помощью программы, сходятся с корнями, полученными аналитически, значит, программа работает корректно.
Размещено на Allbest.ru
Подобные документы
Особенности точных и итерационных методов решения нелинейных уравнений. Последовательность процесса нахождения корня уравнения. Разработка программы для проверки решения нелинейных функций с помощью метода дихотомии (половинного деления) и метода хорд.
курсовая работа [539,2 K], добавлен 15.06.2013Сравнительный анализ итерационных методов решения нелинейных алгебраических и трансцендентных уравнений. Простейший алгоритм отделения корней нелинейных уравнений. Метод половинного деления. Геометрический смысл метода Ньютона. Метод простой итерации.
реферат [95,0 K], добавлен 06.03.2011Особенности решения уравнений с одной переменной методом половинного деления. Оценка погрешности метода простой итерации. Суть решения уравнений в пакете Mathcad. Векторная запись нелинейных систем. Метод Ньютона решения систем нелинейных уравнений.
курсовая работа [2,1 M], добавлен 12.12.2013Обзор существующих методов по решению нелинейных уравнений. Решение нелинейных уравнений комбинированным методом и методом хорд на конкретных примерах. Разработка программы для решения нелинейных уравнений, блок-схемы алгоритма и листинг программы.
курсовая работа [435,8 K], добавлен 15.06.2013Численные методы решения нелинейных уравнений, систем линейных и нелинейных алгебраических уравнений, дифференциальных уравнений, определенных интегралов. Методы аппроксимации дискретных функций и методы решения задач линейного программирования.
методичка [185,7 K], добавлен 18.12.2014Численные методы решения задач. Решение алгебраических и трансцендентных уравнений. Уточнение корня по методу половинного деления. Решение систем линейных уравнений методом итераций. Методы решения дифференциальных уравнений. Решение транспортной задачи.
курсовая работа [149,7 K], добавлен 16.11.2008Исследование количества, характера и расположения корней. Определение их приближенных значений итерационными методами: половинного деления (дихотомии) и хорд. Тексты программ. Решение уравнений на языках программирования Borland Delfi и Turbo Pascal.
курсовая работа [500,3 K], добавлен 15.06.2013Изучение методов решения нелинейных уравнений таких как: метод Ньютона, модифицированный метод Ньютона, метод Хорд, метод простых Итераций. Реализация программы для персонального компьютера, которая находит решение нелинейного уравнения разными способами.
практическая работа [321,9 K], добавлен 24.06.2012Суть основных идей и методов, особенностей и областей применения программирования для численных методов и решения нелинейных уравнений. Методы итераций, дихотомии и хорд и их использование. Алгоритм метода Ньютона, создание программы и ее тестирование.
курсовая работа [423,0 K], добавлен 17.02.2010Методы решения нелинейных уравнений: прямые и итерационные. Методы решения трансцендентных, алгебраических уравнений. Метод деления отрезка пополам, Ньютона, простой итерации. Поиск корня уравнения методом простой итерации с помощью электронных таблиц.
контрольная работа [2,4 M], добавлен 16.12.2011