![]() |
![]() |
![]() |
|
Возведение в степень или "ряд Маклорена" | ☑ | ||
---|---|---|---|---|
0
Mondeo
04.07.05
✎
10:45
|
Понадобилось мне ту давеча возвести в степень. Полез на синор за аналогичной функцией. И что я там нахожу? Произведение высшей математики. Одна фраза -
"Функция ПpeднaЗначeнa для иcчиcлeния cтeпeннoй функции c пpимeнeниeм pядa Maклopeнa (чacтный cлучaй pядa Tэйлopa)". Если кто то сейчас скажет - "а ты что! не знаешь что такое ряд Маклорена?", я гордо подниму голову и скажу - да, я не знаю! Вот мой алгоритм возведения в степень: //Знач1 = Возводимое //Знач2 = Степень Функция Степень(Знач1, Знач2) Экспорт ВозЗнач = Знач1; Для х = 1 По Знач2 - 1 Цикл ВозЗнач = ВозЗнач * Знач1; КонецЦикла; Возврат ВозЗнач; КонецФункции |
|||
1
Груздь
04.07.05
✎
10:46
|
А в дробную степень как возвести используя твой шедевр?
|
|||
2
Mondeo
04.07.05
✎
10:54
|
Да с дробной проблемы будут :) Но и с "частным случаем Тейлора" (гыгыгы. Прошу прощения у высших математиков) в дробную степень не возведешь.
|
|||
3
NS
04.07.05
✎
10:55
|
Возведение в степень нужно делать через Экспоненту.
Логарифм в 1С уже есть. Написать пример? |
|||
4
Irbis
04.07.05
✎
10:59
|
Функция Exp(x)
Если x<0 Тогда dExp=(-1)*x;Mx=(-1)*x; Иначе dExp=1*x;Mx=1*x; КонецЕсли; Exp=1;N=1; Пока dExp>0.0000000000000000001 Цикл Exp=Exp+dExp; dExp=dExp*Mx/(N+1); N=N+1; КонецЦикла; Если x<0 Тогда Возврат 1/Exp; Иначе Возврат Exp; КонецЕсли; КонецФункции //Exp(x) Кто хочет может перенести точность в параметры процедуры. Используя натуральный логарифм и данную функцию можно возводить числа в любую положительную степень. |
|||
5
NS
04.07.05
✎
11:02
|
(4) Конечно прикольно...
Но что мешает возводить в отрицательную??? Формула: а^в=Экспонента(Лог(а)*в); |
|||
6
Asmody
04.07.05
✎
11:01
|
тэкс-тэкс-тэкс...
может еще библиотеку для работы с комплексными числами или длинную арифметику на 1С напишете? |
|||
7
Irbis
04.07.05
✎
11:06
|
(5)Логарифм батенька с отрицательными числами плоховато работает, но ежели в комплексной плоскости надо, то нет проблем.
|
|||
8
NS
04.07.05
✎
11:08
|
Функция Экспонента(Х)
Р=1; Дельта=1; К=1; Пока ?(Дельта>0,Дельта,-Дельта)>0.000001 Цикл Дельта=Дельта*Х/К; К=К+1; Р=Р+Дельта; КонецЦикла; Возврат окр(Р,5); КонецФункции Функция степень(а,в) возврат Экспонента(Лог(а)*в); КонецФункции //******************************************* Процедура Сформировать() сообщить("3^3="+Степень(3,3)); сообщить("4^0.5="+Степень(4,0.5)); сообщить("2^(-1)="+Степень(2,-1)); КонецПроцедуры |
|||
9
ANS
04.07.05
✎
11:20
|
(8) //
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |