Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.84/56: Рейтинг темы: голосов - 56, средняя оценка - 4.84
14 / 14 / 3
Регистрация: 28.07.2012
Сообщений: 57
1

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

07.08.2012, 21:09. Показов 10575. Ответов 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

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.08.2012, 21:09
Ответы с готовыми решениями:

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

Доказательство иррациональности корня n-ной степени
Пожалуйста помогите доказать иррациональность числа следующего вида \sqrt{p} я прочел что такое...

Готовое решение: метод вычисления корня n -ной степени на C#
Долго меня мучал вопрос: как вычислить корень из любого числа. Используя всеми-любимый сайт...

Извлечение корня n-й степени
Чего то намудрила, не могу понять....

13
бжни
2473 / 1682 / 135
Регистрация: 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
14 / 14 / 3
Регистрация: 28.07.2012
Сообщений: 57
07.08.2012, 21:25  [ТС] 3
Мы делим отрезок (изначально от 0 до числа) пополам. Затем проверяем, если середина больше числа - берем левую область поиска, иначе - правую. Своеобразный аналог бинарного поиска. Кажется он называется дихотомией
0
бжни
2473 / 1682 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
07.08.2012, 21:28 4
b_kasenov47, понимаете - это абсурд решать таким образом задачу
тем более олимпиадную, тем более проверяемую автоматически
я имею непосредственно использование pow
2
Модератор
Эксперт функциональных языков программированияЭксперт Python
29648 / 16201 / 3239
Регистрация: 12.02.2012
Сообщений: 26,823
Записей в блоге: 5
07.08.2012, 21:28 5
Извлечь корень n-й степени из числа x0, это то же самое, что найти нуль функции F(x)=x0-xn. На подходящем отрезке это можно сделать методом деления отрезка пополам.
1
бжни
2473 / 1682 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
07.08.2012, 21:31 6
Catstail, я имею в виду, что если он для нахождения x^n использует функцию pow(x, n), то он с таким же успехом может сделать pow(x, 1./n)
1
14 / 14 / 3
Регистрация: 28.07.2012
Сообщений: 57
07.08.2012, 21:32  [ТС] 7
Можно поподробнее про решение уравнения???
0
~ Эврика! ~
1254 / 1003 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
07.08.2012, 21:39 8
Цитата Сообщение от b_kasenov47 Посмотреть сообщение
Можно поподробнее про решение уравнения???
Изучать аттач до постижения Дзен.
1
Миниатюры
Извлечение корня н-ной степени из числа  
Модератор
Эксперт функциональных языков программированияЭксперт Python
29648 / 16201 / 3239
Регистрация: 12.02.2012
Сообщений: 26,823
Записей в блоге: 5
07.08.2012, 21:40 9
Цитата Сообщение от alex_x_x Посмотреть сообщение
то он с таким же успехом может сделать pow(x, 1./n)
- разумеется!!!
1
14 / 14 / 3
Регистрация: 28.07.2012
Сообщений: 57
07.08.2012, 21:43  [ТС] 10
Если дзен меня достиг, то у меня разве не тоже самое?
0
~ Эврика! ~
1254 / 1003 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
07.08.2012, 21:45 11
Начнём с того, что с чего вы взяли, что число a положительно?

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

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

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

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

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

Добавлено через 12 минут
точность такая для перестраховки. и что 1Е, что 10Е особой разницы не вижу
0
~ Эврика! ~
1254 / 1003 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
07.08.2012, 22:14 13
Ну, BA она выдаёт для чисел, меньших единицы. Потому что их корни больше самого числа, а не меньше.
1
14 / 14 / 3
Регистрация: 28.07.2012
Сообщений: 57
07.08.2012, 22:15  [ТС] 14
Все спасибо большое!!! Понял косяк!!!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.08.2012, 22:15

Извлечение корня n степени
Требуется программно реализовать какое-то алг. выражение (не суть какого) в котором присутствует...

Создание калькулятора: извлечение корня n-ой степени
Я сделал функцию по извлечению корня n-ой степени из отрицательного числа через power if (buff&lt;0)...

Вычисление n-ной степени числа
Вычислить X^n

Извлечь корень н-ной степени из числа
;Великая теорема Ферма. ;Для любого натурального числа n &gt; 2 уравнение ; a^n + b^n = c^n ...


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

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

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