![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
ivanABIch |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 23.10.2003 Репутация: нет Всего: нет |
Здраствуйте
у меня есть простое арифмерическое выражение
проблема заключаеся в том что последнее выражение не работает, причина - ((sngPn / sngB) ^ 0.25) возведение в степень так не возможно сделать, почему не могу знать, хотя если я напишу просто 3.35^0.25, то всё заработает подскажите в чём моя ошибка. Заранее спасибо. |
|||
|
||||
Crot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 31.1.2004 Репутация: 1 Всего: 3 |
Не знаю, что у тебя за Ява.
У меня операция "^" означает поразрядный XOR. Если хочешь возводить в степень, то почему бы тебе не создать такую функцию:
Твоё выражение преобразуется в такой вид: stepen (14 * stepen (sngPn / sngB , 0.25) * stepen (3000 / sngn , 0.35) * (40 / (sngTemperatur - 20)) , 0.12); Это сообщение отредактировал(а) Crot - 13.2.2004, 13:12 |
|||
|
||||
ivanABIch |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 23.10.2003 Репутация: нет Всего: нет |
Спасибо Crot, это то что мене было нужно, я просто програмирую в Паскале, и думал что возведениев степень подобно.
|
|||
|
||||
[xoodo] |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 424 Регистрация: 9.3.2003 Репутация: нет Всего: 4 |
Зачем городить огород? Логарифмы всякие... Может, я чего не понимаю, и у меня Ява не такая (третий день ее учу), но
Math.pow(var_osnovanije, var_stepen); работает изумительно. |
|||
|
||||
Crot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 31.1.2004 Репутация: 1 Всего: 3 |
гы
![]() не знал |
|||
|
||||
Unregistered |
|
|||
Unregistered |
А можно узнать, зачем на яве писать вычислительные программы? Чтобы работало медленнее?
|
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Ну мало ли чего вдруг потребовалось - может график какой начертить в аплете или ее чего. Понятно, что сложные вычислительные задачи на JAVA лечше не делать - дороговато ![]() Очень будем рады, если Вам станете нашим постоянным посетителем. |
|||
|
||||
Guest |
|
||||||
Unregistered |
Просто прикидываю, сколько будет исполняться pow на java. 1000 тактов? Вообще, я бы посоветовал избегать вызов pow для вычисления степеней фиксированной степени. Например, для x^0.25 можно ипользовать sqrt(sqrt(x)), для других степеней использовать, например, метод Ньютона-Рафсона... Будет всегда быстрее, иногда значительно. Но это так, если нужна скорость... |
||||||
|
|||||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Вообщем-то разумно - бездумное использование JAVA не очень хорошо. В таких случаях если без JAVA никак надо посмотреть в сторону JNI и лепить такие процедурки на С/С++. |
|||
|
||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 4 Всего: 317 |
По моему в Java все тригонометрические функции нативные с полной поддержкой со-процессора. Работает все быстро. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Класс, так оно и есть - надо было просто глянуть в исходники ![]() А я что-то никогда не обращал внимания. Здорово, Sardar |
|||
|
||||
[xoodo] |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 424 Регистрация: 9.3.2003 Репутация: нет Всего: 4 |
Хмм... Запутали 8) sqr()/sqrt() все-таки быстрее pow(), или как? Намного?
Как раз похожая задачка, график в апплете. Степени фиксированные. Например, x^3 логичнее считать как pow(x, 3) или sqr(x)*x? |
|||
|
||||
DarkDS |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: 11 Всего: 16 |
x^3 через корень не посчитать ![]() То что было приведено в качестве примера (х^0.25 есть корень 4 степени из х, который можно высчитать как корень из корня) просто исключение, которое хорошо работает только на данном примере. То же самое что х^2 и x^3 быстрее вычислять как х*х и х*х*х а не через pow. Но когда степень может варьироватся в разных пределах, то лудше использовать как раз фун-ии степени. Это сообщение отредактировал(а) DarkDS - 19.2.2004, 13:40 |
|||
|
||||
AntonSaburov |
|
||||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Только что сделал тестик - возводил в степень 0.5 через sqrt, pow и вариант от Crot аж 10 млн. раз. Взял нечто среднее. Результаты само собой относительные, но где-то вот такие: sqrt - 170 миллисекунд pow - 11500 миллисекунд Crot - 5200 миллисекунд Код теста вот:
|
||||
|
|||||
[xoodo] |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 424 Регистрация: 9.3.2003 Репутация: нет Всего: 4 |
Согласен. Я наивно полагаю, что sqr() -- квдрат, sqrt() -- квадратный корень. Как в Паскале. Видимо, неправ. AntonSaburov, все наглядно и понятно. Спасибо МНЕ за самый долгий из предложенных вариантов -- pow() ![]() Это сообщение отредактировал(а) [xoodo] - 19.2.2004, 21:16 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |