https://github.com/matb85/projekt-rrir
https://github.com/matb85/projekt-rrir
Last synced: 9 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/matb85/projekt-rrir
- Owner: Matb85
- Created: 2025-02-12T10:08:08.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-02-12T10:18:30.000Z (over 1 year ago)
- Last Synced: 2025-02-12T11:32:01.153Z (over 1 year ago)
- Language: C#
- Size: 12.9 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Projekt - Równania różniczkowe i różnicowe
Mateusz Bis
Projekt został zrealizowany w ramach przedmiotu Równania różniczkowe i różnicowe na II roku studiów na kierunku Informatyka na Wydziale Informatyki Akademii Górniczo-Hutniczej.
## Wstęp
Otrzymałem do wykonania problem obliczeniowy nr 4.2 - **„Wibracje akustyczne warstwy materiału”**, o równaniu:

Aby rozwiązać zadanie:
1. Wyprowadziłem sformułowanie wariacyjne równania.
2. Napisałem procedurę, która generuje i rozwiązuje układ równań liniowych, a także rysuje wykres rozwiązania.
## 1. Sformułowanie wariacyjne
Wyprowadzenie jest dostępne w pliku [pdf](https://github.com/Matb85/projekt-rrir/blob/main/Projekt%20RRIR%20Zadanie%204.2.pdf).
## 2. Procedura
### 2.1 Wymagania funkcjonalne
Procedura powinna:
- przyjmować argument \(n\) - liczbę elementów skończonych większą lub równą 3,
- rysować wykres wyliczonego przybliżenia funkcji,
- liczyć całki numerycznie.
### 2.2 Użyte technologie
Do stworzenia procedury wykorzystałem język **C#** na platformie [**.NET 8**](https://learn.microsoft.com/pl-pl/dotnet/core/whats-new/dotnet-8/overview), oraz dwie biblioteki:
1. [**ScottPlot.NET**](https://scottplot.net) do tworzenia wykresów i zapisywania ich jako obrazki,
2. [**Math.NET**](https://numerics.mathdotnet.com) do obliczania numerycznie całek metodą Gauss-Legendre.
### 2.3 Struktura
Rozwiązanie składa się z dwóch plików:
- **Solver.cs** - klasa `Solver` zawierająca metodę `Solve()`, czyli właściwą procedurę,
- **Program.cs** - program główny, który po skompilowaniu można wywołać z terminalu.
#### Argumenty procedury `Solve()` oraz programu głównego:
1. `n` - liczba elementów skończonych większa lub równa 3,
2. `saveDirectory` - folder do zapisania wykresów w formacie obrazka. Jeśli argument nie zostanie podany, wykresy zostaną otwarte w przeglądarce.
#### Przykłady wywołania `Solve()` w kodzie C#:
```csharp
Solve(6, "/home/ubuntu") // wykonaj dla 6 elementów i zapisz wykresy do folderu
Solve(15, "/home/ubuntu") // wykonaj dla 15 elementów i zapisz wykresy do folderu
```
#### Przykłady wywołania programu głównego w terminalu:
```sh
./ProjektRRIR 8 /home/ubuntu # wykonaj dla 8 elementów i zapisz wykresy do folderu
./ProjektRRIR 80 /home/ubuntu # wykonaj dla 80 elementów i zapisz wykresy do folderu
```
## 3. Wykres
Dla n = 16:


### Przydatne linki:
- [Microsoft .NET 8 Overview](https://learn.microsoft.com/pl-pl/dotnet/core/whats-new/dotnet-8/overview)
- [ScottPlot.NET](https://scottplot.net)
- [Math.NET Numerics](https://numerics.mathdotnet.com)
- [Gauss-Legendre Rule](https://numerics.mathdotnet.com/Integration#Gauss-Legendre-Rule)