Разработка программ для вычислительной математики
Графическое отделение корней уравнения, алгоритм для уточнения одного из корней методом Ньютона. Разработка программы, которая, используя метод Гаусса с частичным выбором ведущего элемента, решает систему линейных уравнений и вычисляет вектор невязки.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 29.06.2016 |
Размер файла | 176,9 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
«Комсомольский-на-Амуре государственный технический университет»
Институт новых информационных технологий
Факультет инженерно-экономический
Кафедра МОП ЭВМ
РАСЧЕТНО-ГРАФИЧЕСКОЕ ЗАДАНИЕ
По дисциплине «Методы вычислений»
Студент группы 3ВТБ4а-1 Южанин А.С.
Преподаватель Кудряшова Е.С
2015
Задание 1
Отделить корни уравнения f(x) = 0 графически и построить алгоритм для уточнения одного из них методом Ньютона с точностью е = 0.001. Разработать программу, которая реализует этот алгоритм и выдает на печать приближенное значение корня и значение функции f(x) в этой точке.
Код программы
#include <iostream>
#include <windows.h>
#include <math.h>
#include <conio.h>
#include <stdio.h>
float f(float x)//заданная функция
{return (x*x*x-3*x*x-24*x-10);}
float fpro(float x)//производная функции
{return (3*x*x-6*x-24);}
void main(void)
{
setlocale(LC_ALL, "Russian");
//eps - заданная точность метода
//m - заранее вычисленное число m
//x0 - начальная точка
//x_current - текущее приближение корня
//x_next - следующее приближение корня
float eps=0.001, m=-27.00;
float x0=0, x_current, x_next;
x_current=x0;
do
{//формула метода
x_next=x_current-f(x_current)/fpro(x_current);
x_current=x_next;
}
//Проверка выполнения условия остановки
while(fabs(f(x_next))>=m*eps);
printf("Приближенное значение корня: x=%.3f", x_next);
printf("\nЗначение функции в этой точке: f(x)=%.3f\n", f(x_next));
system("pause"); // Для ожидания прекращения работы
}
Результат работы программы
Задание 2
Разработать программу, которая, используя метод Гаусса с частичным выбором ведущего элемента, решает систему линейных уравнений Ах = b, вычисляет вектор невязки и выдает их на печать.
Код программы
#include <iostream>
#include <math.h>
#include <conio.h>
#include <windows.h>
#include <stdio.h>
void main()
{
setlocale(LC_ALL, "Russian");
int i,j;//Счетчики циклов
float A[4][4], B[4], As[4][4], Bs[4];
//Исходная матрица
A[0][0]=5.7; A[0][1]=-7.8; A[0][2]=-5.6; A[0][3]=-8.3;
A[1][0]=6.6; A[1][1]=13.1; A[1][2]=-6.3; A[1][3]=4.3;
A[2][0]=14.7; A[2][1]=-2.8; A[2][2]=5.6; A[2][3]=-12.1;
A[3][0]=8.5; A[3][1]=12.7; A[3][2]=-23.7; A[3][3]=5.7;
//Исходный вектор
B[0]=2.7; B[1]=-5.5; B[2]=8.6; B[3]=14.7;
float x[4]; //вектор решений
float R[4]; //вектор невязки
float B_[4]; //вспомогательный вектор
//сохранение матрицы
for (i=0; i<4;i++)
{
Bs[i]=B[i];
for (j=0; j<4; j++);
{
As[i][j]=A[i][j];
};
};
//решение системы линейных уравнений
//k - счетчик циклов
//numb - номер строки с ведущим элементом
//str, bstr - используются при перестановке строк
//L - коофициент преобразования
int numb=0, k;
float max, str, bstr, L;
//прямой ход метода Гаусса
for (j=0; j<3; j++)
{
max=fabs(A[j][j]);
numb=j;
//определение максимального элемента в столбце
for (i=j; i<4; i++)
{
if (max<fabs(A[i][j]))
{
max=fabs(A[i][j]);
numb=i;
}
};
//если максимум - не диагональный элемент, то...
if (numb!=j)
{
//замена строк
for (i=0; i<4; i++)
{
str=A[numb][i];
A[numb][i]=A[j][i];
A[j][i]=str;
};
bstr=B[numb];
B[numb]=B[j];
B[j]=bstr;
};
//преобразование столбца
for (i=j+1; i<4; i++)
{
L=-(A[i][j]/A[j][j]); //вычисление коофициента
A[i][j]=0.0;
//обнуление элемента текущего столбца
for (k=j+1; k<4; k++)
{
A[i][k]=A[i][k]+A[j][k]*L;
};
//и вычисление последующих в строке
B[i]=B[i]+B[j]*L;
};
};
//обратная подстановка
for (j=3; j>=0; j--)
{
x[j]=B[j]/A[j][j];
if (j!=3)
{
for (i=3; i>j; i--)
{
x[j]=x[j]-A[j][i]*x[i]/A[j][j];
};
};
};
// вычисление вектора невязки
// предварительно восстанавливаем исходные значения матрицы и вектора
for (i=0;i<4;i++)
{
B[i]=Bs[i];
for (j=0;j<4;j++)
{ корень линейный уравнение алгоритм
A[i][j]=As[i][j];
};
};
for (i=0;i<4;i++)
{
B_[i]=0;
//вычисление элементов вспомогательного вектора
for (j=0;j<4;j++)
{
B_[i]=B_[i]+A[i][j]*x[j];
};
R[i]=B[i]-B_[i];
};
//вывод значений
printf("\n\tРешение систем линейных уравнений.");
printf("\n\nРешение СЛУ:\n");
for (i=0;i<4;i++)
{
printf("x=%.8f\n", x[i]);
};
printf("\n");
printf("Вектор невязки:\n");
for (i=0;i<4;i++)
{
printf("R[i]=%.8f\n", R[i]);
};
system("pause"); // Для ожидания прекращения работы
}
Результат работы программы
Список использованных источников
1. Бахвалов Н.С. Численные методы / Н.С. Бахвалов, Н.П. Жидков, Г.М. Кобельков. -М.:Наука, 1987. - 600с.
2. Боглаев Ю.П. Вычислительная математика и программирование / Ю.П. Боглаев. -М.: Высшая школа, 1990.-544с
3. Жидков Е.Н. Вычислительная математика / Е.Н. Жидков. -М.: Академия, 2010.- 208с
Размещено на Allbest.ru
...Подобные документы
Разработка алгоритма составления системы уравнений при помощи законов Кирхгофа по определенной электрической схеме. Приложение для решения данной системы методом Гаусса с выбором ведущего элемента по строке. Описание программы, руководство пользователя.
курсовая работа [435,9 K], добавлен 02.07.2010Реализация решения нелинейного уравнения с заданными параметрами в виде процедуры-подпрограммы. Графический метод отделения корней уравнения. Основные методы уточнения корней уравнения. Описание процедур и функций, общий алгоритм и текст программы.
курсовая работа [1,7 M], добавлен 27.03.2011Разработка программного обеспечения для решения нелинейного уравнения методом деления отрезка пополам, методом деления Гаусса. Алгоритм определения и методика уточнения корней. Составление и тестирование программы, ее листинг и оценка эффективности.
контрольная работа [638,0 K], добавлен 16.12.2013Математический алгоритм вычисления корней нелинейного уравнения и его решение методом касательных. Особенности программной реализации решения таких уравнений. Процедура подготовки и решения задачи на ЭВМ, характеристика алгоритма и структуры программы.
курсовая работа [96,6 K], добавлен 02.06.2012Нахождение с заданной погрешностью корней уравнения. Оценка скорости сходимости. Нахождение промежутка, в котором содержится какой-либо корень уравнения для методов итераций и Ньютона. Разработка текста компьютерных программ для решения данных уравнений.
лабораторная работа [253,9 K], добавлен 19.12.2012Способы отделения корней. Решение задачи методами Ньютона уточнения корней и простых итераций. Формула нахождения погрешностей. Геометрическая интерпретация методов. Составление блок-схем и текстов программ. Результаты их работы на тестовом примере.
курсовая работа [3,1 M], добавлен 15.06.2013Отделение корней методом простых интеграций. Дифференцирование и аппроксимация зависимостей методом наименьших квадратов. Решение нелинейного уравнения вида f(x)=0 методом Ньютона. Решение системы линейных уравнений методом Зейделя и методом итераций.
курсовая работа [990,8 K], добавлен 23.10.2011Решение систем линейных алгебраических уравнений по методу Гаусса. Разработка прикладной программы формирования видеотеки с использованием технологии разработки программ "сверху-вниз". Алгоритм добавления, удаления и корректировки элемента видеотеки.
курсовая работа [305,0 K], добавлен 18.06.2012Методика реализации решения нелинейного уравнения в виде процедуры-подпрограммы следующими методами: хорд, касательных (Ньютона), простой итерации, половинного деления. Основные методы уточнения корней уравнения. Программное решение задачи, алгоритм.
курсовая работа [4,0 M], добавлен 27.03.2011Разработка программы для нахождения корней нелинейных уравнений несколькими методами: методом хорд, касательных, половинного деления, итераций. Реализации программы с помощью системы программирования Delphi 7. Методика работы пользователя с программой.
курсовая работа [1,3 M], добавлен 11.02.2013Определение корней заданного уравнения графическим методом с применением прикладного программного средства MathCAD. Построение графика при помощи программы MS Excel. Геометрическая интерпретация метода для данного уравнения, определение интервалов.
контрольная работа [93,0 K], добавлен 20.08.2013Отделение действительных корней нелинейного уравнения. Метод хорд и касательных (Ньютона), геометрическая интерпретация. Графическая схема алгоритма. Описание реализации базовой модели в MathCAD. График сравнения числа итераций в зависимости от точности.
курсовая работа [2,0 M], добавлен 16.05.2013Постановка задачи, математические и алгоритмические основы решения системы линейных алгебраических уравнений. Решение системы данных уравнений методом Гаусса с выбором главного элемента по столбцу. Функциональные модели и блок-схемы решения задачи.
курсовая работа [428,9 K], добавлен 25.01.2010Этапы численного решения нелинейных уравнений заданного вида: отделение (изоляция, локализация) корней уравнения аналитическим или графическим способами, уточнение конкретного выделенного корня методом касательных (Ньютона). Решение в системе MathCad.
курсовая работа [271,6 K], добавлен 22.08.2012Описание методов дихотомии (половинного деления) и касательных. Их применение для решения нелинейных уравнений. Графическое отделение корней. Блок-схемы алгоритмов. Тексты (листинги) программ на языке Delphi. Тестовый пример решения задачи с помощью ЭВМ.
курсовая работа [944,6 K], добавлен 15.06.2013Метод Гаусса как прямой метод нахождения решений для систем системы линейных уравнений маленькой и средней размерности с помощью компьютерной техники. Редактор кода и исходный код основной программы в Delphi, блок-схема и графическое решение задачи.
контрольная работа [460,8 K], добавлен 15.06.2015Изучение численных методов решения нелинейных уравнений, используемых в прикладных задачах. Нахождение корня уравнения методом простой итерации и методом касательных (на примере уравнения). Отделение корней графически. Программная реализация, алгоритм.
курсовая работа [1,7 M], добавлен 15.06.2013Выполнение отделения корней для заданной функции. Описание уточнения корней с использованием метода дихотомии, Ньютона, простой итерации. Выявление абсолютной погрешности методов. Создание листинга программ. Рассмотрение результатов работы программ.
лабораторная работа [16,1 K], добавлен 19.04.2015Разработка программного продукта для решения систем линейных алгебраических уравнений методом Гаусса с помощью ЭВМ. Математическое описание объекта моделирования, начальные и граничные условия. Алгоритм реализации задачи. Использование модуля CRT.
курсовая работа [269,6 K], добавлен 07.01.2016Метод хорд решения нелинейных уравнений. Вычисление интеграла методом Симпсона. Процесс численного решения уравнения. Окно программы расчета корней уравнения методом хорд. Алгоритм вычисления интеграла в виде блок-схемы. Выбор алгоритма для вычислений.
курсовая работа [832,6 K], добавлен 24.07.2012