FreqResp := proc(fff) local f_laplace, G1, G; begin // Evaluate laplace transform f_laplace := transform::laplace(fff,t,s): // Substitute the laplace::transform expression with H(s) and X(s) f_laplace := subs(f_laplace, transform::laplace(x(t),t,s) = X(s)); f_laplace := subs(f_laplace, transform::laplace(h(t),t,s) = H(s)); // Substitute initial conditions f_laplace := subs(f_laplace, x'(0) = 0, x(0) = 0); // Evaluate transfer function G := solve(f_laplace, X(s))/H(s): G1 := subs(G[1], s = I*w): AR := abs(G1): // Amplitude ratio phi := arg(G1): // Phase Shift // Create plots plot(AR, w = 0.1 ..100, CoordinateType = LogLin, AxesTitles = ["Frequency", "Amplitude Ratio"], LineColor = RGB::Blue, LineWidth = 0.5*unit::mm, GridVisible = TRUE, SubgridVisible = TRUE, XTicksBetween = 9, YAxisTitleOrientation = Vertical); plot(phi, w = 0.1 ..100, CoordinateType = LogLin, AxesTitles = ["Frequency", "Phase Shift"], LineColor = RGB::Blue, LineWidth = 0.5*unit::mm, GridVisible = TRUE, SubgridVisible = TRUE, XTicksBetween = 9, YAxisTitleOrientation = Vertical); end_proc: