Разработка программ для вычислительной математики

Графическое отделение корней уравнения, алгоритм для уточнения одного из корней методом Ньютона. Разработка программы, которая, используя метод Гаусса с частичным выбором ведущего элемента, решает систему линейных уравнений и вычисляет вектор невязки.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.