Re: как в maple график по точкам строить?

nomirion

f(x) - сложная функция, долго считается
подскажите пожалуйста, как построить график по точкам с каким-то шагом dx ?
можно ли это как то сделать с помощью функции plot ?

andryha907

f(x) - сложная функция, долго считаетсяподскажите пожалуйста, как построить график по точкам с каким-то шагом dx ?можно ли это как то сделать с помощью функции plot ?
Можно, установив параметр adaptive=false (иначе мапл пытается оптимизировать распределение по Х используя numpoints=n (для ограничения количества точек) и по желанию указать style=point. В итоге у Вас равномерно будут распределены n-точек по оси Х.
Можно вместо ограничения числа точек по Х задать их ряд распределения, например, для равномерного указав параметр: sample=[seq( i, i= -10..0)], или sample=[seq( exp( i i= -20..0)] - если интересуют именно эти точки.
Примеры и описание есть в хелпе в Мапле. :)

nomirion

спасибо!

andryha907

Да, еще подсказка, если численные вычисления довольно забойные и значения значительно маленькие/большие, то рекомендую сразу установить точность вычислений с плавающей запятой по-выше, указав в самом начале:
Digits:=n;
(по умолчанию n=10)
Однако обнаруженная в Maple10 была неточность - при вычислении по формулам через eval значения были одни, а при выводе на графике (толи plot, то ли plot3d) - совершенно другие (такое чувство, что там это параметр Digits не работает). В итоге пришлось написать цикл, в котором значения вычислялись с заданной точностью, а только затем выводились на экран.
Я, например, делал это так, рисуя в цикле на графике точку, а потом суммируя их:
 

for i from 0 by 1 while i < 100 do
p_x[i]:=0.000001+dt*i;
plt[i]:=evalf(Coeff_q( p_x[i] ;
ttt[i]:=plot({[ p_x[i], plt[i]]}, style=POINT);
if i=0 then
tt:=display({ttt[i]});
else
tt:=display({ttt[i],tt});
end if;
end do:

display(tt);

Можно и правильней это сделать через массив, но мне для графического анализа подошел этот вариант.
P.S. Возможно, в Maple 11 этот баг с точностью вычислений при построении графика исправили.
Оставить комментарий
Имя или ник:
Комментарий: