Skip to content

Commit

Permalink
add local changes (brstu#6)
Browse files Browse the repository at this point in the history
Co-authored-by: Ilya Kukharchuk <[email protected]>
Co-authored-by: Yana Sitkovets <[email protected]>
  • Loading branch information
3 people authored Sep 28, 2024
1 parent 6c3402d commit d975141
Show file tree
Hide file tree
Showing 6 changed files with 156 additions and 1 deletion.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
# Directories to ignore
.vs/
out/
build/

### macOS ###
# General
Expand Down
2 changes: 1 addition & 1 deletion readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
|11|Крагель Алина|||||||||||
|12|Куликович Иван|||||||||||
|13|Кульбеда Кирилл|||||||||||
|14|Кухарчук Илья|||||||||||
|14|Кухарчук Илья|[as0006314](trunk/as0006314)||||||||||
|15|Логинов Глеб|||||||||||
|16|Мороз Евгений|||||||||||
|17|Никифоров Александр|||||||||||
Expand Down
51 changes: 51 additions & 0 deletions trunk/as0006314/task_01/doc/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Laboratory work ¹.1
<p align="center">MINISTRY OF EDUCATION OF THE REPUBLIC OF BELARUS</p>
<p align="center">EDUCATIONAL INSTITUTION</p>
<p align="center">«BREST STATE TECHNICAL UNIVERSITY»</p>
<p align="center">Department of IIT</p>
<br><br><br><br>
<p align="center">Laboratory work ¹.1</p>
<br><br><br>
<p align="right">Completed by the 3rd year student of</p>
<p align="right">the Faculty of Electronic Information Systems</p>
<p align="right">the group AC-63 Kukharchuk I.N.</p>
<p align="right">Checked by Ivanuk D.S.</p>
<br><br><br>
<p align="center">Brest 2024</p>

---

## Task 1. Modeling controlled object :

Write program (C++), which simulate object temperature.

### Realization
There are two classes in the program:

1. LinearModel represents linear model.
2. NonlinearModel represents nonlinear model.

<p align="center" style="font-size:25px;font-weight: bold">
RESULTS</p>

<p align="center"><img style='border:4px solid #000000'src="result.png"/></p>

### How to build the project?

1. The first you need to clone this repository to your computer.

2. Go to the folder "trunk\as0006314\task_01\src".

3. Run the command line and type 6 commands :

```console
mkdir build
cd build
cmake ..
cmake --build .
cd trunk\as0006314\task_01\src\Debug\
.\MainFile.exe
```



Binary file added trunk/as0006314/task_01/doc/result.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions trunk/as0006314/task_01/src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
cmake_minimum_required (VERSION 3.0.0)
project (ModelingTemperature)

add_executable(MainFile main.cpp)
99 changes: 99 additions & 0 deletions trunk/as0006314/task_01/src/main.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
#include <iostream>
#include <cmath>

// Interface for different models
class TemperatureModel {
public:
virtual ~TemperatureModel() = default;
virtual double calculate(double currentTemp, double heatInput) = 0;
};

// Linear temperature control model
class SimpleLinearModel : public TemperatureModel {
private:
double coeff1;
double coeff2;
public:
SimpleLinearModel(double coeff1, double coeff2) : coeff1(coeff1), coeff2(coeff2) {}

~SimpleLinearModel() override = default;

// Calculate temperature based on a linear equation
double calculate(double currentTemp, double heatInput) override {
return coeff1 * currentTemp + coeff2 * heatInput;
}
};

// Nonlinear temperature control model
class ComplexNonlinearModel : public TemperatureModel {
private:
double coeff1;
double coeff2;
double coeff3;
double coeff4;
double previousTemp = 0;
double previousHeat = 0;
public:
ComplexNonlinearModel(double coeff1, double coeff2, double coeff3, double coeff4)
: coeff1(coeff1), coeff2(coeff2), coeff3(coeff3), coeff4(coeff4) {}

~ComplexNonlinearModel() override = default;

// Calculate temperature based on a nonlinear equation
double calculate(double currentTemp, double heatInput) override {
double result = coeff1 * currentTemp - coeff2 * pow(previousTemp, 2) + coeff3 * heatInput + coeff4 * sin(previousHeat);
previousTemp = currentTemp;
previousHeat = heatInput;
return result;
}
};

// Function to simulate the temperature modeling process
void runSimulation(TemperatureModel& model, double initialTemp, int steps) {
double heatInput;
for (int step = 1; step <= steps; ++step) {
std::cout << "Enter heat flow value (Uw): "; std::cin >> heatInput;
initialTemp = model.calculate(initialTemp, heatInput);
std::cout << "\tStep " << step << "\tTemperature: " << initialTemp << std::endl;
}
}

int main() {
double initialTemp;
double coeff1, coeff2, coeff3, coeff4;
int numSteps;

// Input parameters for the linear model
std::cout << "Enter parameters for the linear model" << std::endl;
std::cout << "Parameter a: "; std::cin >> coeff1;
std::cout << "Parameter b: "; std::cin >> coeff2;

SimpleLinearModel linearModel(coeff1, coeff2);

// Input parameters for the nonlinear model
std::cout << "Enter parameters for the nonlinear model" << std::endl;
std::cout << "Parameter a: "; std::cin >> coeff1;
std::cout << "Parameter b: "; std::cin >> coeff2;
std::cout << "Parameter c: "; std::cin >> coeff3;
std::cout << "Parameter d: "; std::cin >> coeff4;

ComplexNonlinearModel nonlinearModel(coeff1, coeff2, coeff3, coeff4);

std::cout << "Enter initial temperature: "; std::cin >> initialTemp;

// Simulation for the linear model
std::cout << "Enter the number of simulation steps for the linear model: ";
std::cin >> numSteps;
std::cout << "\n--- Simulation for the linear model ---" << std::endl;
runSimulation(linearModel, initialTemp, numSteps);

std::cout << std::endl;

// Simulation for the nonlinear model
std::cout << "Enter the number of simulation steps for the nonlinear model: ";
std::cin >> numSteps;
std::cout << "\n--- Simulation for the nonlinear model ---" << std::endl;
runSimulation(nonlinearModel, initialTemp, numSteps);

return 0;
}

0 comments on commit d975141

Please sign in to comment.