Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // MPI_TEST.cpp: Określa punkt wejścia dla aplikacji konsoli.
- //
- #include "stdafx.h"
- #include "mpi.h"
- #include <iostream>
- #include <vector>
- #include <stdio.h>
- #include <time.h>
- #include <Windows.h>
- #include <conio.h>
- //funkcja dla ktorej obliczamy calke
- double f(const double x)
- {
- return x * sin(x);
- }
- void calkowanie_prostokaty(float xp, float xk, int n)
- {
- float calka,h;
- // przedzialy
- h = (xk - xp) / (float)n;
- printf( "krok: h=%f \n", h);
- calka = 0;
- for (int i = 1; i <= n; i++)
- {
- calka += f(xp + i*h)*h;
- }
- printf("Wynik calkowania metoda prostokatow:%.6f \n",calka);
- }
- void calkowanie_trapezy(float xp, float xk, int n)
- {
- float calka,h;
- // przedzialy
- h = (xk - xp) / (float)n;
- printf("krok: h=%f \n", h);
- calka = 0;
- for (int i = 1; i<n; i++)
- {
- calka += f(xp + i * h);
- }
- calka += f(xp) / 2;
- calka += f(xk) / 2;
- calka *= h;
- printf("Wartosc calki wynosi w przyblizeniu %.6f\n", calka);
- }
- int main(int argc, char *argv[])
- {
- srand(time(NULL));
- int rank, size, i, n,k;
- float xp, xk, dx;
- MPI_Status stat; // Struktura statusu wiadomości
- MPI_Init(&argc, &argv); // Inicjalizowanie MPI
- MPI_Comm_size(MPI_COMM_WORLD, &size); // Pobieranie liczby wszystkich wątków;
- MPI_Comm_rank(MPI_COMM_WORLD, &rank); // Pobieranie numeru dla danego wątku;
- printf("liczba watkow :%d \n",size);
- printf("Podaj poczatek przedzialu calkowania\n");
- scanf("%f", &xp);
- printf("Podaj koniec przedzialu calkowania\n");
- scanf("%f", &xk);
- printf("Podaj dokladnosc(czy to jest szerokośc przedizału to ja nie wiem) calkowania\n");
- scanf("%d", &n);
- float czasA, czasB;
- while (1)
- {
- printf("Podaj metode calkowania 1- trapezowa 2- prostokatna\n");
- scanf("%d", &k);
- if (k == 1)
- {
- czasA = GetTickCount();
- calkowanie_trapezy(xp, xk, n);
- czasB = GetTickCount();
- printf("Wykonywanie zajęło %.6f ms\n", czasB - czasA);
- }
- if (k == 2)
- {
- czasA = GetTickCount();
- calkowanie_prostokaty(xp, xk, n);
- czasB = GetTickCount();
- printf("Wykonywanie zajęło %.6f ms\n", czasB - czasA);
- }
- }
- MPI_Finalize(); // Zamykanie MPI
- _getch();
- return (0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement