В першій главі було розглянуто варіантний аналіз чисельних методів моделювання зміни температури термопари.
В другій главі розглянуто вибір методі та інструментальних засобів рішення даної задачі.
В третій главі розглянуто алгоритм рішення задачі.
В четвертій главі було зроблено планування вхідних та вихідних даних, описано алгоритм рішення керуючої програми, та її структури.
В пятій главі було представлено розвязання даної задачі в Machcad.
В шостій було представлено інструкція користувачеві, для коректної роботи програми.
Написана програма широко використовується в обчислювальній математиці. Під час виконання роботи були закріплені знання та навички використання мови C++.
Література
1. Заварыкин В. М. и др. Численные методы: Учеб. пособие для студентов физ.-мат. спец пед. ин-тов/В. М. Заварыкин, В. Г. Житомирский, М. П. Лапчик.-М.: Просвещение, 1990.-176 с.
2. Квєтний Р.Н. Методи комп`ютерних обчислень ./ Вінниця: ВДТУ,2001 – 148с.
3. Маликов В. Т., Кветный Р. Н. Вычислительные методы и применение ЭВМ. – К.: Вища школа, 1989.
4. Кветный Р. Н. Математическое моделирование в задачах проектирования средств автоматики и информационно-измерительной техники. – К.:УМК ВО,1989. – 256 с.
5. Дубовой В.М., Квєтний Р.Н. Програмування комп’ютеризованих систем управління та автоматики. – Вінниця: ВДТУ, 1997. – 208 с.
6. Р.Н.Кветний Методи комп’ютерних обчислень. Навчальний посібник.- Вінниця: ВДТУ, 2001.-148с.
ДОДАТОК
Додаток А
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<process.h>
#define KOL 6
int kStr=3*(KOL-1);
int kStl=kStr+1;
int xi[KOL]={20,40,60,80,100,120};
double yi[KOL]={-0.67,-0.25,-0.17,0.61,1.06,1.52};
double mas[(KOL-1)*3][(KOL-1)*3+1]={{0}};
double Spline(float x);
void Gauss();
main()
{
clrscr();
printf("Spline:\n");
printf("T=75,U=%lf\n",Spline(75));
printf("T=93,U=%lf\n",Spline(93));
getch();
}
double Spline(float x)
{
double y=0;
int i,h;
for(i=0;i<KOL-1;i++)
{
h=xi[i+1]-xi[i];
mas[i][i*3]=h;
mas[i][i*3+1]=pow(h,2);
mas[i][i*3+2]=pow(h,3);
mas[i][(KOL-1)*3]=yi[i+1]-yi[i];
}
for(i=0;i<KOL-2;i++)
{
h=xi[i+1]-xi[i];
mas[i+KOL-1][i*3]=-1;
mas[i+KOL-1][i*3+1]=-2*h;
mas[i+KOL-1][i*3+2]=-3*pow(h,2);
mas[i+KOL-1][i*3+3]=1;
mas[i+2*(KOL-1)-1][i*3+1]=-1;
mas[i+2*(KOL-1)-1][i*3+2]=-3*h;
mas[i+2*(KOL-1)-1][i*3+4]=1;
}
mas[3*(KOL-1)-2][2]=1;
mas[3*(KOL-1)-1][3*(KOL-1)-2]=1;
mas[3*(KOL-1)-1][3*(KOL-1)-1]=3*(xi[KOL-1]-xi[KOL-2]);
Gauss();
int nom;
for(i=0;i<KOL-1;i++)
if(x>=xi[i]&&x<=xi[i+1])
{
nom=i;
break;
}
y=yi[nom]+mas[3*nom][kStl-1]*(x-xi[nom])+mas[3*nom+1][kStl-1]*pow(x-xi[nom],2)+mas[3*nom+2][kStl-1]*pow(x-xi[nom],3);
return y;
}
void Gauss()
{
for(int nUr=0;nUr<kStr;nUr++)
{
if(mas[nUr][nUr]==0)
{
for(int nUr1=nUr+1;nUr1<kStr;nUr1++)
{
if(mas[nUr1][nUr]!=0)
{
for(int nPer=0;nPer<kStl;nPer++)
{
double t;
t=mas[nUr][nPer];
mas[nUr][nPer]=mas[nUr1][nPer];
mas[nUr1][nPer]=t;
}
goto m1;
}
}
m1:
}
double VE=mas[nUr][nUr];
for(int nPer=0;nPer<kStl;nPer++)
mas[nUr][nPer]/=VE;
for(int nUr1=nUr+1;nUr1<kStr;nUr1++)
{
double PE=mas[nUr1][nUr];
for(int nPer=0;nPer<kStl;nPer++)
mas[nUr1][nPer]-=mas[nUr][nPer]*PE;
}
}
for(int nPer=kStl-2;nPer>=0;nPer--)
for(nUr=nPer-1;nUr>=0;nUr--)
{
mas[nUr][kStl-1]-=mas[nUr][nPer]*mas[nPer][kStl-1];
mas[nUr][nPer]=0;
}
}