<?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[Vorzeichen einer Determinante, numerische Lib]]></title><description><![CDATA[<p>Hallo,</p>
<p>welche Möglichkeiten gibt es, um das _Vorzeichen_ der Determinante einer 4x4-<br />
Matrix trotz Rundungsfehlern genau zu bestimmen? Der Zahlentyp ist 'double'.<br />
Grundsätzlich exakte Zahlen aus GMP zu verwenden, bloß weil die Genauigkeit<br />
in seltenen Fällen nicht ausreicht, ist zu langsam. Ich suche etwas in der<br />
Größenordnung von Boost, Lapack, ... Wer kann sowas?</p>
<p>Danke,</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/281059/vorzeichen-einer-determinante-numerische-lib</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 20:00:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/281059.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 26 Jan 2011 09:54:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vorzeichen einer Determinante, numerische Lib on Wed, 26 Jan 2011 09:54:32 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>welche Möglichkeiten gibt es, um das _Vorzeichen_ der Determinante einer 4x4-<br />
Matrix trotz Rundungsfehlern genau zu bestimmen? Der Zahlentyp ist 'double'.<br />
Grundsätzlich exakte Zahlen aus GMP zu verwenden, bloß weil die Genauigkeit<br />
in seltenen Fällen nicht ausreicht, ist zu langsam. Ich suche etwas in der<br />
Größenordnung von Boost, Lapack, ... Wer kann sowas?</p>
<p>Danke,</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2012362</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2012362</guid><dc:creator><![CDATA[det]]></dc:creator><pubDate>Wed, 26 Jan 2011 09:54:32 GMT</pubDate></item><item><title><![CDATA[Reply to Vorzeichen einer Determinante, numerische Lib on Wed, 26 Jan 2011 10:11:41 GMT]]></title><description><![CDATA[<p>Kannst du mal sagen, wozu du das brauchst? Es scheint mir nicht sinnvoll zu sein, das Vorzeichen der Determinanten &quot;genau trotz Rundungsfehlern&quot; zu bestimmen und dann ganz normal mit der Matrix weiterzurechnen. Wenn das Vorzeichen instabil ist, dann ist die Matrix annähernd singulär und wird dir trotzdem weiter Probleme machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2012374</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2012374</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Wed, 26 Jan 2011 10:11:41 GMT</pubDate></item><item><title><![CDATA[Reply to Vorzeichen einer Determinante, numerische Lib on Wed, 26 Jan 2011 11:16:03 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>Kannst du mal sagen, wozu du das brauchst? Es scheint mir nicht sinnvoll zu sein, das Vorzeichen der Determinanten &quot;genau trotz Rundungsfehlern&quot; zu bestimmen und dann ganz normal mit der Matrix weiterzurechnen. Wenn das Vorzeichen instabil ist, dann ist die Matrix annähernd singulär und wird dir trotzdem weiter Probleme machen.</p>
</blockquote>
<p>Ein Studienprojekt. Mit der Matrix wird nicht weitergerechnet, das Vorzeichen<br />
ist bereits das gewünschte Ergebnis.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2012405</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2012405</guid><dc:creator><![CDATA[det]]></dc:creator><pubDate>Wed, 26 Jan 2011 11:16:03 GMT</pubDate></item><item><title><![CDATA[Reply to Vorzeichen einer Determinante, numerische Lib on Fri, 28 Jan 2011 13:32:27 GMT]]></title><description><![CDATA[<p>Gibts da gar nichts?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2013583</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2013583</guid><dc:creator><![CDATA[det]]></dc:creator><pubDate>Fri, 28 Jan 2011 13:32:27 GMT</pubDate></item><item><title><![CDATA[Reply to Vorzeichen einer Determinante, numerische Lib on Fri, 28 Jan 2011 14:15:34 GMT]]></title><description><![CDATA[<p>Abgesehen davon, dass ich den Sinn in der Übung nicht sehe ...</p>
<p>1. Determinanten berechnet man am besten über eine Zerlegung der Matrix (QR-Zerlegung oder LU-Zerlegung). Die Determinante einer Dreiecksmatrix ist nämlich das Produkt der Diagonalelemente. Zeilenvertauschung bedeutet Negation der Determinante. etc etc etc.</p>
<p>2. Exaktheit. Du wirst in einigen Fällen nicht um so etwas wie GMP rumkommen. Dazu kannst Du die double-Werte als Brüche darstellen und exakt in Q (Menge der rationalen Zahlen) rechnen. In vielen Fällen wird das Ergebnis, also das Vorzeichen der Determinante, nicht anders aussehen, als wenn Du normal mit doubles rechnen würdest. Um zu erkennen, welche Fälle das sind, kannst Du Boost.Interval verwenden. Per Interval-Arithmetik kannst Du ein Interval bestimmen, in dem die Determinante mit Sicherheit drin liegt. Sind die Intervallgrenzen beide positiv, ist die Determinante sicher positiv. Sind sie beide negativ, ist die Det sicher negativ. Hast Du eine positive und eine negative Intervall-Grenze, so müsstest Du die exakte Berechnung anschmeißen, um zum richtigen Ergebnis zu kommen. Ich würde erwarten, dass Du die meisten Fälle über <a href="http://de.wikipedia.org/wiki/Intervallarithmetik" rel="nofollow">Interval-Arithmetik</a> erschlagen kannst. Das sollte auch effizienter sein, als die exakte Berechnung der Determinante.</p>
<p>Also, mit anderen Worten, Interval-Arithmetik sollte verhältnismäßig schnell sein und in diesem Fall zu einer von drei Antworten führen:<br />
- Determinante ist positiv<br />
- Determinante ist negativ<br />
- Vorzeichen der Determinante ist nicht bekannt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2013596</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2013596</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Fri, 28 Jan 2011 14:15:34 GMT</pubDate></item><item><title><![CDATA[Reply to Vorzeichen einer Determinante, numerische Lib on Fri, 28 Jan 2011 20:04:18 GMT]]></title><description><![CDATA[<p>krümelkacker schrieb:</p>
<blockquote>
<p>Per Interval-Arithmetik kannst Du ein Interval bestimmen, in dem die Determinante mit Sicherheit drin liegt.</p>
</blockquote>
<p>Super, das habe ich gesucht, danke. Ich habe Boost.Interval schon mal gesehen<br />
aber selbst nicht die Verbindung hergestellt, daß es genau dieses Problem löst <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Neben dem dynamischen Mitrechnen des maximalen Fehlers wäre nun noch ein<br />
statischer Test gut. So könnte man einen dreistufigen Prozeß machen, der<br />
zuerst mit double rechnet. Wenn fabs(result)&gt;errorBound, dann ist das Ergebnis<br />
zuverlässig, sonst rechnet man mit Intervall-Arithmetik. Versagt auch dieser<br />
Filter, dann fällt man erst auf exakte Arithmetik zurück. Bloß müßte man dann<br />
den Wert errorBound anhand der übelsten zu erwartenden Werte festlegen. Das<br />
dürfte komplex sein.</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2013730</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2013730</guid><dc:creator><![CDATA[det]]></dc:creator><pubDate>Fri, 28 Jan 2011 20:04:18 GMT</pubDate></item></channel></rss>