- •Задание исследования
- •2. Подробное описание задачи и методы её решения
- •3. Описание работы программы и результаты исследований
- •Анализ зависимостей результатов программы
- •4. Выводы
- •Описание применения
- •Программа и методика испытаний
- •Способы тестирования программы
- •Руководство пользователя
- •Назначение программы
- •Условия и характеристики программы
- •Выполнение программы
- •5.3.4 Входные и выходные данные
- •5.3.5 Сборка программы
- •5.3.6 Текст программы
- •6. Список библиографических источников:
Выполнение программы
Для вызова программы необходимо перейти в каталог программы и запустить файл метод прогонки.exe.
5.3.4 Входные и выходные данные
Входными данными для этой программы являются номер fi и s (s=0,5). После ввода входных данных не обязательно нажать клавишу Enter.
Выходные данные: значения функции Y(X), рассчитанные методом прогонки для всех s и f. Результат выводится на экран и сохраняется в файл с расширением xls.
5.3.5 Сборка программы
Средой разработки программы является Microsoft Visual Studio 2008. Программа написана на языке С++.
5.3.6 Текст программы
#include <stdio.h>
#include <math.h>
#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <conio.h>
#include <time.h>
#include <ctime>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
setlocale( LC_ALL, "Russian" ); //и вот эта команда
float y0=0;// значения функции У на концах интервала
float y1=1;
float A=0;
float B=0;
float a=0;// концы
float b=1;
float a0=1;// для ЛК. Берем из логики рисунка + задания.
float a1=0;
float b0=1;
float b1=0;
int Nom;
int n=5;
int u=1;
int s;
float h= (b-a)/n;
float im=0;
//функция перед 1й производной/ Значения записываются по fi, после чего изменяется Xi.Строчка
float p[6];
cout<<"VVEDI NOMER FUNC 1-5";
//cin>> Nom;
FILE * f = fopen("пакет.xls","w+");
fseek(f, 0, SEEK_END);
int z = ftell(f);
fseek(f, 0, SEEK_SET);
fprintf (f, "%s" ,"\n");
for(Nom=1;Nom<6;Nom++)
{switch (Nom)
{
case 1:
{
p[0]= -1.7930;
p[1]= -1.7863;
p[2]= -1.7800;
p[3]= -1.7700;
p[4]= -1.7600;
p[5]= -1.7500;
break;
}
case 2:
{
p[0]= -1.7012;
p[1]= -1.6877;
p[2]= -1.6776;
p[3]= -1.6709;
p[4]= -1.6673;
p[5]= -1.6668;
break;
}
case 3:
{
p[0]= -1.6184;
p[1]= -1.5994;
p[2]= -1.5838;
p[3]= -1.5714;
p[4]= -1.5630;
p[5]= -1.5555;
break;
}
case 4:
{
p[0]= -1.5432;
p[1]= -1.5200;
p[2]= -1.5000;
p[3]= -1.4832;
p[4]= -1.4692;
p[5]= -1.4581;
break;
}
case 5:
{
p[0]= -1.4747;
p[1]= -1.4480;
p[2]= -1.4246;
p[3]= -1.4043;
p[4]= -1.3869;
p[5]= -1.3722;
break;
}
}
for (int i=0;i<6;i++)//Вывод p
{
cout<<"p"<<i<<"="<<p[i]<<"\n";
}
cout<< "VVEDI S";
//cin>>s;
for (s=0;s<6;s++)
{cout<< "VIBRANO S="<<s<<"\n";
float q[6];
for (int i=0;i<6;i++)// Для всех точек f1
{
q[i]=cos((im/5)*(0.7+0.05*s));//im/5 - смена х
im=im++;
}
for (int i=0;i<6;i++)//Вывод q
{
cout<<"q"<<i<<"="<<q[i]<<"\n";
}
float m[4];
float k[4];
for (int i=0;i<4;i++)
{
m[i]=( -2+1/(5*p[i]));
k[i]=(1-(h*p[i])+ (h*h*q[i]));
}
for (int i=0;i<4;i++)
{
cout<<"m"<<i<<"="<<m[i]<<"\n";
}
for (int i=0;i<4;i++)
{
cout<<"k"<<i<<"="<<k[i]<<"\n";
}
float c[4];
float d[4];
c[0]=(a1-(a0*h))/(m[0]*(a1-a0*h)+(k[0]*a1));
d[0]=((k[0]*A*h)/(a1-a0*h) + (2*0*0+2*0-4));/////////////////////////////
for (int i=1;i<4;i++)
{
c[i]=( 1/(m[i]-(k[i]*c[i-1])));
d[i]=(( 2*i*i+2*i-4)*h*h)-(k[i]*c[i-1]*d[i-1]);//////////////////////////////
}
for (int i=0;i<4;i++)
{
cout<<"c"<<i<<"="<<c[i]<<"\n";
}
for (int i=0;i<4;i++)
{
cout<<"d"<<i<<"="<<d[i]<<"\n";
}
float y[6];
y[5]=(b1*c[3]*d[3]+B*h)/(b1*(1+c[3])+b0*h);
for (int i=3;i>-1;i--)
{
y[i+1]=(c[i]*(d[i]-y[i+2]));
}
y[0]=(a1*y[1]-A*h)/(a1-a0*h);
for (int i=0;i<6;i++)
{
cout<<"y"<<i<<"="<<y[i]<<"\n";
}
// fprintf (f, "%c %c %c %c %c %c %c %c %c %c %c %c %c" ,"S","\t","Номер fi","\t","\t","\t","\t","\t","\t","\t","\t","\t","\n");
fprintf (f, "%i %s %i %s %f %s %f %s %f %s %f %s %f %s %f %s %s" , s,"\t", Nom,"\t", y[0],"\t", y[1],"\t",y[2],"\t",y[3],"\t",y[4],"\t", y[5],"\t","\n");
getch();
}}
getch();
return 0;
}