|
Основной форум Сюда все проблемы связанные с программированием. |
21.03.2010, 21:11
|
#1
|
Разработчик
Регистрация: 16.08.2008
Адрес: Нижегородская провинция
Сообщений: 389
Написано 48 полезных сообщений (для 93 пользователей)
|
Математика в МР.
В справке не нашел, как извлечь из числа корень "n"- ой степени. Это возможно?
__________________
- Это мы накодили WINDOWS,
- Это мы надкусили APPLE,
- Нам играют живые The Beatles
- И нестареющий Вова Высоцкий...
Последний раз редактировалось GRAY_WOLF, 21.03.2010 в 22:12.
|
(Offline)
|
|
21.03.2010, 22:41
|
#2
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Математика в МР.
Корень n степени из числа k есть число k в степени 1/n.
Если нет никаких глюков, должна сработать функция Pow, т.е. x:=pow(k,1/n).
|
(Offline)
|
|
21.03.2010, 23:36
|
#3
|
Разработчик
Регистрация: 16.08.2008
Адрес: Нижегородская провинция
Сообщений: 389
Написано 48 полезных сообщений (для 93 пользователей)
|
Ответ: Математика в МР.
Сообщение от ViNT
Корень n степени из числа k есть число k в степени 1/n.
Если нет никаких глюков, должна сработать функция Pow, т.е. x:=pow(k,1/n).
|
По идее x:=pow(3125,1/5); должно быть 5 , т.к. 5 ^ 5 = 3125, а в ответе 1 при любых значениях.
var x: real; Begin x:=pow(3125,1/5); DrawText(''+x, 0, 0); Repaint; Delay(5000); End.
__________________
- Это мы накодили WINDOWS,
- Это мы надкусили APPLE,
- Нам играют живые The Beatles
- И нестареющий Вова Высоцкий...
|
(Offline)
|
|
21.03.2010, 23:40
|
#4
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Математика в МР.
Видимо, функция pow криво реализована.
Тогда нужно использовать такую формулу, с ней должно сработать: X^Y = exp(ln(X) * Y)
|
(Offline)
|
|
22.03.2010, 00:00
|
#5
|
Разработчик
Регистрация: 16.08.2008
Адрес: Нижегородская провинция
Сообщений: 389
Написано 48 полезных сообщений (для 93 пользователей)
|
Ответ: Математика в МР.
Сообщение от ViNT
Видимо, функция pow криво реализована.
Тогда нужно использовать такую формулу, с ней должно сработать: X^Y = exp(ln(X) * Y)
|
Так с возведением целых чисел проблем нет.
Есть хороший материал по этой теме пожалуйста сделай библиотеку математических функций. А то в Lib_dbl нет таких функций, на форуме она старая.
__________________
- Это мы накодили WINDOWS,
- Это мы надкусили APPLE,
- Нам играют живые The Beatles
- И нестареющий Вова Высоцкий...
|
(Offline)
|
|
22.03.2010, 00:40
|
#6
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Математика в МР.
Библиотеку пока написать не могу, времени нет совсем.
Могу предложить такую функцию (для целых чисел):
function root(a:integer;n:Integer):real; var r: real; begin r:=exp(log(abs(a))/n); if a<0 then root:=-r else root:=r end;
Переписал для вещественных:
function root(a:real;n:real):real; var r: real; begin if a<0 then a:=-a; r:=exp(log(a)/n); if a<0 then root:=-r else root:=r end;
Последний раз редактировалось ViNT, 22.03.2010 в 11:06.
|
(Offline)
|
|
22.03.2010, 11:59
|
#7
|
ПроЭктировщик
Регистрация: 31.01.2007
Сообщений: 128
Написано 20 полезных сообщений (для 43 пользователей)
|
Ответ: Математика в МР.
Сообщение от GRAY_WOLF
По идее x:=pow(3125,1/5); должно быть 5 , т.к. 5 ^ 5 = 3125, а в ответе 1 при любых значениях.
|
Возможно, дело в использовании режима Floating point, который не на всех телефонах даёт правильные результаты при расчётах.
|
(Offline)
|
|
22.03.2010, 12:02
|
#8
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Математика в МР.
1/5=0
1/5.0 не?
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
|
|
22.03.2010, 12:39
|
#9
|
Разработчик
Регистрация: 16.08.2008
Адрес: Нижегородская провинция
Сообщений: 389
Написано 48 полезных сообщений (для 93 пользователей)
|
Ответ: Математика в МР.
Сообщение от Bruteo
Возможно, дело в использовании режима Floating point, который не на всех телефонах даёт правильные результаты при расчётах.
|
Проверял только на эмуляторе КЕ.
__________________
- Это мы накодили WINDOWS,
- Это мы надкусили APPLE,
- Нам играют живые The Beatles
- И нестареющий Вова Высоцкий...
|
(Offline)
|
|
22.03.2010, 19:57
|
#10
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Математика в МР.
Сообщение от impersonalis
1/5=0
1/5.0 не?
|
Да, как ни странно, в MP все не как в паскале, и там действительно 1/5=0.
И нафига это сделано, там и так есть div для целочисленого деления.
|
(Offline)
|
|
25.12.2010, 01:11
|
#11
|
Разработчик
Регистрация: 16.08.2008
Адрес: Нижегородская провинция
Сообщений: 389
Написано 48 полезных сообщений (для 93 пользователей)
|
Ответ: Математика в МР.
помогите разобраться с http://forum.boolean.name/showthread.php?t=12895
если вводишь число с запятой, то получается результат "0"...
__________________
- Это мы накодили WINDOWS,
- Это мы надкусили APPLE,
- Нам играют живые The Beatles
- И нестареющий Вова Высоцкий...
|
(Offline)
|
|
25.12.2010, 10:58
|
#12
|
Нуждающийся
Регистрация: 03.10.2008
Сообщений: 61
Написано 13 полезных сообщений (для 44 пользователей)
|
Ответ: Математика в МР.
если вводишь число с запятой, то получается результат "0"...
|
ну правильно, я делал только под целые числа. Но есть исходник, можно легко доработать и под дробные
|
(Offline)
|
|
25.12.2010, 14:47
|
#13
|
Разработчик
Регистрация: 16.08.2008
Адрес: Нижегородская провинция
Сообщений: 389
Написано 48 полезных сообщений (для 93 пользователей)
|
Ответ: Математика в МР.
Вот если б я знал как это сделать, то и не задавал такой вопрос. На примере можно пояснить?
__________________
- Это мы накодили WINDOWS,
- Это мы надкусили APPLE,
- Нам играют живые The Beatles
- И нестареющий Вова Высоцкий...
|
(Offline)
|
|
25.12.2010, 23:40
|
#14
|
Мастер
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений (для 790 пользователей)
|
Ответ: Математика в МР.
var a:real;
...a:=1;
a:=a/5; вроде должно работать.
И ещё косяк - если создать, например, константу pi=3.1415 то в результате pi может оказаться другим, потому мне приходилось создавать переменную pi, а потом присваивать это значение.
__________________
О¯О ¡¡¡ʁɔvʎнdǝʚǝdǝu dиW
|
(Offline)
|
|
26.12.2010, 15:45
|
#15
|
Бывалый
Регистрация: 18.08.2009
Сообщений: 745
Написано 146 полезных сообщений (для 215 пользователей)
|
Ответ: Математика в МР.
У меня с математикой тоже забавный глюк есть и хз как его обойти.
for i:=1 to 10 do if textwidth(names[i])>long then long:=textwidth(names[i]);
Есть массив имён (10 штук). Надо в переменную long забить самую большую длину имени в пикселях.
Прикол в том, что textwidth(names[i])>long ВСЕГДА ВЕРНО!
Вывожу значения прямо перед проверкой, вижу:
textwidth = 8, long = 15.
Но результат сравнения прежний: (textwidth>long).
Какие есть идеи обхода этой засады?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:13.
|