Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.68/150: Рейтинг темы: голосов - 150, средняя оценка - 4.68
instagib
122 / 85 / 16
Регистрация: 14.02.2011
Сообщений: 340
#1

Метод половинного деления

21.02.2011, 23:15. Просмотров 27713. Ответов 6
Метки нет (Все метки)

Добрый вечер! значит так господа, помогите реализовать этакий метод вот в таком случае:

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

вот что я накалякал:

C++
1
2
3
4
5
6
7
8
9
10
11
double a=0, b, c, EPS;
cout <<"ВВЕДИТЕ ЧИСЛО И СЛЕДОМ ПОГРЕШНОСТЬ: "<<endl;
cin >> b >> EPS;
 
do 
{
c = (a+b)/2;
c*c > b ? b = c : a = c;
 while (c >= EPS)
}
cout <<"OTVET: "<<C;
так вот я уже на столько запутался.. что у меня вообще вычисляет не то.. помогите )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2011, 23:15
Ответы с готовыми решениями:

Нахождения корней уравнения: метод половинного деления (бисекции) или метод хорд
Разработать программу нахождения корней уравнения f(x) =0 на интервале с...

Метод половинного деления
Нужно написать код для решения заданного уравнения методом половинного деления....

Метод половинного деления
Не пойму в чем ошибка, поскажите:wall: #include &lt;math.h&gt; #include &lt;iostream&gt;...

Метод половинного деления
Здравствуйте, многоуважаемая аудитория данного форума. И не сосчитать сколько...

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

6
name?
198 / 169 / 52
Регистрация: 01.06.2010
Сообщений: 371
Завершенные тесты: 1
21.02.2011, 23:56 #2
а чему b i с ровно?
0
instagib
122 / 85 / 16
Регистрация: 14.02.2011
Сообщений: 340
21.02.2011, 23:58  [ТС] #3
name?,
0
name?
198 / 169 / 52
Регистрация: 01.06.2010
Сообщений: 371
Завершенные тесты: 1
22.02.2011, 00:16 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream.h>
#include <math.h>
 
 
double f(double x)
{
   тут твоя функцыя
}
 
int main()
{
    double a, b, c,e;
    a = 0;
cin>>b;
cin>>e;
    while (b - a > e){
        c = (a + b) / 2;
        if(f(b) * f(c) < 0)
            a = c;
        else
            b = c;
    }
    cout << (a + b) / 2 << endl;
    return 0;
}
2
instagib
122 / 85 / 16
Регистрация: 14.02.2011
Сообщений: 340
22.02.2011, 00:35  [ТС] #5
name?, дело в том что у меня нет функции. у меня есть число например 8. надо с помощью дихотомии найти корень.

8/2 = 4;
4*4 > 8.
->
a=0;
b=4;
c = 4/2 = 2;
2*2 < 4;

a = 2;
b = 4;
c = 6/2 = 3;
3*3 > 8
->
3+2 / 2 = 2.5
2.5*2.5 < 8 или хз больше..я уже запустался..но суть в этом.. именно число.


а твой пример я видел уже много раз и на паскале и на всех языках других.. и еще. нужно написать так чтоб было без всяких Погрешностей EPS. а просто с помощью цикла FOR т.е. по отпределенному количеству итерации(делений)

Добавлено через 5 минут
все кароче..я сам разобрался.. вот кому то если будет интересно:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main()
 
{
     double a, b, c, a1;
     int i;
     a = 0;
     cin >> b;
     a1 = b;
     cin >> i;
     for(int j=0; j < i; j++)
     {
          c = (a+b)/2;
          c * c > a1 ? b = c : a = c;
     }
     cout << c;
     getch();
     return 0;
:D
}
0
name?
198 / 169 / 52
Регистрация: 01.06.2010
Сообщений: 371
Завершенные тесты: 1
22.02.2011, 01:24 #6
Может так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream.h>
#include <math.h>
#include <conio.h>
int main()
{
clrscr();
double c,d=0,e;
int a;
cin>>a;
cin>>e;
c=a/2;
do
{
d=0.5*(a/c+c);
if ((d-c>e)|| (c-d>e))
c=d;
else break;
 
}while (d-c<e);
cout<<d;
}
0
Гаджимурад
0 / 0 / 0
Регистрация: 08.12.2013
Сообщений: 2
08.12.2013, 23:24 #7
Запускал в Dev-C++
#include <iostream>
using namespace std;
#include <math.h>
float mpd(float x) // functions mpd - "metod polovinnogo deleniya"
{
return (3*cos(2*x+4));
}
int main()
{
setlocale(0, "");
float a,b,e,x; int k=0;
cout<<"1. y=3*cos(2*x+4)\n";
cout<<"Левая граница a=";
cin>>a;
cout<<"Правая граница b=";
cin>>b;
cout<<"Точность e=";
cin>>e;
x=(a+b)/2;
cout<<"Корень уравнения:"<<x;
while(fabs(b-a)>e)
{
if(mpd(a)*mpd(x)<=0) b=x;
else a=x;
x=(a+b)/2;
k++;
cout<<"\nТочность: "<<fabs(b-a)<<" Итерация №="<<k<<" Корень уравнения: "<<x;
}
cout<<"\nКоличество итераций ="<<k<<"\nКорень уравнения: "<<x;
return 0;
}
0
08.12.2013, 23:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2013, 23:24

Метод половинного деления
Помогите мне! У меня не вычисляет корень вообще #include &quot;stdafx.h&quot; #include...

Метод половинного деления
необходимо было написать программу, которая отделяет корни уравнения методом...

Метод половинного деления
Вопрос по поводу половинного деления. Для реализации этого метода нужно знать 2...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru