<?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[TINV in C++]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich bin auf der Suche nach einer Funktion in C++, die die Inverse der kumulativen Verteilungsfunktion der student-t-Verteilung berechnet. In Excel und Matlab heissen die Funktionen TINV(), ich habe aber nach langem Suchen keine Implementierung in C++ gefunden.</p>
<p>Gibt es jemanden der eine Idee hat wo ich so eine Funktion herbekommen könnte?</p>
<p>Vielen Dank im Voraus!!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/307103/tinv-in-c</link><generator>RSS for Node</generator><lastBuildDate>Fri, 07 Aug 2026 18:05:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/307103.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 16 Aug 2012 16:54:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to TINV in C++ on Thu, 16 Aug 2012 16:54:08 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich bin auf der Suche nach einer Funktion in C++, die die Inverse der kumulativen Verteilungsfunktion der student-t-Verteilung berechnet. In Excel und Matlab heissen die Funktionen TINV(), ich habe aber nach langem Suchen keine Implementierung in C++ gefunden.</p>
<p>Gibt es jemanden der eine Idee hat wo ich so eine Funktion herbekommen könnte?</p>
<p>Vielen Dank im Voraus!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242563</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242563</guid><dc:creator><![CDATA[Tad]]></dc:creator><pubDate>Thu, 16 Aug 2012 16:54:08 GMT</pubDate></item><item><title><![CDATA[Reply to TINV in C++ on Thu, 16 Aug 2012 21:23:36 GMT]]></title><description><![CDATA[<p>Nicht verzagen, Wikipedia fragen!<br />
<a href="http://en.wikipedia.org/wiki/Quantile_function#Calculation" rel="nofollow">http://en.wikipedia.org/wiki/Quantile_function#Calculation</a><br />
Hmm, Wikipedia verweist auf Numerical Recipes <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /> .</p>
<p>Na gut: Nicht verzagen, Numerical Recipes fragen!</p>
<p>Wenn du diese Funktion dringend brauchst, dann solltest du (oder die Institution an der du arbeitest) sicherlich Numerical Recipes oder ein vergleichbares Buch in der Bibliothek stehen haben.</p>
<p>Kurz: Selber programmieren oder eine Statistikbibliothek suchen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242658</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242658</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 16 Aug 2012 21:23:36 GMT</pubDate></item><item><title><![CDATA[Reply to TINV in C++ on Thu, 16 Aug 2012 22:49:18 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Kurz: Selber programmieren oder eine Statistikbibliothek suchen.</p>
</blockquote>
<p>Boost scheint das zu können. Ich habe zwar selbst noch nicht damit gearbeitet, aber die Doku sieht vielversprechend aus. Es gibt <a href="http://www.boost.org/doc/libs/1_50_0/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/nmp.html" rel="nofollow">Verteilungsfunktionen</a> zu zahlreichen <a href="http://www.boost.org/doc/libs/1_50_0/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists.html" rel="nofollow">Verteilungen</a>, darunter auch der student_t-Verteilung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242670</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242670</guid><dc:creator><![CDATA[ananas]]></dc:creator><pubDate>Thu, 16 Aug 2012 22:49:18 GMT</pubDate></item><item><title><![CDATA[Reply to TINV in C++ on Thu, 16 Aug 2012 22:59:23 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;boost/math/distributions/students_t.hpp&gt;

// ...

boost::math::students_t dist(1.0);
double x = boost::math::quantile(dist, y);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2242671</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242671</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Thu, 16 Aug 2012 22:59:23 GMT</pubDate></item><item><title><![CDATA[Reply to TINV in C++ on Fri, 17 Aug 2012 17:10:43 GMT]]></title><description><![CDATA[<p>student_t_distribution gibt's doch sogar in der Standardbibliothek?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242918</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242918</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Fri, 17 Aug 2012 17:10:43 GMT</pubDate></item><item><title><![CDATA[Reply to TINV in C++ on Fri, 17 Aug 2012 18:08:04 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>student_t_distribution gibt's doch sogar in der Standardbibliothek?</p>
</blockquote>
<p>Ich bin ja immer wieder von C++11 überrascht, aber dies wäre mir doch völlig unbekannt und kann ich auch nicht finden. Ein Stichwort?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242941</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242941</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 17 Aug 2012 18:08:04 GMT</pubDate></item><item><title><![CDATA[Reply to TINV in C++ on Fri, 17 Aug 2012 18:18:12 GMT]]></title><description><![CDATA[<p><a href="http://en.cppreference.com/w/cpp/numeric/random/student_t_distribution" rel="nofollow">http://en.cppreference.com/w/cpp/numeric/random/student_t_distribution</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242943</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242943</guid><dc:creator><![CDATA[Caligulaminus]]></dc:creator><pubDate>Fri, 17 Aug 2012 18:18:12 GMT</pubDate></item><item><title><![CDATA[Reply to TINV in C++ on Fri, 17 Aug 2012 18:21:58 GMT]]></title><description><![CDATA[<p>Caligulaminus schrieb:</p>
<blockquote>
<p><a href="http://en.cppreference.com/w/cpp/numeric/random/student_t_distribution" rel="nofollow">http://en.cppreference.com/w/cpp/numeric/random/student_t_distribution</a></p>
</blockquote>
<p>Das ist aber ein Generator, nicht der Wert der Verteilungsfunktion.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242944</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242944</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 17 Aug 2012 18:21:58 GMT</pubDate></item><item><title><![CDATA[Reply to TINV in C++ on Fri, 17 Aug 2012 18:37:13 GMT]]></title><description><![CDATA[<p>Das war mehr ein Kommentar zu seldons Antwort. Ist boost::math::students_t etwas anderes als std::boost::math::student_t_distribution?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242947</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242947</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Fri, 17 Aug 2012 18:37:13 GMT</pubDate></item><item><title><![CDATA[Reply to TINV in C++ on Fri, 17 Aug 2012 18:46:02 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Das ist aber ein Generator</p>
</blockquote>
<p>Generator nicht. Das Ding ist für die Distribution zuständig.<br />
Aber wenn's am Thema vorbeigeht, will ich nichts gesagt haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242949</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242949</guid><dc:creator><![CDATA[Caligulaminus]]></dc:creator><pubDate>Fri, 17 Aug 2012 18:46:02 GMT</pubDate></item><item><title><![CDATA[Reply to TINV in C++ on Fri, 17 Aug 2012 18:49:50 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>Das war mehr ein Kommentar zu seldons Antwort. Ist boost::math::students_t etwas anderes als std::boost::math::student_t_distribution?</p>
</blockquote>
<p>Ja, das sind zwei ganz verschiedene Funktionalitäten. Das ist wie der Unterschied zwischen std::exponential_distribution und std::exp. Größer sogar noch, weil boost::math::students_t wesentlich mächtiger ist, als nur ein paar Funktionswerte zu berechnen.</p>
<p>Caligulaminus schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Das ist aber ein Generator</p>
</blockquote>
<p>Generator nicht. Das Ding ist für die Distribution zuständig.</p>
</blockquote>
<p>Wenn du dich an der Formulierung störst: Es ist ein Aufsatz für einen Zufallsgenerator.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242950</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242950</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 17 Aug 2012 18:49:50 GMT</pubDate></item><item><title><![CDATA[Reply to TINV in C++ on Fri, 17 Aug 2012 19:20:22 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>cooky451 schrieb:</p>
<blockquote>
<p>Das war mehr ein Kommentar zu seldons Antwort. Ist boost::math::students_t etwas anderes als std::boost::math::student_t_distribution?</p>
</blockquote>
<p>Ja, das sind zwei ganz verschiedene Funktionalitäten. Das ist wie der Unterschied zwischen std::exponential_distribution und std::exp.</p>
</blockquote>
<p>Hm.. okay, ich dachte es wäre ähnlich, weil er es &quot;dist&quot; genannt hat. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242958</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Fri, 17 Aug 2012 19:20:22 GMT</pubDate></item><item><title><![CDATA[Reply to TINV in C++ on Fri, 17 Aug 2012 21:22:25 GMT]]></title><description><![CDATA[<p>Super, vielen Dank! Ich werde dann einfach</p>
<pre><code class="language-cpp">boost::math::students_t TDist(NuT); // create t-distribution object
X = boost::math::quantile(TDist, Y);
</code></pre>
<p>benutzen. Das funktioniert in der Main() soweit jetzt auch, wie würde das dann in einer Klasse aussehen? Hintergrund ist, dass ich eine Klasse &quot;RVGenerator&quot; habe, die bei Aufruf von &quot;generateStudentT()&quot; einen t-verteilten Wert X zurückgibt:</p>
<pre><code class="language-cpp">class RVGenerator
{
public:  
boost::math::students_t TDist(double v);
double X;
double Y;
}
</code></pre>
<p>Hier der Konstruktor, der ein Objekt für die Verteilung erstellen soll:</p>
<pre><code class="language-cpp">RVGenerator::RVGenerator(double NuT)
{
boost::math::students_t TDist(NuT); // create t-distribution object
}
</code></pre>
<p>Und hier die Memberfunktion, die aus diesem Objekt dann die quantile()-Funktion aufrufen soll:</p>
<pre><code class="language-cpp">void RVGenerator::generateStudentT()
{
X = boost::math::quantile(TDist, Y);
}
</code></pre>
<p>So funktioniert das nicht, aber mit meinem Basiswissen was C++ anbetrifft weiss ich nicht was dort falsch sein sollte..?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242987</guid><dc:creator><![CDATA[Tad]]></dc:creator><pubDate>Fri, 17 Aug 2012 21:22:25 GMT</pubDate></item><item><title><![CDATA[Reply to TINV in C++ on Fri, 17 Aug 2012 21:36:53 GMT]]></title><description><![CDATA[<p>Wo bekommt Y seinen Wert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242990</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242990</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Fri, 17 Aug 2012 21:36:53 GMT</pubDate></item><item><title><![CDATA[Reply to TINV in C++ on Fri, 17 Aug 2012 22:32:57 GMT]]></title><description><![CDATA[<p>Y erstelle ich vorher mithilfe dem Zufallsgenerator MersenneTwister (Funktion genrand_real2()) und forme sie dann mit einem Algorithmus zu einer T-Verteilung um.<br />
Was mir auffällt ist, dass wenn (so wie oben) das Objekt &quot;boost::math::students_t TDist(NuT)&quot; im Konstruktor erstellt wird funktioniert es nicht. Wenn ich es jedoch jedes Mal in der Memberfunktion direkt vor der quantil-Funktion neu erstelle, funktioniert es.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2243000</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2243000</guid><dc:creator><![CDATA[Tad]]></dc:creator><pubDate>Fri, 17 Aug 2012 22:32:57 GMT</pubDate></item><item><title><![CDATA[Reply to TINV in C++ on Sat, 18 Aug 2012 08:02:49 GMT]]></title><description><![CDATA[<blockquote>
<p>RVGenerator::RVGenerator(double NuT)<br />
{<br />
boost::math::students_t TDist(NuT); // create t-distribution object<br />
}</p>
</blockquote>
<p>Du weißt schon, dass Du hier einfach ein lokales Objekt TDist erstellst, was nach dem constructor schon wieder stirbt? Es führt nicht zu Namenskonflikt, weil es in einem engeren Scope ist und somit (würdest Du es direkt nutzen) das Attribut TDist verdeckt.</p>
<p>Initialisiere TDist so:</p>
<pre><code class="language-cpp">RVGenerator::RVGenerator(double NuT)
    : TDist(NuT)
{
}
</code></pre>
<p>Zudem solltest Du Dir das Konzept Kapselung anschauen. Attribute sollten private sein. Benötigt eine andere Klasse Zugriff, gibt es dafür Getter und Setter.</p>
<pre><code class="language-cpp">boost::math::students_t TDist(double v);
</code></pre>
<p>Und wenn Du das so wie getan in die Klasse schreibst, ist es eine Funktionsdefinition. Weg mit dem (double v), dann deklarierst Du es als Attribut.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2243031</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2243031</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Sat, 18 Aug 2012 08:02:49 GMT</pubDate></item></channel></rss>