PDA

Просмотр полной версии : Нахождение экспоненты акшон скриптом


Countach
11.12.2001, 21:20
Всем кому интересно как в калькуляторе запрограмирована экспонента e^x даю свой вариант :)

// exponent implementation 1.0 beta
// VARIABLES
// app=approximation
// coef=coeffecient
// num=numerator
// den=denominator
// x=power of exponent
// sum=sum of the parts
// res=result of num/den
x = text1;
appx = text2;
sum = 1+x;
for (coef=2; coef<appx; coef++) {
for (i=1; i<coef; i++) {
x = x*x;
}
num = x;
temp_coef = coef;
den = temp_coef;
for (i=1; i<coef; i++) {
temp_coef--;
den = den*temp_coef;
}
res = num/den;
sum = sum+res;
}
text3 = sum;

;)

[subway]design
11.12.2001, 22:28
ты крут!
мне понравилось.

Countach
12.12.2001, 00:04
2[subway]design
пасибки ;)

Вот рабочая вещь
http://www.til-design.f2s.com/temp/exponent.swf

Vaicartana
12.12.2001, 07:54
что то я торможу. А чем обычный ехр не нравится?

Big_J_
12.12.2001, 11:55
:D Ты бы Countach еще Дональда Кнут взял да его алгоритмы во флеше риализовал ты реально абъесни людям зачем писать:


// exponent implementation 1.0 beta
// VARIABLES
// app=approximation
// coef=coeffecient
// num=numerator
// den=denominator
// x=power of exponent
// sum=sum of the parts
// res=result of num/den
x = text1;
appx = text2;
sum = 1+x;
for (coef=2; coef<appx; coef++) {
for (i=1; i<coef; i++) {
x = x*x;
}
num = x;
temp_coef = coef;
den = temp_coef;
for (i=1; i<coef; i++) {
temp_coef--;
den = den*temp_coef;
}
res = num/den;
sum = sum+res;
}
text3 = sum;


Если во Флеше эта хрень одной строкой реализуется ???


X = Math.E//Передает значение 2.71828 переменной X


А если в степень експоненту поставить надобно то тогда так:


X = Math.pow(Math.E , Y);//Передает переменной X значение 2.71828 возведенную в степень Y.

И все. Ни читабельность ни страдает не функцыональность :)

[subway]design
12.12.2001, 13:41
я думаю, что прикола ради...
ксати, у тебя кривое округление:
2.70333

Countach
12.12.2001, 14:50
Ну вот, ничего вы не понимаете :( этож просто прикол, ну просто хотелось самому попробовать, и ж написал если кому интересно знать как в калькуляторе это запрограмировано ;)

Сразу наезд, злые вы какие-то

Countach
12.12.2001, 14:55
ЗЫ почему криво :(
вот мое вычисление при Х=1, appx=18
2.71828182845905

А вот windows calculator
2.71828182845904523536028747135266

Всё нормально, просто при малых appx неточно получается
задавай 18 и всё ок

[subway]design
12.12.2001, 15:02
Слушай, а ты можешь написать ф-цию для получения корня дробной степени (степенная функция)?
С удовольствием буду пользоваться :)

[subway]design
12.12.2001, 15:07
когда один раз вычислил, второй раз не работет. Приходится релоад жать.
PS: меня прикололо то, что ты просто обвешал переделанный мной исходник текстом и все! Даже кнопка моя осталась...
:D

Countach
12.12.2001, 15:16
1. :D зы кнопка мне не нравится переделаю, надо красива сделать :), насчет повторного вычисления сегодня поправлю :)

2. что там тебе запрограмировать, надо то?? а то блин мозгам хоца нагрузки дать, но завтра :)
А то сейчас PC Piano в ассемблее програмлю, красный от синего не отличу :p

Countach
12.12.2001, 15:18
Зы я по русски то их не знаю :)

sqrt((var)^(x/y)) ????
такое типа

Неее явно не это
блин в дет сад не отправляйте, и не ругайтесь, а лучше объясните, пока у меня MOV AX,BX ;)

[subway]design
12.12.2001, 15:28
неет, у тебя sqrt() - это ж квадратный корень, а надо x в степени 3/4, вот... Я сам пробовал, но дальше, чем на целый показатель степени не сдвинулся...

Countach
12.12.2001, 16:20
Чё просто X^(y/z) ????
Я на выходных зашарашу, зы надеюсь ;)

[subway]design
12.12.2001, 16:25
да, самое оно, жаль во Флеше нет оператора ^
Вот в КуБайсике - был!

Countach
12.12.2001, 17:47
Все гениально просто...(С) [subway]design 2001 ;) ты ж сам знаешь. Сделаю на днях, ну по крайней мере попробую :p

Vaicartana
12.12.2001, 20:32
[subway]design Блин, этж совсем просто. exp(b*ln(a))=a^b

Ну если вы опять все через одно место тыды ой.

Countach
13.12.2001, 01:26
Неееееееее там через Series expansion надо делать. Ждите проги ;)

TLamer
13.12.2001, 03:46
да самое интересное что во флеше есть оператор ^

вот так - то ))

Countach
13.12.2001, 17:24
2Vaicartana
каюсь, сори будет работать и так. Просто я через Ж. хотел сделать, но мне даже учитель посоветовал забыть про мои планы, если я не хочу мозги в трубочку завернуть :D

Barmaglot
13.12.2001, 17:52
И все бы хорошо, да только правильно возводит только в первую степень. :D

Countach
13.12.2001, 18:09
Блин внатуре неправильно :( :confused:

Мужики во флеше что нет встроенной math.ln(x) функции???
тока какое-то Г. типа
Math.LOG10E
Math.LOG2E
или как сказать что база будет Е (2.71) тут Math.log ( number )


Или как высчитать ln(x) умея считать экспоненту. У них вроде обратная зависимость
e^ln(x)=x
итд

блин не бросайте же плизз

Barmaglot
13.12.2001, 18:22
Math.log(x); //- натуратильный логарифм х;

Правда у меня во флэшэ он почемуто обозван - Журнал :D

Countach
13.12.2001, 18:39
каааааааак???? log its log, but ln is natural logarithm :(
Ну да ладно попробуем


А вот вроде нашел проблему в проге
теперь инфинити не выдает, но вот при Х=2 appx=18
результат такой 6.52444467698817e+50
это как понимать???

как сделать нормальный результат????

Countach
13.12.2001, 18:44
УРА
все баги исправлены!!! Выпущена версия 2.0 гамма :D
приносим многочисленным пользователям нашей программы свои извинения за баги :D счас через 10 мин вывешу

KEEP CHECKING :p

[subway]design
13.12.2001, 18:46
Нафига изобретать велосипед, если умные люди уже постарались, а потом этот велосипед до ума доводить?

мозги в трубочку...

Barmaglot
13.12.2001, 18:49
Это просту у нас и на западе у математиков написания этих функций различаются.

Вот еще примеры:
У нас У них
ln log
lg log10
tg tan
arctg atan
и т.д.

Countach
13.12.2001, 18:52
Блин!!! :mad: ну что за Г. уже при Х=10 видны небольшие отклонения от показаний Виндоус калькулятор, а при 100 там ВАЩЕ фигня получается :(

Люди будте снисходительны, не вводите значения Х больше 10 ;)

Countach
13.12.2001, 18:56
Пасибы мужики
Вот еще квесчон :) можно ли ln(x) высчитать с помощью e^x они ж обратные функции. Ну как же

2сабвэй
да запрограмлю сэдня завтра, не боись, может без супер наворотов. Мне не что-то для понта, просто интересно самому такое сделать

[subway]design
13.12.2001, 18:59
:D

Countach
13.12.2001, 19:06
:D Ага, счас на социологию пилить, как муд%;" сидеть буду, как озверею нафик, как запрограмлю :)

Barmaglot
13.12.2001, 19:11
function e(a) {
n = 1 << a;
s=1/n;
s++;
for (i=1; i<=a; i++) s=s*s;
return s;
};

function exp(x,a) {
res = e(a);
e2 = res;
for (i=1; i<x; i++) res *= e2;
if (x<0) res = 1/res;
return res;
};

Задавать значения "а" больше 30 не стоит
из-за ошибок округления
Конечно возведение в степень можно
оптимизировать, но лень. ;)

Вот результат вычисления exp(50)
5.18470359486491e+21 //Мой - exp(50,30);
5.1847055285871e+21 //Флэша - Math.exp(50);

Barmaglot
13.12.2001, 19:12
Вот немного ошибся в функции exp:
for (i=1; i<Math.abs(x); i++) res *= e2;

Countach
14.12.2001, 00:10
Вот это типа степенная функция??? Навалял на быструю руку, без наворотов, что-то там жестоко выходит :(
Ну вообщем чекните плиз
http://www.til-design.f2s.com/temp/power_function.swf
:)

Vaicartana
14.12.2001, 04:56
-10^1=NaN, да?

Нафига там function exponent (), если она не используется нигде?

[subway]design
14.12.2001, 08:27
кул!

Countach
14.12.2001, 10:45
Blin mugiki da ne sudite tak strogo :) eto ge DEMO VERSION :D
ps dlja X dejstvitel'no nel'zja zadavat' poka otricatel'nie znachenija. This feature is comming in my full version :) so far it is being disabled by the owners, because of copywrite reasons :D VO navorotil :)

PS I am sorry about ENG, but i have no RUS on this particular PC :(

2. Function exponent WILL be used in future, it is just there so far, I know it is not needed :)

[subway]design
14.12.2001, 17:00
No problem, Countach! No problem!