From dde42b7628265687db6bdeff7989eab33391a103 Mon Sep 17 00:00:00 2001 From: "g.mandl" Date: Wed, 22 Oct 2025 23:15:15 +0200 Subject: [PATCH] =?UTF-8?q?Dateien=20nach=20=E2=80=9EBSP=5F1=5FD=E2=80=9C?= =?UTF-8?q?=20hochladen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BSP_1_D/bsp_1_d.cbp | 40 ++++++++++++++++++++++++++++++++++++++++ BSP_1_D/bsp_1_d.cpp | 34 ++++++++++++++++++++++++++++++++++ BSP_1_D/bsp_1_d.h | 25 +++++++++++++++++++++++++ BSP_1_D/main.cpp | 28 ++++++++++++++++++++++++++++ 4 files changed, 127 insertions(+) create mode 100644 BSP_1_D/bsp_1_d.cbp create mode 100644 BSP_1_D/bsp_1_d.cpp create mode 100644 BSP_1_D/bsp_1_d.h create mode 100644 BSP_1_D/main.cpp diff --git a/BSP_1_D/bsp_1_d.cbp b/BSP_1_D/bsp_1_d.cbp new file mode 100644 index 0000000..b750014 --- /dev/null +++ b/BSP_1_D/bsp_1_d.cbp @@ -0,0 +1,40 @@ + + + + + + diff --git a/BSP_1_D/bsp_1_d.cpp b/BSP_1_D/bsp_1_d.cpp new file mode 100644 index 0000000..6125d10 --- /dev/null +++ b/BSP_1_D/bsp_1_d.cpp @@ -0,0 +1,34 @@ +#include "bsp_1_d.h" + +#include // assert() +#include + +using namespace std; + +double scalar(vector const &x, vector const &y) +{ + assert(x.size() == y.size()); // switch off via compile flag: -DNDEBUG + size_t const N = x.size(); + double sum = 0.0; + for (size_t i = 0; i < N; ++i) + { + sum += x[i] * y[i]; + } + return sum; +} + +double Kahan_skalar(vector const &x, vector const &y) +{ + assert(x.size() == y.size()); // switch off via compile flag: -DNDEBUG + size_t const N = x.size(); + double sum = 0.0; + double c = 0.0; + for (size_t i = 0; i < N; ++i) + { + double z = x[i]*y[i] - c; + double t = sum + z; + c = (t - sum) - z; + sum = t; + } + return sum; +} diff --git a/BSP_1_D/bsp_1_d.h b/BSP_1_D/bsp_1_d.h new file mode 100644 index 0000000..097ba0c --- /dev/null +++ b/BSP_1_D/bsp_1_d.h @@ -0,0 +1,25 @@ +#ifndef BSP_1_D_H_INCLUDED +#define BSP_1_D_H_INCLUDED + +#include + +/** \brief Berechnet das Skalarprodukt zweier Vektoren + * + * \param[in] x erster Vektor + * \param[in] y zweiter Vektor + * \return Skalarprodukt von @x und @y + * + */ +double scalar(std::vector const &x, std::vector const &y); + + +/** \brief Berechnet das Skalarprodukt zweier Vektoren unter Anwendung der Kahan-Summation + * + * \param[in] x erster Vektor + * \param[in] y zweiter Vektor + * \return Skalarprodukt von @x und @y + * + */ +double Kahan_skalar(std::vector const &x, std::vector const &y); + +#endif // BSP_1_D_H_INCLUDED diff --git a/BSP_1_D/main.cpp b/BSP_1_D/main.cpp new file mode 100644 index 0000000..d57d121 --- /dev/null +++ b/BSP_1_D/main.cpp @@ -0,0 +1,28 @@ +#include "bsp_1_d.h" +#include +#include +// BSP 1_D +using namespace std; + +int main() +{ + vector nvec{100,500,1000,10000,100000,1000000,10000000,100000000}; // Vektor mit verschiedene n zum Testen + double exact = M_PI*M_PI/6; + for(size_t k = 0; k x; + for(int i = 0; i