diff options
author | Joshua Baer <joshua.baer@ost.ch> | 2022-07-26 09:31:45 +0200 |
---|---|---|
committer | Joshua Baer <joshua.baer@ost.ch> | 2022-07-26 09:31:45 +0200 |
commit | cf5f773ad34a838a729e06add110522c65d8b34a (patch) | |
tree | 0aeb61050db945cadb59852891bb38851eabacbc /buch/papers/0f1/listings | |
parent | svae between (diff) | |
parent | Merge pull request #29 from p1mueller/master (diff) | |
download | SeminarSpezielleFunktionen-cf5f773ad34a838a729e06add110522c65d8b34a.tar.gz SeminarSpezielleFunktionen-cf5f773ad34a838a729e06add110522c65d8b34a.zip |
Merge branch 'master' of github.com:JODBaer/SeminarSpezielleFunktionen
Diffstat (limited to '')
-rw-r--r-- | buch/papers/0f1/listings/kettenbruchIterativ.c | 45 | ||||
-rw-r--r-- | buch/papers/0f1/listings/kettenbruchRekursion.c | 19 | ||||
-rw-r--r-- | buch/papers/0f1/listings/potenzreihe.c | 13 |
3 files changed, 77 insertions, 0 deletions
diff --git a/buch/papers/0f1/listings/kettenbruchIterativ.c b/buch/papers/0f1/listings/kettenbruchIterativ.c new file mode 100644 index 0000000..befea8e --- /dev/null +++ b/buch/papers/0f1/listings/kettenbruchIterativ.c @@ -0,0 +1,45 @@ +static double fractionRekursion0f1(const double c, const double x, unsigned int n)
+{
+ double a = 0.0;
+ double b = 0.0;
+ double Ak = 0.0;
+ double Bk = 0.0;
+ double Ak_1 = 0.0;
+ double Bk_1 = 0.0;
+ double Ak_2 = 0.0;
+ double Bk_2 = 0.0;
+
+ for (unsigned int k = 0; k <= n; ++k)
+ {
+ if (k == 0)
+ {
+ a = 1.0; //a0
+ //recursion fomula for A0, B0
+ Ak = a;
+ Bk = 1.0;
+ }
+ else if (k == 1)
+ {
+ a = 1.0; //a1
+ b = x/c; //b1
+ //recursion fomula for A1, B1
+ Ak = a * Ak_1 + b * 1.0;
+ Bk = a * Bk_1;
+ }
+ else
+ {
+ a = 1 + (x / (k * ((k - 1) + c)));//ak
+ b = -(x / (k * ((k - 1) + c))); //bk
+ //recursion fomula for Ak, Bk
+ Ak = a * Ak_1 + b * Ak_2;
+ Bk = a * Bk_1 + b * Bk_2;
+ }
+ //save old values
+ Ak_2 = Ak_1;
+ Bk_2 = Bk_1;
+ Ak_1 = Ak;
+ Bk_1 = Bk;
+ }
+ //approximation fraction
+ return Ak/Bk;
+}
diff --git a/buch/papers/0f1/listings/kettenbruchRekursion.c b/buch/papers/0f1/listings/kettenbruchRekursion.c new file mode 100644 index 0000000..958d4e1 --- /dev/null +++ b/buch/papers/0f1/listings/kettenbruchRekursion.c @@ -0,0 +1,19 @@ +static double fractionIter0f1(const double b0, const double z, unsigned int n)
+{
+ double a = 0.0;
+ double b = 0.0;
+ double abn = 0.0;
+ double temp = 0.0;
+
+ for (; n > 0; --n)
+ {
+ abn = z / (n * ((n - 1) + b0)); //abn = ak, bk
+
+ a = n > 1 ? (1 + abn) : 1; //a0, a1
+ b = n > 1 ? -abn : abn; //b1
+
+ temp = b / (a + temp);
+ }
+
+ return a + temp; //a0 + temp
+}
\ No newline at end of file diff --git a/buch/papers/0f1/listings/potenzreihe.c b/buch/papers/0f1/listings/potenzreihe.c new file mode 100644 index 0000000..bfaa0e3 --- /dev/null +++ b/buch/papers/0f1/listings/potenzreihe.c @@ -0,0 +1,13 @@ +#include <math.h>
+
+static double powerseries(const double b, const double z, unsigned int n)
+{
+ double temp = 0.0;
+
+ for (unsigned int k = 0; k < n; ++k)
+ {
+ temp += pow(z, k) / (factorial(k) * pochhammer(b, k));
+ }
+
+ return temp;
+}
\ No newline at end of file |