Graphics(n, k, amplituda, path, out);. Пример: переключательная функция

Пример: переключательная функция

Graphics(n, k, amplituda, path, out);. Пример: переключательная функция - student2.ru

аппроксимируется рядом Фурье вида:

f(x) = 4/π(sin(x) + sin(3x)/3 + sin(5x)/5 + sin(7x)/7 + …)

Вывести графики первой гармоники y=sin(x) и аппроксимирующего ряда Фурье f(x).

Головная программа:

#include <stdio.h>

#include <math.h>

#include <conio.h>

void graphics(int n, int k, int amplituda, char path[], float out[][n+1]);

int main(int argc, char **argv)

{

int n;// количество графиков

float h;// шаг вывода

float x0, x1;// начальное и конечное значения аргумента

int k;// количество точек вывода

float x;// аргумент

Float y, f;

int amplituda;// амплитуда графиков функций в позициях

char path[30]="E:/User/graphics.txt";// полный путь

// к текстовому файлу для вывода данных, например,

// d:/user/out.txt

int i, j, j1;// рабочие переменные

printf("\n Kol-vo grafikov. n=");

scanf("%d", &n);

printf("\n Nachalnoe znach. argumenta x0=");

scanf("%f", &x0);

printf("\n Konechnoe vremja integrir.: x1=");

scanf("%f", &x1);

printf("\n Shag vyvoda h=");

scanf("%f", &h);

printf("\n Max amplituda grafikov amplituda=");

scanf("%d", &amplituda);

k=(int)((x1-x0)/h + 1);

float out[k][n+1];// матрица выходных данных:

// количество строк –

// количество точек вывода: (x1-x0)/h +1

// нулевой столбец - аргумент,

// остальные n столбцов - данные для вывода n графиков

for (i=0; i<k; i++)

for (j=0; j<n+1; j++)

out[i][j]=0.0;

j1=-1;

for (x=x0; x<=x1; x+=h)

{

y=sin(x);

f=4.0/M_PI*(y + sin(3.0*x)/3.0 + sin(5.0*x)/5.0 + sin(7.0*x)/7.0 + sin(9.0*x)/9.0);

j1++;

out[j1][0]=x;

out[j1][1]=y;

out[j1][2]=f;

}

printf("\n-------------------------------");

printf("\n x sin(x) f(x)");

printf("\n-------------------------------\n");

for (i=0; i<j1; i++)

{

for (j=0; j<n+1; j++)

printf ("%10.5f", out[i][j]);

printf("\n");

}

printf("\n");

Graphics(n, k, amplituda, path, out);

Return 0;

}

Результат работы программы:

Graphics(n, k, amplituda, path, out);. Пример: переключательная функция - student2.ru

Результаты, сохраненные в выходном файле:

------------------------------------------------------------------------------------------

| x | g r a p h i c s

------------------------------------------------------------------------------------------

| 0.00000 | 21

| 0.10000 | 1 2

| 0.20000 | 1 2

| 0.30000 | 1 2

| 0.40000 | 1 2

| 0.50000 | 1 2

| 0.60000 | 1 2

| 0.70000 | 1 2

| 0.80000 | 1 2

| 0.90000 | 1 2

| 1.00000 | 1 2

| 1.10000 | 2 1

| 1.20000 | 2 1

| 1.30000 | 2 1

| 1.40000 | 2 1

| 1.50000 | 2 1

| 1.60000 | 2 1

| 1.70000 | 2 1

| 1.80000 | 2 1

| 1.90000 | 2 1

| 2.00000 | 2 1

| 2.10000 | 12

| 2.20000 | 1 2

| 2.30000 | 1 2

| 2.40000 | 1 2

| 2.50000 | 1 2

| 2.60000 | 1 2

| 2.70000 | 1 2

| 2.80000 | 1 2

| 2.90000 | 1 2

| 3.00000 | 1 2

| 3.10000 | 1 2

| 3.20000 | 2 1

| 3.30000 | 2 1

| 3.40000 |2 1

| 3.50000 |2 1

| 3.60000 | 2 1

| 3.70000 | 2 1

| 3.80000 | 2 1

| 3.90000 | 2 1

| 4.00000 | 2 1

| 4.10000 | 2 1

| 4.20000 | 21

| 4.30000 | 1 2

| 4.40000 |1 2

| 4.50000 |1 2

| 4.60000 |1 2

| 4.70000 |1 2

| 4.80000 |1 2

| 4.90000 |1 2

| 5.00000 |1 2

| 5.10000 | 1 2

| 5.20000 | 12

| 5.30000 | 2 1

| 5.40000 | 2 1

| 5.50000 | 2 1

| 5.60000 | 2 1

| 5.70000 | 2 1

| 5.80000 | 2 1

| 5.90000 |2 1

| 6.00000 |2 1

| 6.10000 | 2 1

| 6.20000 | 2 1

| 6.30000 | 1 2

Символы, используемые для вывода графиков:

“1” первая гармоника y = sin(x),

“2” сумма ряда Фурье – аппроксимация переключательной функции.

Расчет матричной передаточной функции динамической системы
по уравнениям состояния

В головной программе необходимо:

1. описать прототип функции:

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]);

2. ввести значение переменной n– количество фазовых координат (размер системы),

3. ввести значение переменной m –количество управлений,

4. ввести значение переменной k –количество выходных переменных
( измерений); если уравнения измерений нет, то k=0,

5. описать массивы:

a[n][n] – матрица динамики системы,

b[n][m] – матрица управления,

с[k][n] – матрица измерений (при необходимости),

q[3][n+1]-матрица коэффициентов передаточной функции
по убыванию степеней:

первая строка - знаменателя передаточной функции,

вторая строка - числителя передаточной функции "фазовая координата/управление",

третья строка - числителя передаточной функции "выходная переменная/управление",

6. ввести массивы a[n][n], b[n][m]ис[k][n](при необходимости),

7. ввести значения переменных:

phase_koord - номер фазовой координаты,

control - номер управления,

vyhod - номер выходной координаты (измерения) – при необходимости,

8. обратиться к программе вычислений :

Наши рекомендации