Learn R Programming

control (version 0.2.5)

initial: Initial Condition Response for Linear Systems

Description

initial obtains the time response of the linear system:

$$dx/dt = Ax + Bu$$

$$y = Cx + Du$$

to an initial condition.

Usage

initial(sys, x0, t)
initialplot(sys, x0, t)

Arguments

sys

LTI system of transfer-function, state-space and zero-pole classes

x0

initial conditions as a column vector. Should have as many rows as the rows of A. where x0 is not specified, random values are assigned

t

regularly spaced time vector. If not provided, it is automatically set.

For calls to initialplot, the same arguments are allowed

Value

A list is returned by calling initial containing:

x Individual response of each x variable

y Response of the system

t Time vector

The matrix y has as many rows as there are outputs, and columns of the same size of length(t). The matrix X has as many rows as there are states. If the time vector is not specified, then the automatically set time vector is returned as t

A plot of y vs t is returned by calling initialplot

Details

initial produces the time response of linear systems to initial conditions using lsim

initialplot produces the time response to initial conditions as a plot againts time.

The functions can handle both SISO and MIMO (state-space) models.

Other possible calls using initial and initialplot are:

initial(sys)

initial(sys, x0)

initialplot(sys)

initialplot(sys, x0)

See Also

step impulse ramp

Examples

Run this code
# NOT RUN {
res <- initial(tf(1, c(1,2,1)))
res$y
res$t
A <- rbind(c(-2, -1), c(1,0)); B <- rbind(1,0);
C <- cbind(0,1); D <- as.matrix(0);
x0 <- matrix(c( 0.51297, 0.98127))
initialplot(ss(A,B,C,D), x0)
initialplot(tf(1, c(1,2,1)), t = seq(0, 10, 0.1))

# }
# NOT RUN {
 State-space MIMO systems 
# }
# NOT RUN {
A <- rbind(c(0,1), c(-25,-4)); B <- rbind(c(1,1), c(0,1));
C <- rbind(c(1,0), c(0,1)); D <- rbind(c(0,0), c(0,0))
res <- initial(ss(A,B,C,D))
res$y # has two rows, i.e. for two outputs
initialplot(ss(A,B,C,D))

# }

Run the code above in your browser using DataLab