Как вычесть корень в программе

Если это реальная проблема, объясните, чем стандартный корень не подходит. Если это учебное задание, думайте сами, иначе вы ничему не научитесь. У нас не принято делать задания за студентов.

15 сен 2016 в 7:46

кстати, есть ещё инстрики. Они как бы не библиотечные функции. Более того, если все правильно сделать, то можно по 4 числа одновременно обрабатывать. Да, современные компиляторы их обычно и используют, когда пишем sqrt() .

15 фев 2017 в 20:26

из-за таких как VladD портится русскоязычное комьюнити, вопрос непростой, человек может понять пытается, что там за функцией написано, а его сразу называют студентом и пафосно *******тся «У нас не принято делать задания для студентов», уже успел разделить людей на «мы (элита русскоязычного комьюнити, которые всегда назовут студентами и отправят читать документацию)» и студентов, которые ищут халявы на стековерфлоу

23 янв 2018 в 18:31

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

Как извлекать кубический корень без калькулятора

Вопрос на самом деле имеет множество решений.

Самый банальный — метод половинного деления.

double l = 0; double r = 1e100; //большое число double m; while (r — l > 1e-8) < //точность m = l + (r — l)/2; if (m*m >n) l = m; else r = m; > //ответ в l

Есть более оригинальные способы, например симуляция вычисления в столбик (вот пример, код приводить не буду )

Способ больше для C, но думаю можно использовать и в Java. Объяснение

float Q_rsqrt( float number ) < long i; float x2, y; const float threehalfs = 1.5F; x2 = number * 0.5F; y = number; i = * ( long * ) i = 0x5f3759df — ( i >> 1 ); y = * ( float * ) y = y * ( threehalfs — ( x2 * y * y ) ); // 1 итерация // y = y * ( threehalfs — ( x2 * y * y ) ); // 2 итерация, можно удалить return 1/y; >

Можно использовать логарифмы

return Math.exp( Math.log(n) / 2);

Можно использовать численные методы, например метод Ньютона

double x = 1; for (;;) < double nx = (x + n / x) / 2; if (abs (x — nx) < 1e-10) break; //точность x = nx; >

Читайте также:
Как установить программу на сайте

Существует и много других способов, всё зависит от конкретных требований.

Источник: ru.stackoverflow.com

Извлечение корня в Excel с помощью формулы и функции

Среди базовых математических вычислений помимо сложения, вычитания, умножения и деления можно выделить возведение в степень и обратное действие – извлечение корня. Давайте посмотрим, каким образом можно выполнить последнее действие в Эксель разными способами.

Содержание скрыть

  • Метод 1: использование функции КОРЕНЬ
  • Метод 2: нахождение корня путем возведения в степень
  • Заключение

Метод 1: использование функции КОРЕНЬ

Множество операций в программе реализуется с помощью специальных функций, и извлечение корня – не исключение. В данном случае нам нужен оператор КОРЕНЬ, формула которого выглядит так:

секретный способ извлечения квадратного корня #SHORTS

=КОРЕНЬ(число)

Для выполнения расчета достаточно написать данную формулу в любой свободной ячейке (или в строке формул, предварительно выбрав нужную ячейку). Слово “число”, соответственно, меняем на числовое значение, корень которого нужно найти.

Формула функции КОРЕНЬ в Эксель

Когда все готово, щелкаем клавишу Enter и получаем требуемый результат.

Результат расчета по функции КОРЕНЬ в Excel

Вместо числа можно, также, указать адрес ячейки, содержащей число.

Формула функции КОРЕНЬ в Excel

Указать координаты ячейки можно как вручную, прописав их с помощью клавиш на клавиатуре, так и просто щелкнув по ней, когда курсор находится в положенном месте в формуле.

Вставка формулы через Мастер функций

Воспользоваться формулой для извлечения корня можно через окно вставки функций. Вот, как это делается:

  1. Выбрав ячейку, в которой мы хотим выполнить расчеты, щелкаем по кнопке “Вставить функцию” (fx).Вставка функции в ячейку таблицы Эксель
  2. В окне мастера функций выбираем категорию “Математические”, отмечаем оператор “КОРЕНЬ” и щелкаем OK.Вставка функции КОРЕНЬ в Эксель
  3. Перед нами появится окно с аргументом функции для заполнения. Как и при ручном написании формулы можно указать конкретное число или ссылку на ячейку, содержащую числовое значение. При этом, координаты можно указать, напечатав их с помощью клавиатуры или просто кликнуть по нужному элементу в самой таблице.Заполнение аргумента функции КОРЕНЬ в Excel
  4. Щелкнув кнопку OK мы получим результат в ячейке с функцией.Результат расчета по функции КОРЕНЬ в Эксель

Вставка функции через вкладку “Формулы

  1. Встаем в ячейку, в которой хотим произвести вычисления. Щелкаем по кнопке “Математические” в разделе инструментов “Библиотека функций”.Раскрытие списка математических функций во вкладке Формулы в Эксель
  2. Пролистав предложенный перечень находим и кликаем по пункту “КОРЕНЬ”.Вставка функции КОРЕНЬ в ячейку таблицы Excel
  3. На экране отобразится уже знакомое окно с аргументом, который нужно заполнить, после чего нажать кнопку OK.Заполнение аргумента функции КОРЕНЬ в Эксель
Читайте также:
Написать программу которая выводит на экран таблицу умножения на k

Метод 2: нахождение корня путем возведения в степень

Описанный выше метод позволяет с легкостью извлекать квадратный корень из числа, однако, для кубического уже не подходит. Но и эта задача в Excel реализуема. Для этого числовое значение нужно возвести в дробную степень, где в числителе будет стоять “1”, а в знаменателе – цифра, означающая степень корня (n).

В общем виде, формула выглядит так:

=(Число)^(1/n)

Безусловным преимуществом такого способа является то, что мы можем извлечь корень любой степени, заменив букву “n” в знаменателе дроби на требуемую цифру.

Для начала давайте рассмотрим формулу для извлечения квадратного корня. Она выглядит следующим образом: =(Число)^(1/2).

Соответственно, для расчета кубического корня будет использоваться выражение ниже:

=(Число)^(1/3)

Допустим, нам нужно извлечь кубический корень из числа 27. В этом случае нужно записать в ячейке такую формулу: =27^(1/3).

Формула извлечения кубического корня в ячейке таблицы Excel

Нажав Enter, получаем результат вычислений.

Извлечение кубического корня в Excel

Аналогично работе с функцией КОРЕНЬ, вместо конкретного числа можно указать ссылку на ячейку.

Извлечение кубического корня в Эксель

Заключение

Таким образом, в Excel можно без особых усилий извлечь корень из любого числа, и сделать это можно разными способами. К тому же, возможности программы позволяют выполнять расчеты для извлечения не только квадратного, но и кубического корня. В редких случаях требуется найти корень n-степени, но и эта задача достаточно просто выполняется в программе.

Источник: microexcel.ru

Как написать собственную функцию извлечения кв. корня из целого числа?

Попробовал написать аналог функции sqrt(), но для целых чисел. Что можно сделать лучше, быстрее? Я просто начинающий, не хотелось бы «говнокодить» с самого начала изучения языка. Знаю, что register средой visual c++ не воспринимается, но судя по литературе, в других компайлерах скорость работы ускорить должно. Заранее спасибо за ответы.

int my_sqr(int number) < register unsigned int temp = 0, x = 1; if (number < 0) number = -number; while (temp != x)< temp = number / x; if (temp == x) return x; x++; >>;

  • Вопрос задан более трёх лет назад
  • 10927 просмотров

Комментировать
Решения вопроса 1

Что можно сделать лучше, быстрее?

Поменять алгоритм на метод деления пополам или побитовый поиск, с уменьшением сложности по количеству бит в int с экспоненциальной до линейной.

Читайте также:
Программа дисциплины исследовательская деятельность

int my_sqr(int number)< register unsigned int temp, x; if (number < 0) number = -number; for (temp = 0, x = 1u >= 1) < if ((temp | x) * (temp | x) return temp; >

Не проверять на равенство if (temp == x), потому что равенства может не быть, например для number = 6.
Убедиться, что функция всегда что-то возвращает. Так, например, при number = 6 ваша функция зацикливается или падает с делением на 0, а при number = 0 завершается с неопределённым значением.

Ответ написан более трёх лет назад
Такой вариант будет намного быстрее в случае с большими числами?
Такой вариант гарантированно находит корень за 16 итераций для любого 32-битного инта.
Не могли бы вы немного разжевать вашу функцию? Никак не могу вникнуть в происходящее.

Ответы на вопрос 3

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

a^b=c b=ln(c)/ln(a) a=exp(b * ln(c)) для квадратного корня b = 1/2
Ответ написан более трёх лет назад

просто подставляем в формулу значения:

нда. Этот момент я точно не понял.

А использовать более оптимальные алгоритмы? Для целого числа очень подойдет разложение в ряд.
1 = 1^2
1 + 3 = 2^2
1 + 3 + 5 = 3^2
1 + 3 + 5 + 7 = 4^2
Замечаете?

Просто вычитаете все нечетные числа начиная с 1. Если остаток меньше следующего нечетного числа, то берете порядковый номер предыдущего нечетного числа. Но это подойдет, если числа не очень большие, хотя ваш алгоритм не лучше в этом отношении.

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

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Существует такой алгоритм как бинпоиск

int sqrt (int v) < int L = 0, R = v; int M = (L + R) /2; while(R — L >1) < if(M * M else < R = M; >M = (L + R)/2; > >
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

cpp

  • C++

Что можно убрать чтобы оптимизировать затраты памяти?

  • 1 подписчик
  • вчера
  • 107 просмотров

Источник: qna.habr.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru