2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Как засечь время выполнения программы?В MAPLE?
Сообщение10.10.2008, 10:43 
Как засечь время выполнения программы?В MAPLE?

 
 
 
 
Сообщение10.10.2008, 11:13 
Аватара пользователя
см. showtime

Неужели так тяжело заглянуть в справку?

 
 
 
 Проблемма с maple
Сообщение11.02.2009, 23:57 
Здраствуйте.У меня есть парочка вопросов.
Сначало показую код:
Код:
> t1:=time(); n:=5; q:=2; f:=Randpoly(n,x)mod q; f1:=diff(f,x) mod q; d:=Gcd(f,f1) mod q ; t2:=time(); print(t2 - t1);[/math]
                          t1 := 0.030
                             n := 5
                             q := 2
                              5       
                        f := x  + x + 1
                                 4   
                          f1 := x  + 1
                             d := 1
                          t2 := 0.030
                               0.

> if d<>1 then ***** else roll:= rand(1..n-1) : m:=roll(): g:=Randpoly(m,x)mod q : d1:=Gcd(f,g)mod q: fi;
> stepen:=0;
                          stepen := 0
> need_stepen:=2^n;
                       need_stepen := 32
> if d1<>1 then ***** else *** fi;
> //while stepen<need_stepen do need_g:=expand(g*g) mod 2 : g:=rem(need_g,f,x) mod q : stepen:=stepen+1 :od;
вопрос 1
Я уже спрашивал на счет того как можно засечь всемя вполнения, мне сказали что надо пользоваться функцией showtime(), но сказать по правде ничего у меня не получилось.
Если можна покажите на этом примере как это сделать.Вот мне надо это сделать вместо пяти звездочек.
вопрос 2
как мне вместо трех звездочек вставить цикл while который находится в следующей строке.Или так нельзя делать.
вопрос 3
почему после выполнения первой строчки вывод времени с помошью функции time() показывает одинаковое время как для t так и для t1.
P.S.Прошу простить меня за столь глупые вопросы, но что то трудно мне дается все это дело а оно очень надо.Зарание спасибо.

 
 
 
 
Сообщение12.02.2009, 00:16 
Аватара пользователя
Во-первых, не дублируйте темы (это от лица модератора).

Во-вторых, в программе нужно использовать time(), а не showtime(), которая предназначена для интерактивного замера времени.

В-третьих, если time() показывает то же время - это значит, что команда выполнилась настолько быстро, что используемой маплом точности измерения времени недостаточно для того, чтобы отличить ее от нуля.

В-четвертых, а в чем собственно проблема с вставкой цикла вместо звездочем?

 
 
 
 
Сообщение12.02.2009, 12:21 
С пунктами 1-3 согласен, но на счет вставки цикла не могу всетаки понять.
Если я просто подставляю его вместо звездочек то он не работает.И я не совсем понимаю почему???

 
 
 
 
Сообщение12.02.2009, 16:55 
Аватара пользователя
Так может быть у вас условие if не выполняется. Вставьте рядом еще всякие print("checkpoint 1"); чтобы было понятно куда выполнение попадает, а куда нет.

 
 
 
 
Сообщение15.02.2009, 16:59 
Спасибо за предвидущие ответы!
У меня есть еще один вопросик:
Код:
> t1:=time(); n:=11; q:=2; f:=Randpoly(n,x)mod q; f1:=diff(f,x) mod q; d:=Gcd(f,f1) mod q ; t2:=time(); print(t2 - t1);
> if d<>1 then print("privodim") else t3:=time() : roll:= rand(1..n-1) : m:=roll():!!!!!!!g:=x+1!!!!!!!: d1:=Gcd(f,g)mod q: t4:=time(): print("time is - ",t4-t3) fi;

t3 := 535.777
m := 7
g := 1 + x
d1 := 1
t4 := 535.777
"time is - ", 0.
>
Код:
if d1<>1 then print("privodim") else t5:=time() : stepen:=0 : need_stepen:=2^n : !!!!!!![print("g=",g)!!!!!!!: while stepen<need_stepen do need_g:=expand(g*g) mod q : g:=rem(need_g,f,x) mod q : stepen:=stepen+1 : od : t6:=time() :print("g=",g): print("time is - ",t6-t5) : fi;

t5 := 536.606
stepen := 0
need_stepen := 2048
"g=", x^8 + x^2 + x^7 + x + 1 + x ^9
t6 := 537.028
"g=", x^10 + x^4 + x^2 + x^3 + x ^7
"time is - ", 0.422
Места касающиеся вопроса выделены знаками восклицания.
Почему я задаю полином "g" как "х+1" но когда выполняется функция print() то выводится совершенно другой полином.Когда он успевает изменится?И при обновлении последней строки кода он постоянно изменяется?Как это возможно?

 
 
 
 
Сообщение15.02.2009, 18:27 
Аватара пользователя
Я погонял ваши 3 строчки - все OK.
Может, вы перезапускаете третью без первых двух - в этом случае появление других g вполне объяснимо - в виду наличия приравнивания "g:=rem(need_g,f,x) mod q", которое перетирает значене x+1.

 
 
 
 
Сообщение15.02.2009, 20:24 
Совершенно верно я так и делал: перезапускал только последнюю строчку :oops:
Наконец то я понял как оно все работает. Еще раз спасибо.
У меня только 1 вопрос остался на засыпку - есть ли функция которая подносит полином по модулю в нужную степень, а то у меня это реализовано циклом, а хотелось бы сразу.

 
 
 
 
Сообщение15.02.2009, 20:42 
Аватара пользователя
jianiajizak в сообщении #186577 писал(а):
есть ли функция которая подносит полином по модулю в нужную степень, а то у меня это реализовано циклом, а хотелось бы сразу.

Power(f,n) mod q

 
 
 [ Сообщений: 10 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group