8. ( ) f[n][n] c[n][m].
: :
dx1/dt = x2(t) 0,5u1(t) + 0,2u2(t);
dx2/dt = x3(t) + u1(t) - u2(t);
dx3/dt = -2x1(t) 3x2(t) 3x3(t) - 0,1u1(t) + 5u2(t);
h0=0,1 c.
n=3, m=2,
0 1 0 -0.5 0.2
a = 0 0 1 b = 1 -1
-2 -3 -3 -0.1 5
:
p = -2 -0.5 0.5
0 -0.866 0.866
:
#include <stdio.h>
#include <math.h>
#include <conio.h>
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]);
int main(int argc, char **argv)
{
int n; //
int m; //
float h0; //
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 Interval diskretn. h0 =");
scanf("%f", &h0);
printf("\n");
float a[n][n]; //
float b[n][m]; //
float p[2][n]; //
// :
// - ,
// - ,
// .
// ,
// ,
float f[n][n]; //
// h0
float c[n][m]; //
// h0
printf("\nVvedite matricu dinamiki postrochno (%d znashenij v stroke):\n", n);
for (i=0; i<n; i++)
{
printf("\n%d stroka:\n", i+1);
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+1);
for (j=0; j<m; j++)
scanf("%f", &b[i][j]);
}
printf("\n");
printf("\nVvedite dejstvit. chasti sobstv. znachenij (%d znashenij):\n", n);
for (i=0; i<n; i++)
scanf("%f", &p[0][i]);
printf("\n");
printf("\nVvedite mnimye chasti sobstv. znachenij (%d znashenij):\n", n);
for (i=0; i<n; i++)
scanf("%f", &p[1][i]);
printf("\n");
Diskret_analog(n, m, h0, a, b, p, f, c);
printf("\nFundament. matrica discretnogo analoga:\n");
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
printf("%15.6e ", f[i][j]);
printf("\n");
}
printf("\n");
printf("\nMatrica upravl. discretnogo analoga:\n");
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
|
|
printf("%15.6e ", c[i][j]);
printf("\n");
}
printf("\n");
c0=getch();
Return 0;
}
:
:
1. :
void tastin(int n, float h0, float w[2][n+1]);
2. n ,
3. h0 ,
4. :
w[2][n+1] :
,
,
,
5. w [2][n+1]
6. :
Tastin(n, h0, w)
7. ( ) w[2][n+1].
: :
W(p) = (0,5p + 1) / (6p3 + 11p2 + 6p + 1)
h0 = 0,5 c.
:
#include <stdio.h>
#include <math.h>
#include <conio.h>
void tastin(int n, float h0, float w[2][n+1]);
int main(int argc, char **argv)
{
int n; //
float h0; //
Int i;
Char c;
printf("\n stepen polinoma znamenat. n= ");
scanf("%d", &n);
printf("\nVvedite period diskretn. h0 =");
scanf("%f", &h0);
printf("\n");
float w[2][n+1]; //
// .
// :
// - ,
// - ,
// - .
//
// .
printf("\nVvedite koeff. chislitelja (%d znacheniy):\n", n+1);
for (i=0; i<n+1; i++)
scanf("%f", &w[0][i]);
printf("\nVvedite koeff. znamenatelja (%d znacheniy):\n", n+1);
for (i=0; i<n+1; i++)
scanf("%f", &w[1][i]);
printf("\n");
Tastin(n, h0, w);
printf("\nKoefficienty chislit. diskretn. peredat. funkcii:\n");
for (i=0; i<n+1; i++)
printf("%e ", w[0][i]);
printf("\n\n");
printf("\nKoefficienty znamenat. diskretn. peredat. funkcii:\n");
for (i=0; i<n+1; i++)
printf("%e ", w[1][i]);
printf("\n\n");
c=getch();
Return 0;
}
:
, h0 = 0,5 :
W(z)=(-1,7094×10-3 z-3 +1,7094×10-3 z-2 +8,547×10-3z-1 +5,1282×10-3z) / (-0,39487 z-3 + 1,6325 z-2 2,2239 z-1 + z)
,
:
1. :