Skip to content

Laboratoria z Metod Numerycznych na AGH WIMiIP [prowadzący: dr hab. inż. Marcin Hojny]

License

Notifications You must be signed in to change notification settings

adamczykpiotr-AGH/AGH_WIMiIP_Metody_Numeryczne

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AGH_WIMiIP_Metody_Numeryczne

Laboratoria z Metod Numerycznych na AGH WIMiIP [prowadzący: dr hab. inż. Marcin Hojny]

Zaimplementowane metody:

Interpolacja:

Przykładowe dane:

Xi Yi
-2 -1
-1 0
0 5
2 99
4 -55
double newPoint = 1; //punkt w którym chcemy wyznaczyć wartość
std::vector<double> xi = { -2.,-1.,0.,2.,4. };
std::vector<double> yi = { -1.,0.,5.,99.,-55. };
  • Interpolacja Lagrange'a
double numeric::interpolation::lagrange(xi, yi, newPoint);
  • Interpolacja Newtona
double numeric::interpolation::newton(xi, yi, newPoint);

Rozwiązywanie liniowych układów równań:

Przykładowy układ równań:
2x + 5y + 3z = 5
4x + 2y + 5z = 4
3x + 8y + 4z = 9

std::vector<std::vector<double>> matrix = { {2,5,3,	5}, {4,2,5,	4}, {3,8,4,	9} };	
  • Metoda oparta o wzory Cramera
std::vector<double> numeric::systemsOfEquasions::polynomial(matrix);
  • Metoda eliminacji Gaussa
std::vector<double> numeric::systemsOfEquasions::gaussianElimination(matrix);

Wyznaczanie miejsca zerowego

Przykładowa funkcja:
f(x) = x^2 - 1
f'(x) = 2x
Obszar poszukiwań miejsca zerowego: < -2 ; 0 >
Prezyzja: znaleziony punkt różni się o ± 0.01 od rzeczywistego

double f(double x){
	return (x*x - 1);
}

double fDerivative(double x){
	return 2 * x;
}
  • Metoda bisekcji
double numeric::zeroOfAFunction::bisection(f, -2., 0., 0.1);
  • Metoda Newtona-Raphsona
double numeric::zeroOfAFunction::newtonRaphson(f, fDerivative, -2., 0., 0.1);

Całkowanie

Przykładowa funkcja:
1x^3 + 0x^2 + 0x^1 + 2x^0
Całkowanie na przedziale < 1 ; 4 >
Precyzja: ilość iteracji pętli

std::vector<double> coefficients = { 1.,0.,0.,2. };

//Funkcja obliczająca wartość wielomianu w punkcie
double f(double x) {
	unsigned int coeffSize = coefficients.size();
	double y = 0.;
	for (unsigned int i = 0; i < coeffSize; i++) {
		y += abs(coefficients[i] * pow(x, coeffSize - i - 1));
	}
	return y;
}
  • Całkowanie metodą prostokątów
double numeric::integration::rectangular(f, 1, 4, 300);
  • Całkowanie metodą trapezową
double numeric::integration::trapezoidal(f, 1, 4, 300);
  • Całkowanie metodą Simpsona
double numeric::integration::simpson(f, 1, 4, 300);
  • Całkowanie metodą Monte Carlo
double numeric::integration::monteCarlo(f, 1, 4, 300);
  • Kwadratury Gaussa
std::vector<double> xi = { 0.,5.,5.,0. };
std::vector<double> yi = { 0.,0.,5.,5. };
std::vector<double> weight = { 1.,1. };
std::vector<double> point = { -0.5773502692, 0.5773502692 };
	
double numeric::integration::gaussianQuadrature(xi, yi, weight, point);

Releases

No releases published

Packages

No packages published

Languages