Damped response: Difference between revisions
No edit summary |
No edit summary |
||
| Line 33: | Line 33: | ||
Here is the output from the above system, with A = 2, x(t) = 1, plotted using OpenOffice. Different values of the coefficients in the <math>\dot{z}</math> equation give different levels of damping, resonant frequency, etc. | Here is the output from the above system, with A = 2, x(t) = 1, plotted using OpenOffice. Different values of the coefficients in the <math>\dot{z}</math> equation give different levels of damping, resonant frequency, etc. | ||
[[Image:Dampedresponse.png|thumb|420px|none]] | |||
This plot shows that the above transfer function has roots at <math> -1 \pm j </math> as expected: | This plot shows that the above transfer function has roots at <math> -1 \pm j </math> as expected: | ||
[[Image:Simpleroots.png|thumb|420px|none]] | |||
Here is the model that was used to produce these solutions: | Here is the model that was used to produce these solutions: | ||
<source lang="a4c">REQUIRE | <source lang="a4c">REQUIRE "ivpsystem.a4l"; | ||
REQUIRE | REQUIRE "atoms.a4l"; | ||
IMPORT | IMPORT "johnpye/extpy/extpy"; | ||
IMPORT | IMPORT "johnpye/roots"; | ||
(* | (* | ||
| Line 73: | Line 70: | ||
METHODS | METHODS | ||
METHOD values; | METHOD values; | ||
x[7] | x[7] := 0; | ||
x[8] | x[8] := 0; | ||
END values; | END values; | ||
| Line 112: | Line 109: | ||
See also [[IDA]] | See also [[IDA]] | ||
[[Category:Documentation]] | [[Category:Documentation]] | ||
[[Category:Examples]] | [[Category:Examples]] | ||
Revision as of 00:37, 30 July 2010
In classical control theory, a second-order system has a transfer function like
<math> G(s) = \frac{Y(s)}{X(s)} = \frac{A}{s^2+2s+2} </math>
We can model a system like this fairly easily with ASCEND. First we need to reduce the model to first order differential equations:
s2Y + 2s'Y + 2Y = A'X
Now, let s'Y = Z so that we have a pair of equations
<math> \begin{matrix} sZ + 2Z +2Y = AX \\ sY = Z \end{matrix} </math>
Taking the inverse Laplace transform and rearranging,
<math> \begin{matrix} \dot{z} &=& Ax-2z -2y \\ \dot{y} &=& z \end{matrix} </math>
This can be coded into ASCEND in the usual syntax (see below).
Here is the output from the above system, with A = 2, x(t) = 1, plotted using OpenOffice. Different values of the coefficients in the <math>\dot{z}</math> equation give different levels of damping, resonant frequency, etc.
This plot shows that the above transfer function has roots at <math> -1 \pm j </math> as expected:
Here is the model that was used to produce these solutions:
REQUIRE "ivpsystem.a4l"; REQUIRE "atoms.a4l"; IMPORT "johnpye/extpy/extpy"; IMPORT "johnpye/roots"; (* 'Test problem' We create a set of models with artificially-selected roots and then check that the roots plot is as expected. *) MODEL simpleroots; range IS_A set OF integer_constant; range :== [7..8]; x[range], dx_dt[range] IS_A solver_var; (* roots at -1 +/i j *) dx_dt[7] = 2.0 * 1.0 - 2.0 * x[7] - 2.0 * x[8]; dx_dt[8] = x[7]; t IS_A time; METHODS METHOD values; x[7] := 0; x[8] := 0; END values; METHOD ode_init; FOR i IN [range] DO x[i].ode_type := 1; dx_dt[i].ode_type := 2; x[i].ode_id := i; dx_dt[i].ode_id := i; x[i].obs_id := i; END FOR; t.ode_type := -1; t := 0 {s}; END ode_init; METHOD on_load; RUN default_self; RUN reset; RUN values; RUN ode_init; RUN roots; END on_load; METHOD roots; EXTERNAL roots(SELF); END roots; END simpleroots;
See also IDA