2014 dxdy logo

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

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




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


10/10/08
7
Как засечь время выполнения программы?В MAPLE?

 Профиль  
                  
 
 
Сообщение10.10.2008, 11:13 
Модератор
Аватара пользователя


11/01/06
5702
см. showtime

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

 Профиль  
                  
 
 Проблемма с maple
Сообщение11.02.2009, 23:57 


10/10/08
7
Здраствуйте.У меня есть парочка вопросов.
Сначало показую код:
Код:
> 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 
Модератор
Аватара пользователя


11/01/06
5702
Во-первых, не дублируйте темы (это от лица модератора).

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

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

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

 Профиль  
                  
 
 
Сообщение12.02.2009, 12:21 


10/10/08
7
С пунктами 1-3 согласен, но на счет вставки цикла не могу всетаки понять.
Если я просто подставляю его вместо звездочек то он не работает.И я не совсем понимаю почему???

 Профиль  
                  
 
 
Сообщение12.02.2009, 16:55 
Модератор
Аватара пользователя


11/01/06
5702
Так может быть у вас условие if не выполняется. Вставьте рядом еще всякие print("checkpoint 1"); чтобы было понятно куда выполнение попадает, а куда нет.

 Профиль  
                  
 
 
Сообщение15.02.2009, 16:59 


10/10/08
7
Спасибо за предвидущие ответы!
У меня есть еще один вопросик:
Код:
> 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 
Модератор
Аватара пользователя


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

 Профиль  
                  
 
 
Сообщение15.02.2009, 20:24 


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

 Профиль  
                  
 
 
Сообщение15.02.2009, 20:42 
Модератор
Аватара пользователя


11/01/06
5702
jianiajizak в сообщении #186577 писал(а):
есть ли функция которая подносит полином по модулю в нужную степень, а то у меня это реализовано циклом, а хотелось бы сразу.

Power(f,n) mod q

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group