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

2.1.5. Примеры работы программы

Пределы интегрирования

Количество

разбиений

Левая сумма

Правая сумма

Средняя сумма

Метод

трапеций

Метод Симпсона

[0; 2]

10

2,272075

2,92072

2,82073

2,82073

2,81876286

[0; 2]

20

2,76926

2,86924

2,81925

2,81925

2,81875465

[0; 2]

40

2,79388

2,8437

2,81888

2,8188

2,81875412

[0; 2]

60

2,80214

2,83547

2,81881

2,81881

2,1875410

[0; 2]

80

2,80629

2,83128

2,81879

2,81879

2,81875409

В результате выполнения программы с разным числом разбиений средняя сумма и значение метода трапеций совпадают. Метод Симпсона является наиболее точным при меньшем числе разбиений.

3.1. Вычисление Дифференциального уравнения методом Эйлера

Используя метод Эйлера, вычислить таблицу из (n+1) приближенных значений решения дифференциального уравнения вида, удовлетворяющего начальному условиюна отрезке [0,1] для различных чисел разбиения отрезка интегрирования (10, 20, ..., 500).

Метод Эйлера является самым простым и наименее точным. Он применяется для ориентировочных расчетов. Приращение в этом методе определяется по формуле

,

т.е. функция y на аппроксимируется линейной функцией с угловым коэффициентом. Из формул (26) и (27) следует формула Эйлера

.

3.1.1. Блок-схема алгоритма

Начало

Заставка

Введите число разбиений

n

i=1, i<=n+1, i=i+1

i=1

x=x+h

y2=y2+h*f(x,y2)

y=0.2

y=y+h*f(a,y)

x, y

x, y

Конец

3.1.2. Код программы:

#include <math.h>

#include <iostream>

#include <conio.h>

#include <windows.h>

using namespace std;

double F(double x, double y)

{

double F;

F= 0.2*x+y*y;

return F;

}

int main()

{

cout<<"Dubrovskiy K.V., R-100101, Variant 5"<<endl;

cout<<"y'=0.2*x+y^2; y(0)=0,1"<<endl; //Данное уравнение

double h, a, b, n, i, x, y;

char re;

do

{

cout<<"Vvedite n:"<<endl;

cin>>n;

a=0; b=1;

h=(b-a)/n;

x=a; y=0.1;

cout<<"\nh="<<h<<endl;

cout<<"\nTablica znachenii:\n"<<endl;

cout<<"x="<<x<<"; y="<<y<<";"<<endl; x+=h;

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

{

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

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

x+=h;

}

cout<<"\nDo you want change steps number? Y/N"<<endl;

cin>>re;

}while (re=='y');

_getch();

return(0);

}

Ломаная Эйлера для данного дифференциального уравнения имеет вид:

4.1. Вывод

За время проведения вычислительной практики я приобрёл новые навыки в составлении и отладки программ, составленных на языке C++. Так же я познакомился с новыми математическими методами решения некоторых задач. Данная работа дала возможность познакомиться с новыми методами программирования решения сложных математических методов.

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

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