A bug of function fplot (the figure is inconsistent with the one got by 'plot')
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Shuangfeng Jiang
el 24 de Jul. de 2020
Comentada: Walter Roberson
el 24 de Jul. de 2020
syms t_d % input variable
% the expression I would like to plot↓
f(t_d)=((6848549883207071*t_d)/70368744177664 + 619810600876641/147573952589676412928)/((6848549883207071*t_d)/35184372088832 - (exp(-6000000000000*t_d)*(6000000000000*t_d - exp(6000000000000*t_d) + 1))/60000 - (4102889305024308125000000*exp(-(7843586636568035*t_d)/16384)*((7843586636568035*t_d)/16384 - exp((7843586636568035*t_d)/16384) + 1))/2460874053013946398635327350449 + 619810600876641/73786976294838206464);
t_d_lb=0; % lower bound of t_d
t_d_ub=6e-10; % upper bound of t_d
order_t_d_lb=floor(log10(t_d_ub));
t_d_axis=t_d_lb:10^(order_t_d_lb-3):t_d_ub;
figure();% the left figure
plot(t_d_axis,f(t_d_axis));% the left figure
figure();% the right figure
fplot(f(t_d),[t_d_lb t_d_ub]); % the right figure
I often use ‘fplot’ to get the figure of an expression, but today I’ve got different curves plotted by function ‘fplot’ and ‘plot’. As the figure shown below, the left one is got by plugging in sampled inputs and drawn by ‘plot’, which is correct. However, the curve seems disappear at t_d=1.3e-10 at the right figure. I’ve checked the expression value at t_d=1.3e-10/1.6e-10/2e-10, etc, and I can make sure the left figure, which is got using ‘plot’, is correct.
Could anyone tell me if there’s a bug with ‘fplot’, and why there’s a dashed line in the right figure? What should I do to make ‘fplot’ work properly?
0 comentarios
Respuesta aceptada
Walter Roberson
el 24 de Jul. de 2020
You are correct. The bug is somewhere inside
toolbox/matlab/graphics/function/+matlab/+graphics/+function/@ParameterizedFunctionLine/ParameterizedFunctionLine.p
Work-around:
nF = feval(symengine, 'normal', f);
fplot(nF, [t_d_lb t_d_ub])
4 comentarios
Walter Roberson
el 24 de Jul. de 2020
I did a bunch of fplot() with smaller intervals, reading off from the graphs to see what new limits I could use.
Más respuestas (0)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!