85440

Реализация алгоритмов вычислительной математики с разработкой соответствующего программного обеспечения для ЭВМ

Курсовая

Экономическая теория и математическое моделирование

Цель курсовой работы – получение практических навыков в написании программ для решения задач моделирования и анализа данных с использованием языка программирования С, С++ и математических пакетов Scilab, изучение теоретических основ и особенностей алгоритмической реализации основных численных методов.

Русский

2015-03-25

1.04 MB

3 чел.

Министерство образования и науки Украины

ГВУЗ "Приазовский государственный технический университет"

Факультет информационных технологий

Кафедра автоматизации и компьютерных технологий

Пояснительная записка

К курсовой работе по дисциплине

“Численные методы и моделирование на ЭВМ”

Тема работы: решение математических задач моделирования численными методами

 

Выполнил

Студент группы МА-13

Топорков С.А.

Руководитель

Ст.преподаватель

Щербаков С.В.

Мариуполь 2014


Приазовський державний технічний університет

Кафедра Автоматизації та комп’ютерних технологій

Дисципліна Чисельні методи і моделювання на ЄОМ

Спеціальність Автоматизація та компьютерно-інтегровані технології

Курс    2              Група МА-13          Семестр__3___

ЗАВДАННЯ
на курсовий проект (роботу) студента

  1.  Тема проекту: Реалізація алгоритмів обчислювальної математики з розробкою відповідного програмного забезпечення для ЕОМ
  2.  Строк здачі студентом закінченого проекту  
  3.  Вихідні дані до проекту  варіант __18___
  4.  Зміст розрахунково-пояснювальної записки (перелік питань які підлягають розробці)1.Вступ. 2. Постановка задачі. 3. Математична постановка задачі. 4. Опис методів розв’язання та обґрунтування вибору методу рішення. 5. Математична модель розв’язання задачі (у вигляді формул).6. Вхідні та вихідні дані, їх структура та представлення у ПЕОМ. 7. Блок-схема алгоритму розв’язання задачі та її опис. 8.Заключення.
  5.  Перелік графічного матеріалу (з точним зазначенням обов’язкових креслень)1.Блок-схема алгоритму розв’язання задачі. 2. Вихідні графічні матеріали (схеми, графіки, діаграми).
  6.  Дата видачі завдання  _____9 сентября 2014______

КАЛЕНДАРНИЙ ПЛАН

№ п/п

Назва етапів курсового проекту

Строк виконання етапів проекту

Примітки

1.

Вивчення за допомогою рекомендованої літератури зазначених чисельних методів розв’язання задачі.

17.10.13

2.

Розробка тестового прикладу

20.10.13

3.

Складання алгоритму розв’язання задачі

27.10.13

4.

Реалізація розв’язання задачі засобами мови програмування С++

01.11.13

5.

Складання та оформлення пояснювальної записки

20.11.13

6.

Підготовка до захисту курсового проекту

10.12.13

Студент____________________

(підпис)

Керівник___________________     

 (підпис)

           “___”_________________2014 р.

РЕФЕРАТ

Пояснительная записка содержит 58 страниц машинописного текста,  15 приложений, 12 рисунков.

Цель курсовой работы – получение практических навыков в написании программ для решения задач моделирования и анализа данных с использованием языка программирования С/С++ и математических пакетов Scilab, изучение теоретических основ и особенностей алгоритмической реализации основных численных методов.

Задачи курсовой работы:

  1.  получение навыков самостоятельной работы;
  2.  освоение технологии разработки и отладки программ, использующих вычислительные алгоритмы и численные методы;
  3.  более полное изучение базовых средств языков программирования и получение навыков постановки и решения различных задач с помощью ПЭВМ.

ПРЕДЕЛЫ ПОСЛЕДОВАТЕЛЬНОСТЕЙ, СТЕПЕННЫЕ РЯДЫ, СУММА РЯДА, НЕЛИНЕЙНОЕ УРАВНЕНИЕ, МЕТОД  НЬЮТОНА, МЕТОД ХОРД, МЕТОД ДИХОТОМИИ, МЕТОД ПРОСТЫХ ИТЕРАЦИЙ, СИСТЕМА НЕЛИНЕЙНЫХ УРАВНЕНИЙ, ПОЛИНОМ ЛАГРАНЖА, КУБИЧЕСКИЙ СПЛАЙН, МЕТОД ПРЯМОУГОЛЬНИКОВ, МЕТОД ТРАПЕЦИЙ, МЕТОД СИМПСОНА, МЕТОД ГАУССА, ДИФФЕРЕНЦИРОВАНИЕ, МЕТОД ЭЙЛЕРА, МЕТОД РУНГЕ-КУТТА, БЛОК-СХЕМА, ЯЗЫК С++.

СОДЕРЖАНИЕ

                                                                                                                Стр

РЕФЕРАТ                                                                                                              3

СОДЕРЖАНИЕ                                                                                                    4

ВВЕДЕНИЕ                                                                                                          5

1.СУММИРОВАНИЕ РЯДОВ.ОЦЕНКА МАШИННОЙ ТОЧНОСТИ         6

 1.1. Постановка задачи                                                                                      6

 1.2. Математическая постановка задачи                                                         7

2. РЕШЕНИЕ НЕЛЕНЕЙНЫХ УРАВНЕНИЙ                                                 9                                                 

 2.1. Постановка задачи                                                                                      9

 2.2. Математическая постановка задачи                                                        10

3. АППРОКСИМАЦИЯ ФУНКЦИЙ                                                                18

 3.1. Постановка задачи                                                                                     18

 3.2. Математическая постановка задачи                                                        19

4. ЧИСЛЕННОЕ ИНТЕГРИРОВАНИЕ                                  22                                   

 4.1. Постановка задачи             22

 4.2. Математическая постановка задачи                                                         22

5. РЕШЕНИЕ ОБЫКНОВЕННЫХ Д.У.            32

 5.1. Постановка задачи                                                                                     32

 5.2. Математическая постановка задачи                                                         32

ЗАКЛЮЧЕНИЕ                                                                                                   36

ПЕРЕЧЕНЬ ССЫЛОК                                                                                        37

ПРИЛОЖЕНИЕ А                             38

ПРИЛОЖЕНИЕ Б               43  

ПРИЛОЖЕНИЕ В                                                                 55

ВВЕДЕНИЕ

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

Новые вычислительные средства вызвали переоценку известных методов решения задач с точки зрения целесообразности их реализации на ЭВМ и стимулиро-вали создание более эффективных.

Предметом изучения вычислительной математики являются численные методы решения задач математического анализа: изучение алгоритма метода, условия сходимости итерационных методов, изучение границ применимости методов, ис-следования оценок погрешностей методов и вычислений. Главным разделом вы-числительной математики является реализация численных методов на ЭВМ, то есть составление программы для требуемого алгоритма и решения конкретной задачи с помощью составленной программы.

Задание 1. Пределы последовательностей и степенные ряды

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

Вычислите оценки пределов последовательностей {an}, {bn}, если они существуют, с точностью e =10*masheps и соответствующие порядковые номера N.Изобразитеграфически характер поведения этихпоследовательностей. Найдите аналитическим путем истинное значение предела.

№ Варианта

an

bn

18

1.2 Математическая постановка задачи.

По условию даны числовые ряды и

Сумма числового ряда определяется как предел последовательности частичных сумм ряда при n стремящимся к бесконечности. Если такой предел существует и конечен, то говорят, что ряд называется сходящимся. Если предел частичных сумм не существует или бесконечен, то ряд называется расходящимся.

n-ая частичная сумма ряда .

сумма ряда .

Аналитическое решение данной задачи:

а)


Ряд знакоположительный, проверим по необходимому признаку сходимости:

б)

Ряд знакоположительный, проверим по необходимому признаку сходимости:

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

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

1.3 Описание методов решения.

Пусть задан некоторый ряд слагаемых a1(х)+a2(х)+a3(х)+...+an(x) и необходимо найти его сумму. Если слагаемые зависят от некоторого параметра Х и номера n, определяющего место этого слагаемого в ряде, то такой ряд называется функциональным. Если слагаемые зависят только от номера, то такой ряд называется числовым. Обычно функциональные и числовые ряды задаются в виде формулы общего члена ряда, которые по методам вычисления можно разбить на три типа:

Формулы общего члена ряда:

I

II

III

где  m,n,k  - целые числа;  

      a,b,c,d - действительные числа.

1. Для вычисления члена ряда типа 1 наиболее удобно использовать рекуррентные соотношения, т.е. последующий член ряда находить через предыдущий. Вычисление последующего члена ряда можно представить в виде рекуррентной формулы: А[n+1]=A[n]*G(n,x), где G(n,x)=an+1/an . При  использовании рекуррентных формул необходимо определить начальное значение n, c которого выполняются рекуррентные соотношения, а, следовательно, этим определяются начальные значения (выражения для а и S).

2. Если формула общего члена ряда принадлежит типу II,  то целесообразнее и эффективнее вычислять каждый член ряда по общей формуле. В задачах данного типа необходимо обратить внимание на определение начального значения n и начальное значение суммы.

3. Если формула общего члена ряда принадлежит типу III, то целесообразно вычисление текущего члена ряда представить как произведение двух или более сомножителей.

В данном задании необходимо задать:

  1.  точность для сходящегося ряда  an .
  2.  количество членов для расходящегося ряда  bn;

Выходными данными являються суммы данных рядов, количество членов ряда.

Графики поведения данных последовательностей представлены на рисунках 1 и 2 соответственно.

Рисунок 1 – График поведения данных последовательности an

Рисунок 2 – График поведения данных последовательности bn

Задание 2.1 Решение нелинейных уравнений

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

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

№Варианта

1

2

3

18

x4 +18x -10=0

5x-6x =3

cos(x-1)+y=1

sin(y)+2x=1.6

2.1.2 Математическая постановка задачи.

Нелинейным уравнением называются уравнения вида               (1).                                                    

Здесь – нелинейная функция:

  1.  нелинейная алгебраическая функция вида ;
  2.  трансцендентные функции – тригонометрические, обратные тригонометрические, логарифмические, показательные и гиперболические функции;
  3.  комбинирование этих функций.

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

Решение нелинейных уравнений состоит из двух этапов: отделение корней уравнения и уточнение корней.

На первом этапе необходимо исследовать уравнение и выяснить, имеются корни или нет. Если корни имеются, то сколько их, и затем определить интервалы, в каждом из которых находится единственный корень.

Cпособ отделения корней – графический. Исходя из уравнения (1), можно построить график функции . Тогда точка пересечения графика с осью абсцисс является приближенным значением корня. Если имеет сложный вид, можно представить ее в виде разности двух функций . Так как , то выполняется равенство .

Построим два графика , , которые показаны на рисунках 3 и 4 соответственно

Абсцисса точки пересечения двух графиков является приближенным значением корня.

Рисунок 3 – График x4 +18x -10=0

Рисунок 4 – График 5x-6x =3

2.1.3 Описание методов решения

Методом дихотомии (половинного деления)

Пусть каким-либо методом найден отрезок изоляции корня [a,b] уравнения f(x)=0, где функция f(x) непрерывна на участке [a,b]. В дальнейшем требуется сузить этот отрезок так, чтобы его длина стала не больше заранее заданной точности вычисления корня Ԑ, то есть чтобы |a-b|≤Ԑ.

Этот процесс сужения интервала, содержащего изолированный корень уравнения f(x)=0, называется уточнением корня.

В этом алгоритме отрезок изоляции корня [a,b]  точкой  c=(a+b)/2  делят пополам и вычисляют значение  f(c). Если  f(c)=0, то c – значение искомого корня уравнения, и задача решена. Если f(c)≠0, то искомый корень уравнения содержится в одном из двух отрезков [a,c] или [b,c]  , на концах которого функция f принимает значения разных знаков. Из двух отрезков [a,c] и [b,c]  выбираем тот, на котором функция меняет знак.

Если , то (точка смещается в точку ).

Если , то (точка смещается в точку ).

Полученный отрезок снова делим пополам и повторяем процесс до тех пор, пока не выполнится условие |a-b|≤Ԑ.

Тогда числа a и b являются приближенными значениями искомого корня с требуемой точностью Ԑ, соответственно с недостатком и с избытком. За приближенное значение искомого корня берут число  c=(a+b)/2, погрешность которого не превышает (b-a)/2n+1, где n – количество проведенных делений.

Метод хорд

Пусть отрезок изоляции [a,b]  корня х уравнения f(x) =0 найден, причем для определенности пусть f(a)<0, f(b)>0 и f’(x)>0. График функции y=f(x) проходит через точкиA(a;f(a)) и B(b;f(b)). Составим уравнение хорды АВ как прямой, проходящей через точки А и В:

Далее находим абсциссу x1 точки пересечения хорды АВ с осью Ох, уравнение которой y=0:

Подставим первое уравнение системы во второе, x=xi, получим:

Число x1 примем за первое приближение корня х. Далее, применяя этот же прием к отрезку изоляции [x1,b], на концах которого функция f(x) принимает противоположные знаки, получим второе приближение корня x2:

Рисунок 5 – Графическое представление метода хорд

Этот процесс можно продолжать неограниченно. В результате получим последовательность вложенных отрезков [a; b]  [x1; b]  [x2; b]  ...  [xn; b] ... с неподвижным концом b. Последовательные приближения xn (n = 1, 2, ...) к точному значению корня х вычисляются по формуле

 

называемой формулой метода хорд, и образуют монотонно возрастающую последовательность a = x0< x1< x2< ... < xn< xn+1< ... < b, ограниченную сверху числом b.

Поскольку полученная последовательность сходится к корню уравнения х, то любой ее член можно рассматривать в качестве приближенного значения корня.

Для оценки погрешности приближения xn можно воспользоваться формулой

Метод Ньютона (метод касательных)

Пусть [a,b]  – отрезок изоляции корня х уравнения f(x)=0. Причем для определенности пусть , , и , x[а; b], то есть производные сохраняют постоянный знак (рис. 1.4). Идея метода касательных, предложенного Ньютоном, сводится к замене небольшой дуги кривой касательной к кривой, проведенной в некоторой точке интервала [а; b].

В качестве начального приближения выбирается тот конец отрезка изоляции корня ( или ), в котором выполняется условие

.

Выберем, например, , так как , и в точке В(x0, f0)) проведем касательную к кривой. Ее уравнение: .

Найдем теперь точку пересечения x1 касательной с осью Ох (в этой точке ):

Эту точку x1 принимаем за первое приближение искомого корня х.

Через точку С(x1;f(x1)) снова проведем касательную,  абсциссу точки пересечения которой с осью Ох примем за второе приближение х2 корня х.

Имеем:

;

.

Продолжая этот процесс далее, получим рекуррентную формулу,

называемую формулой метода касательных.

Полученная числовая последовательность x0>x1>x2>...>xn>xn+1>...>a сходится к корню уравнения х.

Для оценки погрешности приближения xn можно воспользоваться, как и в методе хорд, формулой

.

Рисунок 6 – Графическое представление метода касательных

Метод простых итераций (последовательных приближений)

Пусть известно, что нелинейное уравнение имеет на отрезке [a,b] единственный вещественный корень . Требуется найти этот корень с заданной точностью. Применяя тождественные преобразования, приведем исходное уравнение к виду x=ȹ(x).

Выберем произвольно приближенное значение корня и вычислим x1=ȹ(x0). Найденное значение x1 подставим в правую часть соотношения x=ȹ(x) и вычислим x2=ȹ(x1). Продолжая процесс вычислений дальше, получим числовую последовательность .

Корень можно вычислить с заданной точностью по итерационной формуле

Достаточное условие, при котором итерационный процесс сходится, определяет следующая теорема: пусть функция ȹ(х) определена и дифференцируема на отрезке [a,b] , причем все ее значения и выполняется условие  , тогда процесс итераций    сходится независимо от начального значения и предельное значение - единственный корень уравнения на [a,b] .

Метод простых итераций и почти все другие итерационные методы имеют два достоинства:

  1.  являются универсальными и самоисправляющимися, то есть любая неточность на каком-либо шаге итераций не отразится на конечном результате, а лишь на количестве итераций;
  2.  позволяют достигнуть любой заданной точности при любом начальном приближении .

Недостатки метода:

  1.  трудность приведения уравнения к виду .
  2.  если начальное приближение далеко от корня, то число итераций достаточно большое. Объем вычислений возрастает.

Процесс итераций заканчивается при выполнении двух критериев:

  1.  Когда два последних приближения отличается между собой по модулю на заданную величину : . Этого критерия недостаточно, так как в случае крутизны графика, данное условие будет выполнено, но может находиться далеко от корня.
  2.  Мера удовлетворения уравнению последнего приближения корня: . Отдельно второго критерия недостаточно, так как при пологой функции условие может быть выполнено, но может быть далеко от корня.

В данном задании необходимо задать точность вычислений, границы отрезка [a;b], начальное приближение х.

Выходными данными являються корни.

Задание 2.2 Решение систем нелинейных уравнений

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

Разработайте программу, позволяющую решить систему уравнений методом Ньютона с точностью 0.0001 (столбец 3 таблицы 2.1.1).

2.2.2 Математическая постановка задачи.

Совокупность нескольких уравнений с несколькими неизвестными называют системой уравнений.

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

Решить систему равнений – значит найти множество всех ее решений или показать, что она решений не имеет.

Система нелинейных уравнений (СНУ) имеет вид:

 

Здесь – неизвестные переменные, а система называется нормальной системой порядка , где хотя бы одна из функций нелинейна.

2.2.3 Описание метода решения.

Метод Ньютона для решения СНУ

Совокупность аргументов можно рассматривать как n-мерный вектор. Аналогично совокупность функций представляет собой также n-мерный вектор (вектор-функцию).

Поэтому систему можно кратко записать так: .                                                 

Для решения системы будем пользоваться методом последовательных приближений.

Предположим, что найдено р-е приближение

одного из изолированных корней векторного уравнения. Тогда точный корень уравнения можно представить в виде

,

где – поправки (погрешность корня).

Введем в рассмотрение матрицу Якоби системы функций относительно переменных :

.

Если , то поправка выражается следующим образом:

где – матрица, обратная матрице Якоби.

Таким образом, последовательные приближения находятся по формуле

(р=0, 1, 2, ….).

К недостаткам метода Ньютона можно отнести сильную зависимость от выбора начального приближения  и необходимость на каждом итерационном шаге вычислять матрицу производных.

Метод Ньютона для решения системы двух  нелинейных уравнений

Для системы двух нелинейных уравнений

согласно методу Ньютона последовательные приближения вычисляются по итерационным формулам:

где

 

а якобиан

Начальное приближение определяется приближенно (графически, прикидкой и т.п.).

Итерационный процесс заканчивается, если выполняется следующее условие

.

Частные производные можно находить аналитически или численно по формулам:

 

 

где число h – приращение аргумента функции, некоторое малое число.

Задание 3. Аппроксимация функции

3.1 Постановка задачи

1. Выберите таблицу 11 значений функции f(x), начиная с узла, равного номеру вашего варианта. Постройте таблицы конечных разностей. Выполните экстраполяцию на два узла от начала и от конца таблицы.

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

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

x

y(x)

18.0

0

18.1

-0.06906

18.2

-0,20633

18.3

-0,36975

18.4

-0,52416

18.5

-0,63728

18.6

-0,68247

18.7

-0,64188

18.8

-0,50883

18.9

-0,28908

19.0

-0,00059

3.2 Математические постановка задачи

Пусть на интервале [a,b] заданы n+1 опорных (узловых) точек a  xo< x1 < x2 <...< xn  b. Пусть, кроме того, заданы n+1 действительных чисел  yi(i=0, 1,2,...,n) (например, как значения функции в узловых точках). Под задачей интерполяции понимают нахождение многочлена In(x) степени не больше n такой, что In(xi)=yi для 0  i  n.

Интерполяцию обычно применяют тогда, когда относительно f известны только дискретные значения функции y=f(x), и, чтобы вычислить другие ее значения между узловыми точками (интерполяция) или за отрезком узловых точек (экстраполяция), ее приближают многочленом In(x), причем f(xi)=In(xi) (i=0,1,2,...,n).

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

3.3 Описание методов решения

Форма Лагранжа:, где Lj(x) - полиномы n-ой степени, называемые лагранжевыми коэффициентами и имеющие вид:

.

Степень каждого полинома Lj равна n, сам он равен 1 в точке х = xj и обращается в нуль в остальных узлах интерполяции. Формула позволяет вычислять значения полинома Лагранжа и без нахождения его коэффициентов.

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

Для удобства вычислений целесообразно составить вспомогательную таблицу где хо, x1, …, xn— узлы интерполяции, а х— значение аргумент, для которого определяется приближенное значение по интерполяционной формуле Лагранжа.

,

Тогда интерполяционный многочлен Лагранжа можно переписать в виде .

Кубический сплайн: Интерполяция кубическими сплайнами является частным случаем кусочно-полиномиальной интерполцией. В этом специальном случае между любыми двумя соседними узлами функция интерполируется кубическим полиномом. его коэффициенты на каждом интервале определяются из условий сопряжения в узлах:

Кроме того, на границе при  и  ставятся условия

( 2 )

Будем искать кубический полином в виде

( 3 )

Из условия  имеем

( 4 )

Вычислим производные:

и потребуем их непрерывности при :

( 5 )

Общее число неизвестных коэффициентов, очевидно, равно , число уравнений (4) и (5) равно . Недостающие два уравнения получаем из условия (2) при  и :

Выражение из (5) , подставляя это выражение в (4) и исключая , получим

Подставив теперь выражения для  и  в первую формулу (5), после несложных преобразований получаем для определения  разностное уравнение второго порядка

( 6 )

С краевыми условиями

( 7 )

Условие  эквивалентноусловию  и уравнению .

Разностное уравнение (6) с условиями (7) можно решить методом прогонки, представив в виде системы линейных алгебраических уравнений вида , где вектор  соответствует вектору , вектор  поэлементно равен правой части уравнения (6), а матрица имеет следующий вид:

где  и .

Метод прогонки

Метод прогонки, основан на предположении, что искомые неизвестные связаны рекуррентным соотношением:

( 8 )

Используя это соотношение, выразим  и  через  и подставим в i-e уравнение:

где  - правая часть i-го уравнения. Это соотношение будет выполняться независимо от решения, если потребовать

Отсюда следует:

Из первого уравнения получим:

После нахождения прогоночных коэффициентов  и , используя уравнение (1), получим решение системы. При этом,

Задание 4. Численное интегрирование

4.1 Постановка задачи

Разработайте программу на С++, позводяющую вычислить заданный интеграл методами средних прямоугольников, трапеций, Симпсона и Гаусса, оцените соответствующие объемы вычислительной работы (предусмотреть возможность выбора метода интегрирования)

1

2

18

4.2 Математическая постановка задачи

Вычисление скалярных аддитивных величин обычно сводится к суммированию бесконечно большого числа беcконечно малых слагаемых такого вида:

Например, если значение функции f(xi) считать проекцией силы на ось Ох, а малую величину хi - “элементарным” перемещением некоторой массы под действием этой силы, то произведение f(xi) хi = Аi даст “элементарную” работу  Аi силы f на малом перемещении  хi. Работа силы f на всем перемещении массы по свойству аддитивности будет равна сумме “элементарных” работ

Но так как физически не представляется возможным просуммировать бесконечно много слагаемых Аi, то, ограничиваясь n слагаемыми, можно получить приближенное значение данной величины:

Точное значение таких величин выражается с помощью предельного перехода, в результате которого получают интеграл:

где [a; b] - отрезок, на котором задана функция f.

Определение понятия интеграла и его геометрическую интерпретацию.

Пусть на конечном отрезке [a; b] задано непрерывную функцию f, причем f(x)  0, x  [a; b] и a < b.

1.Разобьем отрезок [a; b] произвольным образом на n частичных отрезков точками: 

a = x0 < x1 < x2 <...< xi < xi+1 < ... < xn = b.

2.Обозначим длину каждого частичного отрезка через

(i = 0, 1, 2,...,n - 1).

3.Выберем произвольно в каждом частичном отрезке точку

4.Составим произведения значений функции f в точке на длину i-го отрезка, т.е, геометрически это произведение дает площадь “элементарного” i-го заштрихованного прямоугольника, который изображен на рисунке 7.

Рисунок 7 - площадь “элементарного” i-го заштрихованного прямоугольника

5. Просуммируем полученные произведения

: (1)

Полученную таким образом сумму (1) называют интегральной суммой. Геометрически эта сумма дает площадь всех n ’’элементарных’’ прямоугольников, то есть площадь ступенчатой фигуры. Отметим, что интегральных сумм (1) можно построить бесконечно много в силу того, что при их построении допускается два произвола: разбиение отрезка [a, b] на части точками хi и выбор точек (i = 0, 1, ... ,n-1) на каждом из частичных отрезков

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

Если приинтегральная сумма (1) имеет конечный предел, то этот предел называется интегралом функции f от а до b и обозначается

Следовательно,   (2)

Таким образом, интегралом функции f на отрезке интегрировании от а до b называется предел интегральных сумм при условии, что максимальная длина частичных отрезков стремится к нулю, следовательно, число их неограниченно возрастает, то есть .

В силу непрерывности функции f площадь ступенчатой фигуры (рис.33) при большом n “почти совпадает” с площадью криволинейной трапеции аAвb, а при интеграл (2) и дает точное значение площади S криволинейной трапеции с основанием [a; b], ограниченной сверху графиком функции f:

S =

Можно доказать, что если функции f непрерывна на отрезке [a; b], то предел (2) существует.

Формула (2) непригодна для точного вычисления интеграла, так как операция вычисления предела интегральной суммы практически не всегда легко выполнима.

Для вычисления точного значения интеграла (2) используют понятие первообразной функции. Пусть подынтегральная функция f непрерывна на отрезке [a; b] и известна ее первообразная F, то есть такая функция, что

F‘(x) = f(x), x [a; b].

Тогда интеграл (2) может быть вычислен по формуле Ньютона-Лейбница

= F(b) - F(a), (3)

как приращение первообразной функции F на отрезке [a; b].

Кроме того, можно доказать, что если существует интеграл (3), то одной из первообразных функций на [a;b] для подынтегральной функции является интеграл с переменным верхним пределом так как

Таким образом, если мы умеем найти первообразную функцию, то можем вычислить также и интеграл.

Однако очень часто нахождение первообразной функции затруднительно, громоздко или вообще невыполнимо в элементарных функциях. Тогда задача вычисления точного значения интеграла по формуле Ньютона-Лейбница (3) оказывается неразрешимой. Класс функций f, для которых первообразная F выражается через элементарные функции, весьма узок, а , значит, и формула (3) не всегда пригодна для практики. Например, не выражается в элементарных функциях первообразная для функции

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

(4)

которую называют интегральным синусом. Значение этой функции, например, при х = 1 равно  то есть значением функции является интеграл, не выражающийся в элементарных функциях, а не число в явном виде, что было бы практически значительно удобнее. Кроме того, на практике часто подынтегральная функция f задается графически или таблично, тогда само понятие первообразной теряет смысл и формула Ньютона - Лейбница, несмотря на ее большое теоретическое и практическое значение, опять “не работает”.

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

 (5)

вкоторых используется ряд значений подынтегральной функции.

Формулу (и сумму) вида (5) называют квадратурной. Действительные числа и называют соответственно коэффициентами и узлами квадратурной формулы (5). Величину

(6)

называют остаточным членом (или погрешностью) квадратурной формулы (5).

Заменяя интеграл квадратурной суммой, мы пренебрегаем остаточным членом R(f) (это погрешность метода). Выполняя вычисления по формуле (5), всегда оперируют не с точными, а с приближенными значениями подынтегральной функции и коэффициентов . Погрешность, с которой заданы значения и , переносится и на квадратурную сумму (это так называемая неустранимая погрешность R1 формулы (5)). Если - точные числа (с такими формулами мы будем иметь дело), а значения вычислены с погрешностью f, то значение квадратурной суммы будет вычислено с неустранимой погрешностью

При нахождении квадратурной суммы все промежуточные вычисления рекомендуется проводить с 1 - 2 запасными цифрами. Это дает возможность пренебрегать погрешностями округлений в промежуточных вычислениях. Однако при отбрасывании запасных цифр в конечном результате необходимо учитывать заключительную погрешность округления 0. Таким образом, суммарная погрешность численного интегрирования функций  представляет собой сумму трех указанных выше погрешностей:

= R(f) + R1 + 0.

Геометрически общий подход к решению задачи приближенного интегрирования функций состоит в том, что в криволинейную трапецию, площадь которой равна искомому значению интеграла, вписывают (или описывают) «частичные» прямоугольники, трапеции или параболы, находят их площади, а затем суммируют. В результате получают приближенное значение искомого интеграла, так как при этом график функции f заменяют некоторой ломаной линией. В соответствии с выбором геометрической фигуры для вычисления интеграла различают формулы: прямоугольников, трапеций, парабол (Симпсона). Для получения этих формул отрезок интегрирования [a; b] делят на частичные отрезки равной длины.

4.3 Описание методов решения

Формула прямоугольников

Для вычисления приближенного значения интеграла отрезок [a; b] делят на n равных частей точками  а = х0< x1< x2< ... < xn = b так, что Тогда длина каждого частичного отрезка а точки разбиения х0 = а; x1 = a + h; x2 = a + 2h; ... ; xn-1 = a + (n-1)h; x n = a + nh = b образуют арифметическую прогрессию с разностью h. Эти точки называют узлами, а h - шагом интегрирования. Затем в узлах вычисляют ординаты y0, y1, y2, ..., yn то есть yi = f(xi) для хi = a + ih (i=0, 1, 2,...,n). На частичных отрезках [xi, xi+1] строят прямоугольники (рисунок 8 – 9), высота которых равна значению f(x) в какой-либо точке каждого частичного отрезка.

Тогда произведение f(xi) * h дает площадь частичного прямоугольника, а сумма таких произведений дает площадь ступенчатой фигуры, представляющую собой приближенное значение интеграла.

Рисунок 8

Рисунок 9

Если f(xi) вычисляют (рисунок 8) в левых концах отрезков [xi, xi+1], то получают формулу левых прямоугольников вида:

Если f(xi) вычисляют (рис.6) в правых концах отрезков [xi, xi+1], то получают формулу правых прямоугольников вида:

Если же функцию f вычисляют в точках xi + [xi, xi+1], то получают формулу средних прямоугольников вида:

(7)

где

В том частном случае, когда функция f монотонно возрастает на [a; b] (рис.8.2.1), величина Iл дает значение интеграла I с недостатком (ломанная вписана в криволинейную трапецию), а величина Iп - с избытком (ломаная описана). Их среднее арифметическое значение дает более точный результат:

Формула трапеций

Формулу трапеций получают аналогично формуле прямоугольников, но на каждом частичном отрезке строится трапеция, которая изображена на рисунке 10.

Рисунок 10

Тогда площадь криволинейной трапеции аАВb приближенно равна площади фигуры, ограниченной ломаной линией аАА1А2...Аn-1Bb. Площади частичных трапеций:

(8)

Суммируя равенства (8), получим формулу трапеций:

(9)

Формула Симпсона

Для построения формулы Симпсона предварительно рассмотрим такую задачу: вычислить площадь S криволинейной трапеции, ограниченной сверху графиком параболы y = Ax2 + Bx + C, слева прямой х = - h, справа прямой x = h и снизу отрезком [-h; h]. Пусть парабола проходит через три точки (рис.11): D(-h; y0) E(0; y1) и F(h; y2), причем х2 - х1 = х1 - х0 = h. Следовательно,x1 = x0 + h = 0; x2 = x0 + 2h.

Рисунок 11 – Парабола, проходящая через три точки

 Тогда площадь S равна интегралу:

. (11)

Выразим эту площадь через h, y0, y1 и y2. Для этого вычислим коэффициенты параболы А, В, С. Из условия, что парабола проходит через точки D, E и F, имеем:

Решая эту систему, получаем:

C = y1;

A =

Подставляя эти значения А и С в (11), получаем искомую площадь

(12)

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

Для этого отрезок интегрирования [a; b] разобьем на 2n равных частей длиной В точках деления (рис.12)

а = х0, х1, х2, ...,х2n-2, x2n-1, x2n = b

вычисляем значения подынтегральной функции f:

y0, y1, y2, ...,y2n-2, y2n-1, y2n,

где yi = f(xi), xi = a + ih (i = 0, 1, 2,...,2n).

Рисунок 12

На отрезке [x0; x2] подынтегральную функцию заменяем параболой, проходящей через точки (x0; y0), (x1; y1) и (x2; y2), и для вычисления приближенного значения интеграла от х0 до х2 воспользуемся формулой (12). Тогда (на рис. 9 заштрихованная площадь):

Аналогично находим:

................................................

Сложив полученные равенства, имеем:

Или

(13)

Формула (13) называется обобщенной формулой Симпсона или формулой парабол, так как при ее выводе график подынтегральной функции на частичном отрезке длины 2h заменяется дугой параболы.

Формула Гаусса

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

(например, при N=5 - C1 = C5 = 0.23693, C2 = C4 = 0.47863, C3 = 0.56889, -t1 = t5 = 0.90618, -t2 =t4 = 0.5384693, t3 = 0)

Задание 5. Решение обыкновенных дифференциальных уравнений

5.1 Постановка задачи

1. Рассмотрите задачу, состоящую в поиске решения обыкновенного дифференциального уравнения для t от t0 до tk с шагом∆ t при начальном условии y(t0)=y0 (задачу Коши). Выясните возможность аналитического решения задачи.

2. Разработайте программу на С для решения поставленной задачи модифицированным методом Эйлераи методом Рунге-Куттыс фиксированным шагом ∆ t (значение ∆ t возьмите равным десятой доле интервала интегрирования).

f(t,y)

t0

tk

y0

18

0

1

1

5.2 Математическая постановка задачи

В инженерной практике довольно часто приходится  встречаться  с обыкновенными дифференциальными уравнениями при решении различных прикладных задач. Обыкновенным дифференциальным уравнением называется выражение вида

F(X,Y,Y',Y”,...,Yn-1    ,Yn  ) = 0 ,  (1)

где  Х - независимая переменная;

Y - искомая функция от Х;

Y',Y»,...,Yn   -производные порядка 1,2,...,n.

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

Простейшим обыкновенным дифференциальным уравнением является уравнение 1-го порядка

y'= f(x,y)     (2).

Основная задача, относящаяся к этому уравнению, есть задача Коши: найти решение дифференциального  уравнения (2) в виде у=у(х),  удовлетворяющее начальному условию Y(Xo)=Yo, т.е. требуется  найти интегральную кривую у=у(х), проходящую через заданную точку М(Хо,Yo).

Для нахождения решения дифференциального уравнения (1) необходимо задать такое количество начальных условий,  какое соответствует порядку старшей производной, а именно задать значения

Yo=Y(Xo); Yo'=Y'(Xo),...,Y0n-1   = Yn-1 (Xo)  (3)

Уравнение (1) называется разрешенным относительно старшей производной, если оно имеет вид

Y(n)   =f(X,Y,Y',Y»,...,Yn-1 )                            (4)

Если дифференциальное уравнение (1) разрешимо относительно  старшей  производной, то  его  можно свести к системе обыкновенных дифференциальных уравнений 1-го порядка заменой на неизвестную функцию Р1(х), у» на Р2(х) и т.д.

Таким образом, имеем

y'=P1,

P1'=P2,

P2'=P3,

...

P'n-1 = f (x,y,P1,P2,...,Pn-1),   причем

Y(Xo)=Yo

P1(Xo)=Yo'

P2(Xo)=Yo»

. . . . . . . . .

P n-1(Xo)=Yon-1    .

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

5.3 Описание методов решения.

Метод Эйлера для расчета дифференциальных уравнений имеет небольшую точность расчета. Точность расчета у него зависит от размера шага линейно, зависимость точности от шага — первой степени. То есть, чтобы увеличить точность в 10 раз, надо уменьшить шаг в 10 раз.  Этот метод является сравнительно грубым и применяется в основном для ориентировочных расчетов.

Метод численного решения дифференциального уравнения 1-го порядка y'= f(x,y) с начальным условием Y(Xo)=Yo основан на разложении решения в ряд Тейлора в h-окрестности точки Хо:

Y1 = Y(x+h) = Y(Xo) + h*Y'(Xo) + (h2/2)*Y»(Xo) +...

При отбрасывании всех членов ряда, содержащих производные 2-го и высших порядков, получим Y1 = Yo + h*f(Xo,Yo), где f(x,y) - правая часть уравнения y'= f(x,y) .

Пользуясь значением Y1 из разложения   y(x) в h –окрестности точки Х1=Хо+h, получим Y2=Y1+h*f(X1,Y1), аналогично продолжая для следующей Х i+1 точки, получим

Y i+1 = Yi+h*f(Xi,Yi).    

Если дано уравнение 2-го порядка  Y’=f(x,y,y') c начальными условиями Y(Xo)=Yo и Y'(Xo)=Yo', то такое уравнение можно свести к системе двух уравнений 1-го порядка

   

причем

  

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

       

где f( Xi, Yi, Pi) - правая часть уравнения Y’=f(x,y,y').

При достаточно малой величине шага h метод Эйлера дает решение с большой точностью, т.к. погрешность решения близка к h2.

Модифицированный метод Эйлера имеет точность второго порядка. В методе Эйлера производная берется в начале шага и по ней прогнозируется движение системы на конец шага, считая, что во время шага производная неизменна. То есть в течение всего шага производная считается той, какой она была в самом начале шага. Это основной источник неточности.

Улучшение метода Эйлера состоит в том, что берется производная не в начале шага, а как промежуточное или среднее на разных участках одного шага. В разных вариантах метода вычисляют несколько производных в разных частях шага и усредняют их. Конечно, в этом случае число вычислений увеличивается, — но не в десятки раз, — а вот точность возрастает на порядок, в этом и состоит выигрыш.

Модифицированный метод Эйлера второго порядкареализуется следующими рекуррентными формулами:

Данная схема называется еще методом предиктор – корректор (предсказывающее – исправляющее). На первом этапе приближенное значение предсказывается с невысокой точностью (h), а на втором этапе это предсказание исправляется, так что результирующее значение имеет второй порядок точности.

Метод дает погрешность порядка h3 и имеет меньшее время вычислений, поскольку вместо нескольких итераций производится вычисление только одного значения .

Метод Рунге-Кутта четвертого порядка для численного решения дифференциальных уравнений первого порядка

По сравнению с описанным выше методом Эйлера метод Рунге-Кутта имеет более высокую точность. Идея Рунге-Кута состоит в том, чтобы использовать метод неопределённых коэффициентов. В методе Рунге-Кутта  четвертого порядка вычисления производятся по формулам:

K1=h*F(Xi,Yi);

K2=h*F(Xi+h/2,Yi+K1/2);

K3=h*F(Xi+h/2,Yi+K2/2);

K4=h*F(Xi+h,Yi+K3);

Yi+1 = Yi + (K1+2*K2+2*K3+K4) / 6

Метод Рунге-Кутта применим также для приближенного решения систем ОДУ, применяя формулы для каждого уравнения в отдельности. При этом погрешность интегрирования есть величина порядка h5.

В данном задании необходимо задать:  шаг h и начальные условия (t0, tk, y0).

Выходными данными являються: количество итераций,  решение ДУ на каждом шаге итераций, решение ДУ.

ЗАКЛЮЧЕНИЕ

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

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

Рассмотренные методы реализованы на ЭВМ в среде программирования Dev-C++(Dev-CPP).

СПИСОК ЛИТЕРАТУРЫ

  1.  Чичкарев Е.А. Методические указания к выполнению курсовой работы по дисциплине «Численные методы и моделирование на ЭВМ» (для студентов специальности 7.092501) очной и заочной формы обучения. – Мариуполь: ПГТУ, 2005. – 80 с.
  2.  Симкин А. И. Методы в программировании. Справочник. (для студентов специальности 6.0925 «Автоматизация и компьютерно-интегрированные технологии»). Мариуполь: ПГТУ, 2002. – 60 с.

Приложение А.1- Блоксхема к заданию 1.

ПРИЛОЖЕНИЕ А.2 - Блок-схема к заданию 2.

ПРИЛОЖЕНИЕ А.3 - Блок-схема к заданию 3.

ПРИЛОЖЕНИЕ А.4 - Блок-схема к заданию 4.

ПРИЛОЖЕНИЕ А.5 - Блок-схема к заданию 5.

ПРИЛОЖЕНИЕ Б.1 – листинг программ задания 1

/*=========Задание 1=========*/

#include <math.h>

#include <conio.h>

#include <stdio.h>

#include <iostream>

#include <stdlib.h>

using namespace std;

/*=========Фунции============*/

double An(int i)

{

double x=pow(-1.0,i+1.0)*exp(-2.0*pow(i,2.0));

return x;

}

double Bn(int i)

{

 double x=(1.0)/pow(2.0*i-1.0,2.0);

 return x;

}

/*===========================*/

int main()

{

int i,n;

double SumAn,e,SumBn;

 cout<<"Vvedite n:";        //Число действий

 cin>>n;

  double *ryad1=new double[n];

  double *ryad2=new double[n];

  cout<<"Vvedite e:";      //Точность

  cin>>e;

/*=========Ряд 1=============*/

SumAn=0;

for (i=1;i<=n-1;i++)                   

 {

  ryad1[i]=An(i);

  SumAn=SumAn+ryad1[i];

  if (fabs(ryad1[i])<=e)

   {

    cout<<"Previsheniye tochnosti 1\n";

    cout<<"Iter:"<<i<<endl;

    break;

   }

 }

/*=========Ряд 2=============*/

SumBn=0;

for (i=1;i<=n-1;i++)                     

 {

  ryad2[i]=Bn(i);

  SumBn=SumBn+ryad2[i];

  if (fabs(ryad2[i])<=e)

   {

    cout<<"Previsheniye tochnosti 2\n";

    cout<<"Iter:"<<i<<endl;

    break;

   }

 }

cout<<"Ryad sxoditsiya, Summa1:"<<SumAn<<"\n"; //Вывод суммы

cout<<"Rayd sxoditsiya, Summa2:"<<SumBn;

getch();

}

ПРИЛОЖЕНИЕ Б.2 – листинг программ задания 2

Часть 1.

/*=========Задание 2=========*/

#include <conio.h>

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#include <iostream>

using namespace std;

float const t=1e-9;

float a,b,eps;

/*=========Фунции============*/

float f(double x)

{

 return pow(x,4)+pow(18,x)-10;

}

float f1(double x)

{

 return 4*pow(x,3)-18;

}

float f2(double x)

{

 return 12*pow(x,2);

}

/*===========================*/

int iter()

{

 double x0,hp;

 double x;

 int ch=0;

 x0=(a+b)/2;

 int i=0;

 for(i=0;i<10001;i++)

 {

  x0=x;

if (i=10000 || x>10000)

{

cout<<"Iteration: No possible root on the interval"<<endl;

   break;

}

   x=f2(x);

   i=i+1;

   //cout<<"x="<<x<<endl;

   //getch();

   if (fabs(x-x0)<eps)

   {

     cout<<"Iteration: ="<<x<<endl;

     break;

   }

 }

}

/*===========================*/

int kas()

{

 float x0,x1;

 if (f(a)*f2(a)>t) x0=a;

   else

 if (f(b)*f2(b)>t) x0=b;

   else

 {

 printf("\n(kas) = Error!");

 getch();

 }

 while (fabs(x1-x0)>eps+t || fabs(f(x1))>eps+t)

 {

   x1=x0-f(x0)/f1(x0);

   x0=x1;

 }

 printf("\n(kas) = %2.7f",x1);

}

/*===========================*/

int hordkas()

{

 float xh,xk;

 if (f(a)*f2(a)>t) {xk=a; xh=b;}

   else

 if (f(b)*f2(b)>t) {xk=b;xh=a;}

   else

 {

 printf("\n(hordkas) = Error!"); getch();

 }

 while (fabs(xh-xk)>eps+t)

 {

   xh=xh-(f(xh)*(xk-xh))/(f(xk)-f(xh));

   xk=xk-f(xk)/f1(xk);

 }

 printf("\n(hordkas) = %2.7f",(xh+xk)/2);

}

/*===========================*/

int hord()

{

float x0,x1;

x0=a;

while (fabs(f(x1))>eps+t)

 {

   x1=x0-(f(x0)*(b-x0))/(f(b)-f(x0));

   x0=x1;

 }

printf("\n(hord) = %2.7f",x1);

}

/*===========================*/

int del()

{

 float x0,aa,bb;

 aa=a; bb=b;

 while (fabs(bb-aa)>eps+t)

 {

   x0=(aa+bb)/2;

   if (f(aa)*f(x0)<-t)

{

bb=x0;

}

   else

{

aa=x0;

   }

 }

 printf("\n(del) = %2.7f",x0);

}

/*===========================*/

int main()

{

 printf("\nInput a,b,eps: ");

 scanf("%f %f %f",&a,&b,&eps);

 iter();

 del();

 kas();

 hord();

 hordkas();

 getch();

}

Часть 2.

/*=========Задание 2=========*/

#include <conio.h>

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#include <iostream>

using namespace std;

float const t=1e-9;

float a,b,eps;

/*=========Фунции============*/

float f(double x)

{

 return pow(5,x)-(6*x)-3;

}

float f1(double x)

{

 return pow(5,x)*log(5)-6

 ;

}

float f2(double x)

{

 return pow(5,x)*pow(log(5),2);

}

/*===========================*/

int iter() //Метод Итераций

{

 double x0,hp;

 double x;

 int ch=0;

 x0=(a+b)/2;

 int i=0;

 for(i=0;i<10001;i++)

 {

  x0=x;

if (i=10000 || x>10000)

{

cout<<"Iteration: No possible root on the interval"<<endl;

   break;

}

   x=f2(x);

   i=i+1;

   if (fabs(x-x0)<eps)

   {

     cout<<"(iter) ="<<x<<endl;

     break;

   }

 }

}

/*===========================*/

int kas() //Метод Касательных

{

 float x0,x1;

 if (f(a)*f2(a)>t) x0=a;

   else

 if (f(b)*f2(b)>t) x0=b;

   else

 {

 printf("\nroot(kas) = Error!");

 getch();

 }

 while (fabs(x1-x0)>eps+t || fabs(f(x1))>eps+t)

 {

   x1=x0-f(x0)/f1(x0);

   x0=x1;

 }

 printf("\nroot(kas) = %2.7f",x1);

}

/*===========================*/

int hordkas() //Метод Хорд-Касательных

{

 float xh,xk;

 if (f(a)*f2(a)>t) {xk=a; xh=b;}

   else

 if (f(b)*f2(b)>t) {xk=b;xh=a;}

   else

 {

 printf("\nroot(hordkas) = Error!"); getch();

 }

 while (fabs(xh-xk)>eps+t)

 {

   xh=xh-(f(xh)*(xk-xh))/(f(xk)-f(xh));

   xk=xk-f(xk)/f1(xk);

 }

 printf("\nroot(hordkas) = %2.7f",(xh+xk)/2);

}

/*===========================*/

int hord() //Метод Касательных

{

float x0,x1;

x0=a;

while (fabs(f(x1))>eps+t)

 {

   x1=x0-(f(x0)*(b-x0))/(f(b)-f(x0));

   x0=x1;

 }

printf("\nroot(hord) = %2.7f",x1);

}

/*===========================*/

int del() // Метод Половинного деления

{

 float x0,aa,bb;

 aa=a; bb=b;

 while (fabs(bb-aa)>eps+t)

 {

   x0=(aa+bb)/2;

   if (f(aa)*f(x0)<-t)

{

bb=x0;

}

   else

{

aa=x0;

   }

 }

 printf("\nroot(del) = %2.7f",x0);

}

/*===========================*/

int main()

{

 printf("\nInput a,b,eps: "); //Ввод значений

 scanf("%f %f %f",&a,&b,&eps);

 //iter();

 del();  //Вызов функций

 kas();

 hord();

 hordkas();

 getch();

}

Часть 3.

/*=========Задание 2.2=========*/

#include <conio.h>

#include <stdio.h>

#include <math.h>

#include <iostream>

using namespace std;

int main()

{

float E=0.1;

float x=2;

float y=3;

while(1)

{

system("cls");

float f11=-3*y*y;//Описание переменных dX dY

float f12=-3*x*x;

float f21=-1.5*pow(x,0.5);

float f22=-1;//-1

/*=========Фунции============*/

float f1=-(pow(x,3)+pow(y,3)-8);

float f2=-(y-1-pow(x,1.5));//

//Вывод

cout<<"f11="<<f11<<endl;

cout<<"f12="<<f12<<endl;

cout<<"f1="<<f1<<endl;

cout<<"f21="<<f21<<endl;

cout<<"f22="<<f22<<endl;

cout<<"f2="<<f2<<endl<<endl<<endl<<endl;

//Новые Значения

f1=f1/f11;

f12=f12/f11;

f11=f11/f11;

//Новые Значения

float f11m=f11*f21;

float f12m=f12*f21;

float f1m=f1*f21;

//Новые Значения

f21=f21-f11m;

f22=f22-f12m;

f2=f2-f1m;

//Новые Значения

f2=f2/f22;

f22=f22/f22;

//Новые Значения

float dy=f2/f22;

float dx=(f1-dy*f12)/f11;

//Конечный Вывод

cout<<"f11="<<f11<<endl;

cout<<"f12="<<f12<<endl;

cout<<"f1="<<f1<<endl;

cout<<"f21="<<f21<<endl;

cout<<"f22="<<f22<<endl;

cout<<"f2="<<f2<<endl;

cout<<"Dx="<<dx<<endl;

cout<<"Dy="<<dy<<endl;

cout<<"x="<<x<<endl;

cout<<"y="<<y<<endl;

getch();

//Проверка

if((fabs(dx)<E) && (fabs(dy)<E)) break;

x=x+dx;

y=y+dy;

}

cout<<"x="<<x<<endl;

cout<<"y="<<y<<endl;

getch();

}

ПРИЛОЖЕНИЕ Б.3 – листинг программ задания 3

/*=========Задание 3=========*/

#include <math.h>

#include <iostream>

#include <conio.h>

#include <stdio.h>

#pragma hdrstop

#pragma argsused

using namespace std;

/*===========================*/

int main(int argc, char* argv[])

{

const int n=11;

const double t=1e-9;

double x[n]={18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0};

double y[n]={0,-0.06906,-0.20633,-0.36975,-0.52416,-0.63728,-0.68247,-0.64188,-0.50883,-0.28908,-0.00059};

double xint,pr[n],P,k[n],L;

cout<<"Zadanie 3. Interpolaciya\n\n";

L=0;         //Обнуляем полином

/*===========================*/

for (int i=0;i<n;i++)

{

 cout<<"x["<<i+1<<"] = "<<fixed<<x[i]<<"      "<<"y["<<i+1<<"] = "<<y[i]<<endl;

}

cout<<"\nVvedite X = ";

cin>>xint;

 xint=xint+t;P=1;

/*===========================*/

for (int i=0;i<n;i++)                         //Метод Логранжа

{

 pr[i]=1;

 for (int j=0;j<n;j++)

 {

  if (i!=j)

   {

    k[i]=x[i]-x[j];

   }

  else

   {

    k[i]=xint-x[j];    

    P=k[i]*P;

   }

  pr[i]=k[i]*pr[i];

 }

}

/*===========================*/

for (int i=0;i<n;i++)

 L=L+y[i]/pr[i];

L=L*P;

printf("L=%lf \n",L);

const int z=10;

double a[z],b[z],c[z],d[z],h,S3,m[z],lam[z],mu[z]; int i;  //Сплайн кубический

h=(x[z]-x[0])/z;

a[0]=1.0;

a[z]=1.0;

b[0]=0.0;

c[z]=0.0;

d[0]=-y[0];

d[z]=-y[z];

for (i=1;i<z;i++)

 {

  a[i]=2.0*h/3.0;

  b[i]=h/6.0;

  c[i]=h/6.0;

  d[i]=(y[i+1]-2*y[i]+y[i-1])/h;

 }

lam[0]=-b[0]/a[0];

mu[0]=d[0]/a[0];

for (i=1;i<z;i++)

 {

  lam[i]=-b[i]/(a[i]+c[i]*lam[i-1]);

  mu[i]=(d[i]-c[i]*mu[i-1])/(a[i]+c[i]*lam[i-1]);

 }

m[z]=mu[z];

for (i=z-1;i>0;i--)

 {

  m[i]=lam[i]*m[i+1]+mu[i];

 }

for (i=1;i<=z;i++)

{

if ((xint>x[i-1]-t) & (xint<x[i]+t))

  S3=((x[i]-xint)*y[i-1]+(xint-x[i-1])*y[i])/h+(pow((x[i]-xint),3)-h*h*(x[i]-xint))*m[i-1]/(6.0*h)+(pow((xint-x[i-1]),3)-h*h*(xint-x[i-1]))*m[i]/(6.0*h);

}

cout<<"S3 = "<<S3<<endl; //Вывод

getch();

}

ПРИЛОЖЕНИЕ Б.4 – листинг программ задания 4

Часть 1.

clc

a=evstr(x_dialog('nach.=','0'));

b=evstr(x_dialog('Konech.=','1'));

E=evstr(x_dialog('E','0.01'));

n=1/E;

h=(b-a)/n;

x=a:h:b;

d=length(x);

S=0;

dd=d-1;

for i=1:dd

aa=x(i)^3*exp(-x(i)^2);

bb=x(i+1)^3*exp(-1*x(i+1)^2);

Sk=((aa+bb)/2)*h;

S=S+Sk;

end

disp('Формула трапеций')

disp('I=')

disp(S)

Sk=0;

Sl=0;

for i=1:dd

f=x(i)^3*exp(-x(i)^2);

Sk=Sk+f;

end

for i=2:d

f=x(i)^3*exp(-x(i)^2);

Sl=Sl+f;

end

sdd=((b-a)/dd)*((Sl+Sk)/2);

disp('Формула гаусса')

disp('I=')

disp(sdd)

Часть 2.

clc

a=evstr(x_dialog('nach.=','1'));

b=evstr(x_dialog('Konech.=','2'));

E=evstr(x_dialog('E','0.01'));

n=1/E;

h=(b-a)/n;

x=a:h:b;

d=length(x);

S=0;

dd=d-1;

for i=1:dd

aa=((log(x(i)+1))/x(i))*exp(-x(i))

bb=((log(x(i+1)+1))/x(i+1))*exp(-x(i+1))

Sk=((aa+bb)/2)*h;

S=S+Sk;

end

disp('Формула трапеций')

disp('I=')

disp(S)

Sk=0;

Sl=0;

for i=1:dd

f=((log(x(i)+1))/x(i))*exp(-x(i))

Sk=Sk+f;

end

for i=2:d

f=((log(x(i)+1))/x(i))*exp(-x(i))

Sl=Sl+f;

end

sdd=((b-a)/dd)*((Sl+Sk)/2);

disp('Формула гаусса')

disp('I=')

disp(sdd)

ПРИЛОЖЕНИЕ Б.5 – листинг программ задания 5

//Задание 5

#include <conio.h>

#include <stdio.h>

#include <math.h>

#include <iostream>

using namespace std;

double xx, yy, yd, xk, h;

double const t=1e-15;

double f(float x, float y)

//Функция

{

 double f;

 f=x*y*exp(-2*x);

 return f;

}

int main ()

{

system("cls");

float a=0;

float b=1;

float xx=2;//x0

float yy=1/exp(1);//y0

float x,y,k1,k2,k3,k4;

cout<<"Enter H:";

cin>>h;

x=a;

y=yy;

while(x<b+t)

{

 y=y+h*f(x,y);

 x=x+h;

}

cout<<"Y1="<<y<<endl<<endl;

x=a;

y=yy;

while(x<b+t)

{

 k1=h*f(x,y);

 k2=h*f(x+h/2,y+k1/2);

 k3=h*f(x+h/2,y+k2/2);

 k4=h*f(x+h,y+k3);

 y=y+(k1+2*k2+2*k3+k4)/6;

 x=x+h;

}

cout<<"Y2="<<y<<endl<<endl;

 getch();

}

Приложение В.1 – Результаты работы программы задания 1

Приложение В.2 – Результаты работы программы задания 2

Приложение В.3 – Результаты работы программы задания 3

Приложение В.4 – Результаты работы программы задания 4

Приложение В.5 – Результаты работы программы задания 5


 

А также другие работы, которые могут Вас заинтересовать

35985. Абстрактный экспрессионизм 44.38 KB
  Портрет и мечта Portrit nd Drem 1953 Пасха и тотем Ester nd the Totem 1953 Серость океана Ocen Greyness 1953 Глубина The Deep Марк Ротко Эмиграция в США Глава семейства Ротковичей опасаясь того что детей заберут на службу в царскую армию решил эмигрировать в США следуя примеру многочисленных еврейских семей бежавших от погромов. В Америку уже уехали двое братьев Якова Ротковича которые обосновались в Портленде штат Орегон и занялись производством одежды. Раннее творчество...
35987. Гидросфера: строение, физические свойства и химический состав. Мировой океан. Пресные воды 44 KB
  Пресные воды Гидросфера – прерывистая водная оболочка Земли располагающаяся между атмосферой и твердой земной корой и представляющая собой совокупность вод Мирового океана и поверхностных вод суши. В общем виде принято деление гидросферы на Мировой океан континентальные воды и подземные воды. Большая часть воды сосредоточена в океане значительно меньше в континентальной речной сети и подземных водах. Также большие запасы воды имеются в атмосфере в виде облаков и водяного пара.
35988. Понятия биогеоценоза и ландшафта. Биогеохимический круговорот веществ и энергии 44 KB
  Биогеохимический круговорот веществ и энергии Биогеоценозы природные образования с четкими границами состоящие из совокупности живых существ биоценозов занимающих определенное место. Экосистема представляет собой систему которая обеспечивает круговорот любого ранга а биогеоценоз это экосистема в конкретных условиях ландшафта с учетом свойств почвы рельефа составляющих ее компонентов. Совокупности однотипных БГЦ образуют ландшафты Биогеохимический круговорот веществ и энергии Биогеохимический круговорот веществ это повторяющиеся...
35990. Международный договор: понятие, признаки. классификация международных договоров. форма международного договора: язык, структура, наименование 44 KB
  форма международного договора: язык структура наименование. Признаки: явно выраженное волеизъявление сторон; исполнение договора обеспечивается санкциями; подпадает под регулирующее действие международного права; юридически обязателен только для его участников. Форма договора: письменная устная. Структура договора: это его составные части: название договора преамбула основная и заключительная части подписи сторон.
35991. Основные направления и методы снижения экологического риска от загрязнения окружающей среды 43.5 KB
  Различают следующие методы анализа риска Вероятностно-статистические методы анализа риска предполагают как оценку вероятности возникновения аварии так и расчет относительных вероятностей того или иного пути развития процессов. Кроме того применение упрощенных расчетных схем снижает достоверность получаемых оценок риска для тяжелых аварий.
35993. Нормативные документы регламентирующие содержание образования 43.5 KB
  Нормативные документы регламентирующие содержание образования ГОС – это система основных параметров которые принимаются в качестве гос нормы образованности отражающая общественный идеал и учитывающий возможности реальной личности по достижению этого идеала. Федеральный – определяет те нормативы соблюдение которых обеспечивает единство пед пространства РФ интеграцию личности в системе мировой культуры вот почему он считается базовым. Профессиональные интересы личности.