This repository was archived by the owner on Jan 3, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 40
/
Copy pathLab_1.cpp
73 lines (53 loc) · 2.34 KB
/
Lab_1.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include<iostream>
#include<Windows.h>
#include<fstream>
#include<cmath>
using namespace std;
/*Начальная температура*/
const double INITIAL_TEMPERATURE = 18;
double linearTemperature(double a, double b, double inputWarm, double temperatureParam, int iterNum);
double nonLinearTemperature(double a, double b, double inputWarm, double temperatureParam, int iterNum, double c, double d);
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int iterNum;
cout << "Количество итераций: "; cin >> iterNum;
/*Коэффициенты для линейного уравнения*/
double a=1 , b_lin = 0.05;
/*Количество теплоты*/
double warm;
cout << "Количество теплоты: "; cin >> warm;
/*Файлы, для записи значений функций*/
ofstream linOutput("linear.txt");
ofstream nonLinOutput("nonlinear.txt");
cout << "Линейная функция:\n";
for (int i = 0; i < iterNum; i++)
{
cout << i<<"s\t"<<linearTemperature(a, b_lin, warm, INITIAL_TEMPERATURE, i) << endl;
linOutput << i <<"\t"<< linearTemperature(a, b_lin, warm, INITIAL_TEMPERATURE, i)<<endl;
}
/*Коэффициенты для нелинейного уравнения*/
double b_nonLin = 0.0001;
cout << "Неинейная функция:\n";
for (int i = 0; i < iterNum; i++)
{
cout << i << "s\t" << nonLinearTemperature(a, b_nonLin, warm, INITIAL_TEMPERATURE, i,0.05,0.005)<< endl;
nonLinOutput << i << "\t" << nonLinearTemperature(a, b_nonLin, warm, INITIAL_TEMPERATURE, i, 0.05, 0.005) << endl;
}
}
double linearTemperature(double a, double b, double inputWarm, double temperatureParam,int iterNum)
{
if (iterNum == 0)
return INITIAL_TEMPERATURE;
else
return a * linearTemperature(a,b,inputWarm,temperatureParam,iterNum-1) + b * inputWarm;
}
double nonLinearTemperature(double a, double b, double inputWarm, double temperatureParam, int iterNum, double c, double d)
{
if (iterNum == 0)
return INITIAL_TEMPERATURE;
else if (iterNum == 1)
return a * temperatureParam - b*pow(INITIAL_TEMPERATURE,2.0) + c*inputWarm+d*sin(inputWarm);
else return a * nonLinearTemperature(a, b,inputWarm,temperatureParam, iterNum-1, c, d) - b * pow(nonLinearTemperature(a, b, inputWarm, temperatureParam, iterNum-2, c, d), 2.0) + c * inputWarm + d * sin(inputWarm);
}