Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kp4.docx
Скачиваний:
2
Добавлен:
31.07.2019
Размер:
32.67 Кб
Скачать

Московский Авиационный Институт

(национальный исследовательский институт)

Факультет прикладной математики

и физики

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


Курсовая работа

по курсу

«Информатика»

1 Семестр

«Составление, отладка, тестирование и документирование программ на языке Си в среде OC UNIX»

Студент: Штанов А.В.

Группа: 8О-106Б, №15

Руководитель: Толоченко А.В.

Оценка

Дата

Москва

2011 год

  1. Постановка задачи:

Составить программу на языках Си с процедурами решения трансцендентных алгебраических уравнений различными численными методами (итераций, Ньютона и половинного деления – дихотомии). Вариант номер 15.

  1. Общий метод решения:

Создаем три функции (одна решает с помощью метода дихотомии, другая с помощью итераций, и третья методом Ньютона) и выводим значения получившихся корней.

Метод дихотомии заключается в делении отрезка пополам и его сужения в два раза на каждом шаге, в зависимости от знака функции в середине отрезка.

Метод итераций. Идея заключается в замене F(x)=0 уравнением вида x=f(x).

Начальное приближение корня это середина отрезка. Далее следующему значению х присваивается значение f от предыдущего значения х. Условием окончания является сравнение разницы текущего значения х и предыдущего с Машинным Эпсилон.

Достаточное условие сходимости метода итераций: |F’(x)|<1

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

Достаточное условие сходимости метода Ньютона: |F(x)*F’’(x)| < (F’(x))2

После проверки выяснилось, что для 15 варианта метод Ньютона не будет работать, т.к. условие |(0.4+arctg(sqrt(x))-x)*((-3*x-1)/(4*x^(3/2)*(x+1)^2))| < ( 1/(sqrt(x)*(2*x+2))-1)^2 выполняется не на всем отрезке [a;b].

  1. Функциональное назначение:

Программа предназначена для нахождения решений трансцендентных алгебраических уравнений различными численными методами. Обрабатываемые данные имеют тип double.

  1. Описание логической структуры (словесное описание алгоритма):

Создаем функции, отвечающие за определенные компоненты программы (подсчет машинного Эпсилон, подсчёт основной функции, её производной и т.д.). В основной функции выводится полученные корни уравнений различными методами.

  1. Оборудование:

Процессор AMD Athlon 64 X2 Dual Core Processor 4200+ 2.21Ghz.

ОП 2.00 Гб.

НМД 200 Гб

Операционная система семейства Unix, наименование Ubuntu версия 11.10.

Интерпретатор команд bash.

Редактор текстов gedit.

  1. Описание переменных и констант:

Имя

Тип

Назначения

eps

double

Хранит значение машинного Эпсилон

a1

double

Хранит значение начала отрезка функции 15

b1

double

Хранит значение конца отрезка функции 15

a2

double

Хранит значение начала отрезка функции 16

b2

double

Хранит значение конца отрезка функции 16

  1. Описание подпрограмм:

double epsilon()

Считает машинное Эпсилон

Имя

Тип

Вид

Назначения

z

double

входной параметр и возвращаемое значение

входной параметр и результат вычислений

double func_15_1(double x)

Считает значение функции F(x) взятое из начального уравнения F(x)=0 (для варианта №15)

Имя

Тип

Вид

Назначения

x

double

входной параметр возвращаемое значение (0.4+arctg(sqrt(x))-x)

входной параметр, результат вычислений

(0.4+arctg(sqrt(x))-x)

double func_15_2(double x)

Считает значение функции f(x) взятое из уравнения f(x)=x (для варианта №15)

Имя

Тип

Вид

Назначения

x

double

входной параметр возвращаемое значение

(0.4+arctg(sqrt(x)))

Входной параметр, результат вычислений

(0.4+arctg(sqrt(x)))

double func_15_3(double x)

Считает значение деления функции F(x) на функцию F’(x) (для варианта №15)

Имя

Тип

Вид

Назначения

x

double

входной параметр возвращаемое значение

(x^0.5)*2*(1+x)*(0.4+arctg(x^0.5)-x)))/x^0.5*2*(1+x)-1)

Входной параметр, результат вычислений

(x^0.5)*2*(1+x)*(0.4+arctg(x^0.5)-x)))/x^0.5*2*(1+x)-1)

double func_16_1(double x)

Считает значение функции F(x) взятое из начального уравнения F(x)=0 (для варианта №16)

Имя

Тип

Вид

Назначения

x

double

входной параметр возвращаемое значение (3*sin(x^0.5)))+(0.35*x)-3.8)

Входной параметр, результат вычислений

(3*sin(x^0.5))+(0.35*x)-3.8)

double func_16_2 (double x)

Считает значение функции f(x) взятое из уравнения f(x)=x (для варианта №16)

Имя

Тип

Вид

Назначения

x

double

входной параметр возвращаемое значение

(3.8-(3*sin(x^0.5)))/0.35)

Входной параметр, результат вычислений

(3.8-(3*sin(x^0.5)))/0.35)

double func_16_3 (double x)

Считает значение деления функции F(x) на функцию F’(x) (для варианта №16)

Имя

Тип

Вид

Назначения

x

double

Входной параметр возвращаемое значение

(x^0.5)*(7*x+60*sin(x^0.5))-76))/(7*x^0.5)+30*cos(x^0.5)))

Входной параметр, результат вычислений

(x^0.5)*(7*x+60*sin(x^0.5))-76))/(7*x^0.5)+30*cos(x^0.5)))

double dichotomy(double a, double b, double eps, double (foo)(double))

Вычисляет корень методом дихотомии

Имя

Тип

Вид

Назначения

foo(double x)

double

входная функция

Вычисляет значение функции F(x) взятое из начального уравнения F(x)=0

a

double

входной параметр

Хранит текущее значение начала отрезка

b

double

входной параметр

Хранит текущее значение конца отрезка

х

double

возвращаемое значение

Хранит текущее значение корня, результат вычислений

eps

double

входной параметр

Значение машинного Эпсилон

double iteration(double a, double b, double eps, double (foo)(double))

Вычисляет корень методом итераций

Имя

Тип

Вид

Назначения

foo(double x)

double

входная функция

Вычисляет значение функции f(x) взятое из уравнения f(x)=x

a

double

входной параметр

Хранит текущее значение начала отрезка

b

double

входной параметр

Хранит текущее значение конца отрезка

х

double

возвращаемое значение

Хранит текущее значение корня, результат вычислений

x0

double

переменная

Хранит начальный икс/икс с предыдущего шага

d

double

переменная

Хранит разность х текущего и х с предыдущего шага

eps

double

входной параметр

Значение машинного Эпсилон

double newton(double a, double b, double eps, double (foo)(double))

Вычисляет корень методом Ньютона

Имя

Тип

Вид

Назначения

foo(double x)

double

входная функция

Вычисляет значение деления функции F(x) на функцию F’(x) (для варианта №15)

x0

double

переменная

Хранит значение корня на предыдущем шаге цикла

a

double

входной параметр

Хранит текущее значение начала отрезка

b

double

вхо в дной параметр

Хранит текущее значение конца отрезка

х

double

возвращаемое значение

Хранит текущее значение корня, результат вычислений

d

double

переменная

Хранит разность х текущего и х с предыдущего шага

eps

double

входной параметр

Значение машинного Эпсилон

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]