Программная реализация расчета закона управления, оптимального по быстродействию

Программа расчета параметров оптимального по быстродействию закона управления написана на языке высокого уровня C++ и ориентирована на оба варианта, как на вариант с вещественными корнями характеристического уравнения, так и с комплексными. Система вывода информации предусматривает расчет коэффициентов и сохранение точек графика пространства состояний в файл для дальнейшего его отображения посредством MS Excel.

Текст программы:

#include <stdio.h>

#include <math.h>

#include <conio.h>

#define EPS 0.005

#define SIZE_ARRAY 50000

#define TBEG 0.;

#define DT 0.001

// sqrt uravneniesqrtUr (double, double, double, double *, double *, double *, double *);main ()

{*fil;buf[256];a2, a1, y0, yk;a0 = 1;k = 1;f;("Vvedite Bm = ");("%lf", &a2);= a2;("Vvedite W0 = ");("%lf", &y0);("Vvedite Wk = ");("%lf", &yk);x10, x20;c1, c2, c3, c4;

/*korni harateristicheskogo uravneniya */la1, la2, lai1, lai2; /* lyambda - 1 uchastok- 2 uchastok*/*x1a, *x2a, *x1b, *x2b;a = new double [SIZE_ARRAY];a = new double [SIZE_ARRAY];b = new double [SIZE_ARRAY];b = new double [SIZE_ARRAY];t0 = TBEG;t;dt = DT;i, j, n, na, nb;maxa, maxb;

/* korni harakteristicheskogo uravneniya */= sqrtUr(a2, a1, a0, &la1, &la2, &lai1, &lai2);(1 == i) /* korni rationalnie*/

{("Korni rationalnie:\n\n");("Harakteristicheskoe uravnenie:\n");(" %.2lf *la^2 + %.2lf *la + 1 = 0\n", a2, a1);(" la1 = %.3lf;\n", la1); (" la2 = %.3lf;\n", la2); ("\n");

/* 1 interval */("1 interval:\n");= y0;= 0;("x10 = y0 = %.3lf;\n", y0);("x20 = 0;\n\n");= (la2 * (x10 - 1) - x20) / (la2 - la1);= -(la1 * (x10 - 1) - x20) / (la2 - la1);(" c1 = %.3lf;\n", c1); (" c2 = %.3lf;\n", c2); ("\n");(" x1 = %6.3lf * exp(%6.3lf * t) + %6.3lf * exp(%6.3lf * t) + 1;\n",, la1, c2, la2); (" x2 = %6.3lf * (exp(%6.3lf * t) - exp(%6.3lf * t));\n",*la1, la1, la2); ("\n");

/* 2 interval */= yk;= 0;("2 interval:\n");("x10 = yk = %.3lf;\n", yk);("x20 = 0;\n\n");= (la2 * (x10 + 1) - x20) / (la2 - la1);= -(la1 * (x10 + 1) - x20) / (la2 - la1);(" c3 = %.3lf;\n", c3); (" c4 = %.3lf;\n", c4); ("\n");(" x1 = %6.3lf * exp(%6.3lf * t) + %6.3lf * exp(%6.3lf * t) - 1;\n",, -la1, c4, -la2); (" x2 = %6.3lf * exp(%6.3lf * t) + %6.3lf * exp(%6.3lf * t);\n",*la1, -la1, c4*la2, -la2); ("\n");

/* count points */= SIZE_ARRAY;= t0;= 0;= 0;(i=0; i<n; i++)

{a[i] = c1 * exp(la1 * t) + c2 * exp(la2 * t) + 1;a[i] = c1 * la1 * exp(la1 * t) + c2 * la2 * exp(la2 * t);b[i] = c3 * exp(-la1 * t) + c4 * exp(-la2 * t) - 1;b[i] = c3 * la1 * exp(-la1 * t) + c4 * la2 * exp(-la2 * t);= (x2a[i] > maxa) ? x2a[i] : maxa;= (x2b[i] > maxb) ? x2b[i] : maxb;+= dt;

}

/* test max N */(i=0; i<n; i++)

{((x1a[i] <= x1b[0])&&(x2a[i] <= maxb))

{= i;

}((x1b[i] >= x1a[0])&&(x2b[i] <= maxa))

{= i;

}

}++;++;("n = %d\n", n);("na = %d\n", na);("nb = %d\n", nb);("\n");

/* save points */= fopen ("points.txt", "w");(&buf[0], "t0= %.3lf\n", t0);(&buf[0], fil);(&buf[0], "dt= %.3lf\n", dt);(&buf[0], fil);(&buf[0], " i t x1a x2a x1b x2b\n", dt);(&buf[0], fil);(i=0; i<n; i++)

{= dt * i;(&buf[0], " %3d %.3lf", i, t);(&buf[0], fil);( i<= na)

{(&buf[0], " %.3lf %.3lf", x1a[i], x2a[i]);(&buf[0], fil);

}

{(" - -", fil);

Перейти на страницу: 1 2 3

Другое по теме:

Разработка радиовещательного переносного приемника нулевой группы сложности
Радиоприемник является одним из наиболее распространенных радиотехнических устройств, значение которого в экономической, социальной и культурной жизни людей огромно. Радиосвязь невозможна без радиоприемника, с изобретением ко ...

Параметры и характеристики емкостных охранных устройств
сентября 2001 года перевернуло мышление людей: они стали больше задумываться о защите аэропортов, полетов и о безопасности в целом. Угроза подобных акций заставила разрабатывать более совершенные охранные системы для надежной ...

©  www.techvarious.ru - 2021