Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 36, средняя оценка - 4.61
b_kasenov47
14 / 14 / 1
Регистрация: 28.07.2012
Сообщений: 57
#1

Извлечение корня н-ной степени из числа - C++

07.08.2012, 21:09. Просмотров 4834. Ответов 13
Метки нет (Все метки)

Здравствуйте!!! Тут задачка такая: нужно извлечь корень н-ной степени из числа методом деления отрезка пополам. Я реализовал такой код:
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
26
#include <iostream>
#include <cstdio>
#include <cmath>
 
using namespace std;
 
const double EPS = 10E-12;
 
int main()
{
    double a;
    int n;
    cin >> a >> n;
    double l = 0, r = a;
    double m;
    while (fabs(l - r) / 2 > EPS)
        {
            m = (l + r) / 2;
            if (pow(m, n) > a)
                r = m;
            else
                l = m;
        }
    printf("%.12lf", m);
    return 0;
}
, но тестирующая система выдает ВА.

Добавлено через 19 минут
Исправил условие цикла на fabs(l -r) - не помогло
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.08.2012, 21:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Извлечение корня н-ной степени из числа (C++):

Извлечение корня n-степени - C++
Написал программу для вычисления корня n-cтепени #include&lt;iostream&gt; #include&lt;math.h&gt; using namespace std; int main() ...

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

Извлечение корня из отрицательного числа и сравнение его с вещественным числом - C++
Здравствуйте уважаемые формучане. Дано выражение: min(a*x,y,max(sqrt(x),sin(y))) при x ≤ 0 и y &gt; 2. Я попробовал реализовать это так: ...

Рекурсия: приближенное значение корня k-й степени из числа - C++
Приветствую всех. Прошу кого нибудь, если не трудно, помочь немного с задачей на рекурсию, я её просто не понимаю, не пойму, как надо...

Разработать алгоритм вычисления корня n-ой степени из комплексного числа - C++
В общем нужно на любом языке накатать программу: Разработать алгоритм вычисления корня n-ой степени из комплексного числа. Помогите мне...

Описать рекурсивную функцию вещественного типа, находящую приближенное значение корня K-й степени из числа X по формуле: - C++
Описать рекурсивную функцию вещественного типа, находящую приближенное значение корня K-й степени из числа X по формуле: Y0 = 1, YN+1 =...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
07.08.2012, 21:21 #2
Цитата Сообщение от b_kasenov47 Посмотреть сообщение
Тут задачка такая: нужно извлечь корень н-ной степени из числа методом деления отрезка пополам. Я реализовал такой код:
чтото я не понимаю в этом задании - как это можно сделать

Цитата Сообщение от b_kasenov47 Посмотреть сообщение
if (pow(m, n) > a)
если уж вы используете функцию возведение в степень - почему ж сразу не напишите
C
1
printf("%.12lf", pow(a, 1.0 / n));
я к тому, что чтото в вашем методе определенно не так
1
b_kasenov47
14 / 14 / 1
Регистрация: 28.07.2012
Сообщений: 57
07.08.2012, 21:25  [ТС] #3
Мы делим отрезок (изначально от 0 до числа) пополам. Затем проверяем, если середина больше числа - берем левую область поиска, иначе - правую. Своеобразный аналог бинарного поиска. Кажется он называется дихотомией
0
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
07.08.2012, 21:28 #4
b_kasenov47, понимаете - это абсурд решать таким образом задачу
тем более олимпиадную, тем более проверяемую автоматически
я имею непосредственно использование pow
2
Catstail
Модератор
22616 / 10977 / 1779
Регистрация: 12.02.2012
Сообщений: 18,121
07.08.2012, 21:28 #5
Извлечь корень n-й степени из числа x0, это то же самое, что найти нуль функции F(x)=x0-xn. На подходящем отрезке это можно сделать методом деления отрезка пополам.
1
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
07.08.2012, 21:31 #6
Catstail, я имею в виду, что если он для нахождения x^n использует функцию pow(x, n), то он с таким же успехом может сделать pow(x, 1./n)
1
b_kasenov47
14 / 14 / 1
Регистрация: 28.07.2012
Сообщений: 57
07.08.2012, 21:32  [ТС] #7
Можно поподробнее про решение уравнения???
0
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
07.08.2012, 21:39 #8
Цитата Сообщение от b_kasenov47 Посмотреть сообщение
Можно поподробнее про решение уравнения???
Изучать аттач до постижения Дзен.
1
Миниатюры
Извлечение корня н-ной степени из числа  
Catstail
Модератор
22616 / 10977 / 1779
Регистрация: 12.02.2012
Сообщений: 18,121
07.08.2012, 21:40 #9
Цитата Сообщение от alex_x_x Посмотреть сообщение
то он с таким же успехом может сделать pow(x, 1./n)
- разумеется!!!
1
b_kasenov47
14 / 14 / 1
Регистрация: 28.07.2012
Сообщений: 57
07.08.2012, 21:43  [ТС] #10
Если дзен меня достиг, то у меня разве не тоже самое?
0
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
07.08.2012, 21:45 #11
Начнём с того, что с чего вы взяли, что число a положительно?

А во-вторых. Точно точно половинным делением? Точно не методом Ньютона, который это делает в стопицот раз быстрее без всяких вызовов pow?

В-третьих, точно EPS = 10E-12? Не 1E-12?
1
b_kasenov47
14 / 14 / 1
Регистрация: 28.07.2012
Сообщений: 57
07.08.2012, 22:08  [ТС] #12
окай вот условие. Думаю оно все пояснит:
Дано действительное число a и натуральное n. Вычислите корень n-й степени из числа a.

Для решения используйте метод деления отрезка пополам.

Число a – действительное, неотрицательное, не превосходит 1000, задано с точностью до 6 знаков после запятой. Число n – натуральное, не превосходящее 10.

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

Добавлено через 12 минут
точность такая для перестраховки. и что 1Е, что 10Е особой разницы не вижу
0
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
07.08.2012, 22:14 #13
Ну, BA она выдаёт для чисел, меньших единицы. Потому что их корни больше самого числа, а не меньше.
1
b_kasenov47
14 / 14 / 1
Регистрация: 28.07.2012
Сообщений: 57
07.08.2012, 22:15  [ТС] #14
Все спасибо большое!!! Понял косяк!!!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.08.2012, 22:15
Привет! Вот еще темы с ответами:

Как возвести число в целочисленную степень и взять корень N-ной степени? - C++
извиняюсь, за ламерский вопрос, но как в C++ возвести число в целочисленную степень и взять корень N-ной степени??? Заранее благодарен!

Написать программу, которая делит числа в 5 степени на число в 14 степени и выводит ответ в 5 степени. Найти ошибку - C++
Ребят, такая проблема, задание: Написать программу, которая делит числа в 5 степени на число в 14 степени и выводит ответ в 5 степени. ...

Извлечение корня - C++
Не подскажите функцию в С++ для извлечения корня

Извлечение кубического корня - C++
Подскажите, как можно извлечь кубический корень? Извлечение квадратного корня это без проблем: #include &lt;iostream&gt; #include &lt;cmath&gt; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
07.08.2012, 22:15
Ответ Создать тему
Опции темы

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