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

      1. Сущность метода половинного деления

При решении уравнения (1) методом половинного деления (методом проб) промежуточная точка c (итерация c) выбирается посредине отрезка изоляции

.

Затем вычисляется значение , после чего проверяется следующее условие: если

,

то сужение отрезка производится за счет переноса точкиb в точку c, т.е. b = c, точка a при этом остается неподвижной, иначе переносится точка a, т.е. a = c, точка b - неподвижна.

Условие окончания вычислений:

.

Найденное значение корня целесообразно определять по формуле:

.

      1. Блок-схема программы.

1

Начало

Заставка

Введите промежуток изоляции

а, b

Введите погрешность вычислений

eps

да/нет

А

Изменить введенные значения?

ответ 1

нет

с=(а+b)/2

B

С

да

1

f(a)*f(c)<0

b=c

a=c

нет

да

|a-b|<0

B

да/нет

С

Перезапустить программу?

ответ 2

да

нет

да

нет

Конец

      1. Код программы №2

#include <cstdlib>

#include <iostream>

#include <stdio.h>

#include <conio.h>

#include <windows.h>

#include <math.h>

using namespace std;

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

{

double a, b, eps, c, fa, fb, fc, znach, i;

char re1;

setlocale(LC_ALL,"Russian");

cout << "Задание N1.2. . Дубровский К.В. Вариант 5.Решение уравнения методом половинного деления.\nf(x)=x^2*sin(2*x)\n"<<endl;

do {

cout<<"\nВведите пределы изоляции корня [a, b]\n";

cout<<"Введите а\n";

cin>>a;

cout<<"Введите b\n";

cin>>b;

cout<<"Введите погрешность eps";

cin>>eps;

cout<<"Введены следующие числа:\n a="<<a<<"\nb="<<b<<"\neps="<<eps;

cout<<"\nИзменить значения? y/n?";

cin>>re1;

if(a>b) {

cout<<"\nошибка ввода. Повторите ввод чисел!";

re1='y';};

} while (re1!='n');

for(i=a; i<=b+(b-a)/10; i=i+(b-a)/10) {

znach=i*i*sin(2*i)-1;

cout <<"X=" << i <<"\t\tF=" << znach <<endl;

};

do{

c=(a*b)/2;

fa=a*a*sin(2*a);

fb=b*b*sin(2*b);

fc=c*c*sin(2c);

if(fa*fc<0) {

b=c;

}

else {a=c;

};

} while ((a-b)>eps);

cout<<"Решение уравнения на заданном промежутке x="<<c;

system("PAUSE");

return EXIT_SUCCESS;}

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

Промежуток изоляции

Погрешность

Количество итераций

Значение корня

[-1,5; -1]

0.001

4

-1,18512

[-2,5; -2]

0.00001

9

-2,25744

[1; 1,5]

0.00001

7

1,18339

[5; 5,5]

0.001

4

5,48112

[2; 2,5]

0.0001

5

2,25741

2.1. Вычисление определённого интеграла

Вычислить значение определенного интеграла по формуле прямоугольников (слева, справа и их среднее значение), по формуле трапеций и по формуле Симпсона, применяя для оценки точности каждого результата двойной пересчет (при числе разбиений интервала интегрирования n=10, n=20,....,n=80). Убедиться, что формула Симпсона дает наиболее точное значение интеграла (для этого результат выводить на печать с восемью и более знаками после запятой).

.

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