20 / 16 / 7
Регистрация: 27.02.2012
Сообщений: 742
1

Реализовать квадратный корень через возведение в степень

03.02.2016, 14:11. Показов 6390. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Попытка реализовать квадратный корень через возведение в степень, попробовав встроенный pow(16, 1/2), всё считает верно, однако как его реализовать под этот случай?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.02.2016, 14:11
Ответы с готовыми решениями:

Как реализовать функции что бы найти синус, косинус, корень квадратный, степень от числа
Добрый вечер,разрабатываю калькулятор на winapi хотелось бы узнать как реализовать функции что бы...

Возведение в степень -корень из 3
вот код #include "stdafx.h" #include <conio.h> #include <math.h> #include <iostream> using...

Посчитать вторую и третью степень и корень квадратный цифр от 1 до 9
Нужна программа, которая посчитает вторую и третью степень и корень квадратный цифр од 1 до 9. На...

Вычислить корень квадратный из четных чисел и возвести в 3 степень нечетные числа
Даны три действительных числа. Вычислить корень квадратный из четных чисел и возвести в 3 степень...

10
Dimension
594 / 462 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
03.02.2016, 14:23 2
Добавлено через 1 минуту
Цитата Сообщение от Satansoft Посмотреть сообщение
однако как его реализовать под этот случай?
вы о чем?
0
20 / 16 / 7
Регистрация: 27.02.2012
Сообщений: 742
03.02.2016, 14:33  [ТС] 3
Цитата Сообщение от Dimension Посмотреть сообщение
вы о чем?
О реализации sqrt через pow (=

Целочисленный pow делается итеративно, как-то такъ:
C++
1
2
3
4
5
int pow (long num, long p)
{
  for(int i = 0; i< p-1; i++)
     num *= num;
}
но он не годится, если степень дробная (0,5 в случае квадратного корня (1/2)).
0
Хитрая блондиночка $)
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
03.02.2016, 14:37 4
Цитата Сообщение от Satansoft Посмотреть сообщение
всё считает верно, однако как его реализовать под этот случай?
Наверное так:
C
1
float sqr(float x){ return pow(x, 1/2);};
0
20 / 16 / 7
Регистрация: 27.02.2012
Сообщений: 742
03.02.2016, 14:40  [ТС] 5
Цитата Сообщение от Hikari Посмотреть сообщение
float sqr(float x){ return pow(x, 1/2);};
Вы вездесущи, однако меня интересует pow с нуля, а не библиотечный, для дробной степени.
0
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
03.02.2016, 15:00 6
Satansoft
Воспользоваться разложением в ряд https://www.cyberforum.ru/cgi-bin/latex.cgi?(1+x)^{\alpha} для остатка меньшего единицы?
0
20 / 16 / 7
Регистрация: 27.02.2012
Сообщений: 742
03.02.2016, 15:02  [ТС] 7
Цитата Сообщение от mporro Посмотреть сообщение
Воспользоваться разложением в ряд для остатка меньшего единицы?
Прекрасно, а как это арифметически?
0
Dimension
594 / 462 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
03.02.2016, 15:08 8
Лучший ответ Сообщение было отмечено Satansoft как решение

Решение

an = exp(n*log(a));
0
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
03.02.2016, 15:16 9
Satansoft
Первое, что приходит в голову...
Большое число N можно делить на два, пока остаток не окажется между 2 и 1. Т.е https://www.cyberforum.ru/cgi-bin/latex.cgi?N = 2^{k\alpha}P^\alpha, где https://www.cyberforum.ru/cgi-bin/latex.cgi?1 < P < 2 и https://www.cyberforum.ru/cgi-bin/latex.cgi?k \in Z. Тогда для вычисления https://www.cyberforum.ru/cgi-bin/latex.cgi?P^\alpha можно использовать ряд для https://www.cyberforum.ru/cgi-bin/latex.cgi?(1+x)^\alpha. Вычислить же https://www.cyberforum.ru/cgi-bin/latex.cgi?2^{k\alpha} можно через ряд для экспоненты, зная заранее только https://www.cyberforum.ru/cgi-bin/latex.cgi?\textrm{ln}2.
1
Хитрая блондиночка $)
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
03.02.2016, 15:30 10
Цитата Сообщение от Satansoft Посмотреть сообщение
однако меня интересует pow с нуля
Ну кто же тебе виноват, что тебя не поняли?
Яснее выражай свои мысли. А то может тебе и предложение Dimension вдруг ни с того ни с сего не подойдет.
Мало ли - задание такое обязательно делать циклами...
0
1375 / 519 / 72
Регистрация: 21.07.2015
Сообщений: 1,304
03.02.2016, 16:13 11
Цитата Сообщение от Satansoft Посмотреть сообщение
Целочисленный pow делается итеративно, как-то такъ:
и то неправильно.
Satansoft, выше все верно написали. Но ты можешь и с помощью простого возведения в квадрат и некого подобия двоичного поиска найти корень с заданной точностью.

Добавлено через 41 минуту
Далеко не самый эффективный код, зато очень очевидный.
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
27
28
29
30
31
32
33
34
template<typename T> T my_pow_2(T val)
{
    return val * val;
}
 
template<typename T> T my_sqrt(T val)
{
    const int max_it = 32;
    T lo, hi, ret_val, pow2_res;
    if(val < 0.)
        throw std::runtime_error("sqrt value is negative");
    else if(val < 1.)
    {
        lo = val;
        hi = 1.;
    }
    else
    {
        lo = 1.;
        hi = val;
    }
    for(int it = 0; it < max_it; it++)
    {
        ret_val = (lo + hi) / 2;
        pow2_res = my_pow_2(ret_val);
        if(pow2_res < val)
            lo = ret_val;
        else if(pow2_res > val)
            hi = ret_val;
        else
            return  ret_val;
    }
    return ret_val;
}
1
03.02.2016, 16:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.02.2016, 16:13
Помогаю со студенческими работами здесь

Возведение в степень 1/1.1 или корень из 1.1 числа, представленного в string
Добрый день. Подскажите пожалуйста какой библиотекой можно реализовать возведение в степень 1/1.1...

Вычислить корень квадратный из положительных чисел и возвести в третью степень отрицательные числа
Всем добрый день, помогите решить задачу с условием: Даны три числа. Вычислить корень квадратный из...

Возведение числа в степень за минимальное количество умножений, не используя возведение в степень (в чем ошибка?)
должно число подводиться в степень за минимальное кол умножения не используя возведение в степень....

Как Реализовать Возведение В Степень На 1с 7.7
Добрый день всем! Приятель решил разработать небольшую программку на базе платформы 1С 7.7, при...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru