Оптимизация кода
Модератор: Admin
Оптимизация кода
Извините за такой вопрос.Изучаю Maple с сегодняшнего дня и вот какая проблема возникла:оптимизация кода.
Все дело в том,что код получается слишком горомоздким,хотя в других математических пакетах это делается достаточно
легко.Посоветуйте как можно избавиться от такой проблемы.
Вот файлик:
Все дело в том,что код получается слишком горомоздким,хотя в других математических пакетах это делается достаточно
легко.Посоветуйте как можно избавиться от такой проблемы.
Вот файлик:
Вот еще вопросик.написал код,который рисует 4 отрезка на различных plot'aх.А мне надо на одном.Как этого добиться?
Код: Выделить всё
line:=proc(t,j) if (j=1) then 1-2*t-1*I elif (j=2) then 1+I*(-1+2*t) elif (j=3) then 1-2*t+1*I elif (j=4) then -1+I*(1-2*t) end if end proc;
for j from 1 to 4 do plot([Re(line(t,j)),Im(line(t,j)),t=0..1]): end do;
Спасибо.А почему здесь выдает ошибку,хотя делаю я всё правильно:
Код: Выделить всё
> line:=proc(t,j) if (j=1) then 1-2*t-1*I elif (j=2) then 1+I*(-1+2*t) elif (j=3) then 1-2*t+1*I elif (j=4) then -1+I*(1-2*t) end if end proc;
> z1:=-0.999-0.999*I;z2:=-z1;n=1000;
> find_cos:=proc(z) arccos(((Re(z)-Re(z1))*(Re(z)-Re(z1))+(Im(z)-Im(z1))*(Im(z)-Im(z1))+(Re(z)-Re(z2))*(Re(z)-Re(z2))+(Im(z)-Im(z2))*(Im(z)-Im(z2))-(Re(z1)-Re(z2))*(Re(z1)-Re(z2))-(Im(z1)-Im(z2))*(Im(z1)-Im(z2)))/(2*sqrt((Re(z)-Re(z1))*(Re(z)-Re(z1))+(Im(z)-Im(z1))*(Im(z)-Im(z1)))*sqrt((Re(z)-Re(z2))*(Re(z)-Re(z2))+(Im(z)-Im(z2))*(Im(z)-Im(z2))))) end proc;
> variation:=proc(j)::float; local summ::float,i::integer;summ:=0;
> for i from 0 to n do summ:=summ+find_cos(line(i/n,j)) end do;
> return summ;
> end proc;
> print(variation(3));
Error, (in variation) final value in for loop must be numeric or character
Вот блин:всего напрос-то точку с запятой забыл
А почему ответ то не пишет,а такую строчку (при n=6):

А почему ответ то не пишет,а такую строчку (при n=6):
Код: Выделить всё
evalf(variation(1));
find_cos(1 - I) + find_cos(2/3 - I) + find_cos(1/3 - I) + find_cos(-I) + find_cos(-1/3 - I) + find_cos(-2/3 - I) + find_cos(-1 - I)
Falex писал(а):А почему ответ то не пишет,а такую строчку (при n=6):Код: Выделить всё
evalf(variation(1));
find_cos(1 - I) + find_cos(2/3 - I) + find_cos(1/3 - I) + find_cos(-I) + find_cos(-1/3 - I) + find_cos(-2/3 - I) + find_cos(-1 - I)
при n:=6
variation(1) выводит резултат 11.64999743
сделайте рестарт