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

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

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

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

07.08.2012, 21:09. Просмотров 4749. Ответов 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) - не помогло
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.08.2012, 21:09     Извлечение корня н-ной степени из числа
Посмотрите здесь:
Извлечение корня n-степени C++
C++ Извлечение корня из отрицательного числа и сравнение его с вещественным числом
C++ Рекурсия: приближенное значение корня k-й степени из числа
C++ Разработать алгоритм вычисления корня n-ой степени из комплексного числа
C++ Описать рекурсивную функцию вещественного типа, находящую приближенное значение корня K-й степени из числа X по формуле:
C++ Как возвести число в целочисленную степень и взять корень N-ной степени?
Написать программу, которая делит числа в 5 степени на число в 14 степени и выводит ответ в 5 степени. Найти ошибку C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alex_x_x
бжни
2445 / 1650 / 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));
я к тому, что чтото в вашем методе определенно не так
b_kasenov47
14 / 14 / 1
Регистрация: 28.07.2012
Сообщений: 57
07.08.2012, 21:25  [ТС]     Извлечение корня н-ной степени из числа #3
Мы делим отрезок (изначально от 0 до числа) пополам. Затем проверяем, если середина больше числа - берем левую область поиска, иначе - правую. Своеобразный аналог бинарного поиска. Кажется он называется дихотомией
alex_x_x
бжни
2445 / 1650 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
07.08.2012, 21:28     Извлечение корня н-ной степени из числа #4
b_kasenov47, понимаете - это абсурд решать таким образом задачу
тем более олимпиадную, тем более проверяемую автоматически
я имею непосредственно использование pow
Catstail
Модератор
22445 / 10850 / 1766
Регистрация: 12.02.2012
Сообщений: 17,967
07.08.2012, 21:28     Извлечение корня н-ной степени из числа #5
Извлечь корень n-й степени из числа x0, это то же самое, что найти нуль функции F(x)=x0-xn. На подходящем отрезке это можно сделать методом деления отрезка пополам.
alex_x_x
бжни
2445 / 1650 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
07.08.2012, 21:31     Извлечение корня н-ной степени из числа #6
Catstail, я имею в виду, что если он для нахождения x^n использует функцию pow(x, n), то он с таким же успехом может сделать pow(x, 1./n)
b_kasenov47
14 / 14 / 1
Регистрация: 28.07.2012
Сообщений: 57
07.08.2012, 21:32  [ТС]     Извлечение корня н-ной степени из числа #7
Можно поподробнее про решение уравнения???
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
07.08.2012, 21:39     Извлечение корня н-ной степени из числа #8
Цитата Сообщение от b_kasenov47 Посмотреть сообщение
Можно поподробнее про решение уравнения???
Изучать аттач до постижения Дзен.
Миниатюры
Извлечение корня н-ной степени из числа  
Catstail
Модератор
22445 / 10850 / 1766
Регистрация: 12.02.2012
Сообщений: 17,967
07.08.2012, 21:40     Извлечение корня н-ной степени из числа #9
Цитата Сообщение от alex_x_x Посмотреть сообщение
то он с таким же успехом может сделать pow(x, 1./n)
- разумеется!!!
b_kasenov47
14 / 14 / 1
Регистрация: 28.07.2012
Сообщений: 57
07.08.2012, 21:43  [ТС]     Извлечение корня н-ной степени из числа #10
Если дзен меня достиг, то у меня разве не тоже самое?
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
07.08.2012, 21:45     Извлечение корня н-ной степени из числа #11
Начнём с того, что с чего вы взяли, что число a положительно?

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

В-третьих, точно EPS = 10E-12? Не 1E-12?
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Е особой разницы не вижу
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
07.08.2012, 22:14     Извлечение корня н-ной степени из числа #13
Ну, BA она выдаёт для чисел, меньших единицы. Потому что их корни больше самого числа, а не меньше.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.08.2012, 22:15     Извлечение корня н-ной степени из числа
Еще ссылки по теме:
C++ Извлечение корня
Извлечение кубического корня C++
Извлечение корня, длинная арифметика C++
Функция корня степени C++
Вычисление корня n-ой степени C++

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

Или воспользуйтесь поиском по форуму:
b_kasenov47
14 / 14 / 1
Регистрация: 28.07.2012
Сообщений: 57
07.08.2012, 22:15  [ТС]     Извлечение корня н-ной степени из числа #14
Все спасибо большое!!! Понял косяк!!!
Yandex
Объявления
07.08.2012, 22:15     Извлечение корня н-ной степени из числа
Ответ Создать тему
Опции темы

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