9. ( ):
q[3][n+1],
/ q[3][n+1],
/ q[3][n+1],
: :
dx/dt = ax(t) + bu(t);
y(t) = cx(t);
x(t) - ,
u(t) - ,
y(t) - ,
a = -2 -1 b = 1 0 c = 2 0
2 -5 0 -2 0 2,5
, ( ) ().
:
#include <stdio.h>
#include <math.h>
#include <conio.h>
void matr_peredat_funkc(int n, int m, int k, int phase_koord, int control, int vyhod, float a[n][n], float b[n][m], float c[k][n], float q[3][n+1]);
int main(int argc, char **argv)
{
int n; //
int m; //
int k; // ();
// , =0
int phase_koord; //
int control; //
int vyhod; // ();
// , vyhod=0
int i, j; //
Char c0;
printf("\n Kol-vo fazov. koordinat n= ");
scanf("%d", &n);
printf("\n Kol-vo upravlen. m= ");
scanf("%d", &m);
printf("\n Kol-vo izmeren. k =");
scanf("%d", &k);
printf("\n");
float a[n][n]; //
float b[n][m]; //
float c[k][n]; //
// ( )
float q[3][n+1]; //
// :
// - ,
// -
// " /",
// -
// " /",
printf("\nVvedite matricu dinamiki postrochno (%d znashenij v stroke):\n", n);
for (i=0; i<n; i++)
{
printf("\n%d stroka:\n", i);
for (j=0; j<n; j++)
scanf("%f", &a[i][j]);
}
printf("\n");
printf("\nVvedite matricu upravlenija postrochno (%d znashenij v stroke):\n", m);
for (i=0; i<n; i++)
{
printf("\n%d stroka:\n", i);
for (j=0; j<m; j++)
scanf("%f", &b[i][j]);
}
printf("\n");
if (k!=0) //
{
printf("\nVvedite matricu izmerenij postrochno (%d znashenij v stroke):\n", n);
for (i=0; i<k; i++)
{
printf("\n%d stroka:\n", i);
|
|
for (j=0; j<n; j++)
scanf("%f", &c[i][j]);
}
printf("\n");
}
printf("\n Nomer fasovoj koordinaty (ne bolee %d) phase_koord= ", n);
scanf("%d", &phase_koord);
printf("\n Nomer upravlenija (ne bolee %d) control= ", m);
scanf("%d", &control);
if (k!=0) //
{
printf("\n Nomer vyhodnoj koordinaty (ne bolee %d) vyhod= ", k);
scanf("%d", &vyhod);
}
Matr_peredat_funkc(n, m, k, phase_koord, control, vyhod, a, b, c, q);
printf("\nKoeff. znamenat. peredat. funkcii:\n");
for (i=0; i<n+1; i++)
printf("%15.6e ", q[0][i]);
printf("\n");
printf("\nKoeff. chislit. peredat. funkcii 'phase_koord / control':\n");
for (i=0; i<n+1; i++)
printf("%15.6e ", q[1][i]);
printf("\n");
printf("\nKoeff. chislit. peredat. funkcii 'vyhod / control':\n");
for (i=0; i<n+1; i++)
printf("%15.6e ", q[2][i]);
printf("\n");
c0=getch();
Return 0;
}
:
, 2- /1- :
W(p) = 2/(p2 + 7p + 12)
2- /1- :
W(p) = (-5p 10)/(p2 + 7p + 12)
:
1. :
void diskret_analog(int n, int m, float h0, float a[n][n], float b[n][m], float p[2][n], float f[n][n], float c[n][m]);
2. n ,
3. m ,
4. h0 ,
5. :
a[n][n] ,
b[n][m] ,
p[2][n] - :
, ,
f[n][n] - ,
c[n][m] - ,
h0,
6. a[n][n], b[n][m] p[2][n], , .
7. :