program is based on (Statistics 1Var)...the numerical values from this this code is valid but plots are temperamental. need help pls.
BODE(ƒ1,ƒ2,[num],[den])>>enter. example
BODE(-1,1,[1],[1 0.2 1])>>enter.
use VIEW key to select graphs.
Code:
Tf();
BODE();
VIEW "Start",START()
BEGIN
D1:={};
D2:={};
SetSample(H1,D1);
SetFreq(H1,D2);
H1Type:=4;
STARTVIEW(6,1);
WAIT();
STARTVIEW(-1,1);
END;
export BODE(Xmin,Xmax,num,den)
BEGIN
local num:=poly2symb(num,"*x");
local den:=poly2symb(den,"*x");
expand(num/den)▶F1;
Xtick:=0.01;
makelist(ALOG(X),X,Xmin,Xmax,Xtick)▶L1;
L2:=Tf(L1);
L7:=20*LOG(ABS(L2));
L3:=ARG(L2)*180/pi;
L4:=IM(L2);
L5:=RE(L2);
END;
EXPORT Tf(x)
BEGIN
L2:=(F1(X)|x=L1);
END;
VIEW "Nyquist",nyquist()
BEGIN
L5▶D2;
L4▶D1;
Xmin:= FLOOR(MIN(D1)+1);
Xmax:=CEILING(MAX(D1)+1);
Ymin:= FLOOR(MIN(D2)+1);
Ymax:= CEILING(MAX(D2)+1);
STARTVIEW(1,1);
END;
VIEW "Magnitude",Magnitude()
BEGIN
D1:=L1;
D2:=L7;
Xmin:= -1;
Xmax:= 1;
Ymin:= FLOOR(MIN(D2)+1);
Ymax:= CEILING(MAX(D2)+1);
STARTVIEW(1,1);
END;
VIEW "Phase",Phase()
BEGIN
D1:=L1;
D2:=L3;
Xmin:= -1;
Xmax:= 1;
Ymin:= FLOOR(MIN(D2)+1);
Ymax:= CEILING(MAX(D2)+1);
STARTVIEW(1,1);
END;
PLOT()
BEGIN
Xmin:= -1;
Xmax:= 1;
Ymin:= FLOOR(MIN(D2)+1);
Ymax:= CEILING(MAX(D2)+1);
STARTVIEW(1,1);
END;
Symb()
BEGIN
SetSample(H1,D1);
SetFreq(H1,D2);
H1Type:=4;
STARTVIEW(0,1);
END;