![]() |
![]() |
![]() |
|
кубический корень | ☑ | ||
---|---|---|---|---|
0
alex7six
31.07.08
✎
11:11
|
Есть ли такая функция или что-то подобное в 8ке?
|
|||
1
delavar
31.07.08
✎
11:13
|
Pow (Pow)
Синтаксис: Pow(<Основание>, <Показатель>) Параметры: <Основание> (обязательный) Тип: Число. Основание операции возведения в степень. <Показатель> (обязательный) Тип: Число. Показатель степени. |
|||
2
Helna
31.07.08
✎
11:13
|
Может Pow(<Основание>, <Показатель>) А в качестве показателя 1/3 задать...
|
|||
3
gr13
31.07.08
✎
11:13
|
Кубический корень. Для извлечения кубического корня из положительного действительного числа существуют алгоритмы, аналогичные алгоритмам извлечения квадратного корня. Например, чтобы найти кубический корень из числа n, сначала мы аппроксимируем корень некоторым числом r1. Затем строим более точное приближение r2 = (1/3)(2r1 + n/r12), которое в свою очередь уступает место еще более точному приближению r3 = (1/3)(2r2 + n/r22) и т.д. Процедура построения все более точных приближений корня может продолжаться сколь угодно долго.
Рассмотрим, например, вычисление кубического корня из числа, заключенного между 1 и 1000, скажем, числа 200. Так как 53 = 125 и 63 = 216, мы заключаем, что 6 – ближайшее к кубическому корню из 200 целое число. Следовательно, выбираем r1 = 6 и последовательно вычисляем r2 = 5,9, r3 = 5,85, r4 = 5,8480. В каждом приближении, начиная с третьего, разрешается удерживать число знаков, которое на единицу меньше удвоенного числа знаков в предыдущем приближении. Если же число, из которого требуется извлечь кубический корень, не заключено между 1 и 1000, то предварительно его необходимо разделить (или умножить) на некоторую, скажем, k-ю, степень числа 1000 и тем самым привести в нужный интервал чисел. Кубический корень из вновь полученного числа лежит в интервале от 1 до 10. После того, как он будет вычислен, его необходимо умножить (или разделить) на 10k, чтобы получить кубический корень из исходного числа. Второй, более сложный, алгоритм нахождения кубического корня из положительного действительного числа основан на использовании алгебраического тождества (a + b)3 = a3 + (3a2 + 3ab + b2)b. В настоящее время алгоритмы извлечения кубических корней, равно как и корней более высоких степеней, в средней школе не изучают, так как их легче находить с помощью логарифмов или алгебраическими методами. |
|||
4
gr13
31.07.08
✎
11:16
|
Кубический корень
Иногда в программе нужно вычислить кубический корень. Раньше для этой цели я пользовался парой функций логарифм-экспонента, а потом (13.05.2004) решил сделать отдельную функцию и назвал её cbrt. В результате получилась функция, которая немного быстрей и немного точней, чем exp ( log ( x ) / 3 ). static double _cbrt ( double x ) { double s = 1.; while ( x < 1. ) { x *= 8.; s *= 0.5; } while ( x > 8. ) { x *= 0.125; s *= 2.; } double r = 1.5; for ( int i = 6; --i >= 0; ) { r -= 1./3. * ( r - x / ( r * r ) ); } return r * s; } double cbrt ( double x ) { if ( x > 0 ) return _cbrt ( x ); else if ( x < 0 ) return-_cbrt (-x ); else return 0.; } Вначале аргумент приводится к диапазону [1,8], затем вычисляется корень методом Ньютона. Исходники находятся в файле mathem.cpp. http://prografix.narod.ru/rus_cbrt.html яндекс найдется все) |
|||
5
alex7six
31.07.08
✎
12:55
|
спасибо всем
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |