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

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

21.02.2011, 23:15. Просмотров 26939. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Метод половинного деления (C++):

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

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

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

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

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

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

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
Привет! Вот еще темы с решениями:

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

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

Метод половинного деления
Методом половинного деления найти решение следующих нелинейных уравнений с...

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


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

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

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