<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Runge-Kutta-Verfahren]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich wollte gerade meine Klassen zum Lösen gewöhnlicher DGL'en überarbeiten, dazu gehören auch Runge-Kutta-Verfahren:</p>
\par  
u\_0 = y\_0 \par  
u_{j+1} = u\_j + h \sum\_{i=1}^m A\_i k\_i \par  
k\_1 = f(t\_j, y_j) \par  
k\_2 = f(t\_j + a\_2 h, u\_j + h b_{21}k_1) \par  
k\_3 = f(t\_j + a\_3 h, u\_j + h(b_{31}k\_1 + b\_{32}k_2) \par  
... \par  
k\_m = f(t\_j + a\_m h, u\_j + h \sum_{i=1}^{m-1} b_{mi}k_i) \par
<p>Allerdings will ich für die verschiedenen Verfahren nicht immer alles neu schreiben, deshalb habe ich das bis jetzt so gelöst:</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
	class KuttaNystroem
	{
		protected:
			static const size_t order;
			static const T A[];
			static const T a[];
			static const T b[];
	};

	template &lt;typename T&gt;
	const size_t KuttaNystroem&lt;T&gt;::order = 6;

	template &lt;typename T&gt;
	const T KuttaNystroem&lt;T&gt;::A[] =
	{ ... }; 

	template &lt;typename T&gt;
	const T KuttaNystroem&lt;T&gt;::a[] =
	{ ... };

	template &lt;typename T&gt;
	const T KuttaNystroem&lt;T&gt;::b[] =
	{ ... };
	//------------------------------

	template &lt;typename T&gt;
	class England1
	{
		...
	}
</code></pre>
<p>Und die Implementierung des Verfahrens:</p>
<pre><code class="language-cpp">template
	&lt;
		typename T,
		template&lt;typename&gt; class Method = ClassicRK
	&gt;
	class RungeKutta : public Method&lt;T&gt;
	{
		... 
	};
</code></pre>
<p>Ist das so sinnvoll, oder könnte man das irgendwie besser lösen? Wie würdet ihr das machen? Es geht mir vor allem die Speicherung der Koeffizienten.</p>
<p>Danke im voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/123077/runge-kutta-verfahren</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 10:34:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/123077.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 12 Oct 2005 16:36:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Runge-Kutta-Verfahren on Wed, 12 Oct 2005 16:36:56 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich wollte gerade meine Klassen zum Lösen gewöhnlicher DGL'en überarbeiten, dazu gehören auch Runge-Kutta-Verfahren:</p>
\par  
u\_0 = y\_0 \par  
u_{j+1} = u\_j + h \sum\_{i=1}^m A\_i k\_i \par  
k\_1 = f(t\_j, y_j) \par  
k\_2 = f(t\_j + a\_2 h, u\_j + h b_{21}k_1) \par  
k\_3 = f(t\_j + a\_3 h, u\_j + h(b_{31}k\_1 + b\_{32}k_2) \par  
... \par  
k\_m = f(t\_j + a\_m h, u\_j + h \sum_{i=1}^{m-1} b_{mi}k_i) \par
<p>Allerdings will ich für die verschiedenen Verfahren nicht immer alles neu schreiben, deshalb habe ich das bis jetzt so gelöst:</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
	class KuttaNystroem
	{
		protected:
			static const size_t order;
			static const T A[];
			static const T a[];
			static const T b[];
	};

	template &lt;typename T&gt;
	const size_t KuttaNystroem&lt;T&gt;::order = 6;

	template &lt;typename T&gt;
	const T KuttaNystroem&lt;T&gt;::A[] =
	{ ... }; 

	template &lt;typename T&gt;
	const T KuttaNystroem&lt;T&gt;::a[] =
	{ ... };

	template &lt;typename T&gt;
	const T KuttaNystroem&lt;T&gt;::b[] =
	{ ... };
	//------------------------------

	template &lt;typename T&gt;
	class England1
	{
		...
	}
</code></pre>
<p>Und die Implementierung des Verfahrens:</p>
<pre><code class="language-cpp">template
	&lt;
		typename T,
		template&lt;typename&gt; class Method = ClassicRK
	&gt;
	class RungeKutta : public Method&lt;T&gt;
	{
		... 
	};
</code></pre>
<p>Ist das so sinnvoll, oder könnte man das irgendwie besser lösen? Wie würdet ihr das machen? Es geht mir vor allem die Speicherung der Koeffizienten.</p>
<p>Danke im voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/890810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/890810</guid><dc:creator><![CDATA[fubar]]></dc:creator><pubDate>Wed, 12 Oct 2005 16:36:56 GMT</pubDate></item></channel></rss>