<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://patrius.cnes.fr/index.php?action=history&amp;feed=atom&amp;title=User_Manual_4.13_Matrices</id>
	<title>User Manual 4.13 Matrices - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://patrius.cnes.fr/index.php?action=history&amp;feed=atom&amp;title=User_Manual_4.13_Matrices"/>
	<link rel="alternate" type="text/html" href="https://patrius.cnes.fr/index.php?title=User_Manual_4.13_Matrices&amp;action=history"/>
	<updated>2026-04-04T05:39:22Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://patrius.cnes.fr/index.php?title=User_Manual_4.13_Matrices&amp;diff=3608&amp;oldid=prev</id>
		<title>Admin le 19 décembre 2023 à 16:11</title>
		<link rel="alternate" type="text/html" href="https://patrius.cnes.fr/index.php?title=User_Manual_4.13_Matrices&amp;diff=3608&amp;oldid=prev"/>
		<updated>2023-12-19T16:11:57Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 19 décembre 2023 à 16:11&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l165&quot;&gt;Ligne 165 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 165 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Matrix3D transposed_matrix3d = matrix3d.transpose();&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Matrix3D transposed_matrix3d = matrix3d.transpose();&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* minimum&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;syntaxhighlight lang=&quot;java&quot;&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;double min = matrix3d.getMin();&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* maximum&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;syntaxhighlight lang=&quot;java&quot;&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;double max = matrix3d.getMax();&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* absolute values&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;syntaxhighlight lang=&quot;java&quot;&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;RealMatrix abs_matrix3d = matrix3d.getAbs();&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l355&quot;&gt;Ligne 355 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 373 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Interface for symmetric matrices.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Interface for symmetric matrices.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/math/linear/SymmetricMatrix.html ...]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/math/linear/SymmetricMatrix.html ...]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|&#039;&#039;&#039;SymmetricPositiveMatrix&#039;&#039;&#039; &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| Interface for symmetric positive matrices.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/math/linear/SymmetricPositiveMatrix.html ...]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|&amp;#039;&amp;#039;&amp;#039;Decomposition&amp;#039;&amp;#039;&amp;#039;  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|&amp;#039;&amp;#039;&amp;#039;Decomposition&amp;#039;&amp;#039;&amp;#039;  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key w3?hpatrius?hprod:diff:1.41:old-3576:rev-3608:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://patrius.cnes.fr/index.php?title=User_Manual_4.13_Matrices&amp;diff=3576&amp;oldid=prev</id>
		<title>Admin : Page créée avec « __NOTOC__  == Introduction == === Scope === This section will focus on the following aspects :  * Matrix3D and Vector3D * Generic Matrices * UD Decomposition  === Javadoc... »</title>
		<link rel="alternate" type="text/html" href="https://patrius.cnes.fr/index.php?title=User_Manual_4.13_Matrices&amp;diff=3576&amp;oldid=prev"/>
		<updated>2023-12-19T13:52:29Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « __NOTOC__  == Introduction == === Scope === This section will focus on the following aspects :  * Matrix3D and Vector3D * Generic Matrices * UD Decomposition  === Javadoc... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;__NOTOC__ &lt;br /&gt;
== Introduction ==&lt;br /&gt;
=== Scope ===&lt;br /&gt;
This section will focus on the following aspects :&lt;br /&gt;
&lt;br /&gt;
* Matrix3D and Vector3D&lt;br /&gt;
* Generic Matrices&lt;br /&gt;
* UD Decomposition&lt;br /&gt;
&lt;br /&gt;
=== Javadoc ===&lt;br /&gt;
The relevant packages are documented here :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Library&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Javadoc&lt;br /&gt;
|-&lt;br /&gt;
| Patrius&lt;br /&gt;
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/math/linear/package-summary.html Package fr.cnes.sirius.patrius.math.linear]&lt;br /&gt;
|-&lt;br /&gt;
| Patrius&lt;br /&gt;
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/math/geometry/euclidean/threed/package-summary.html Package fr.cnes.sirius.patrius.math.geometry.euclidean.threed]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
None as of now.&lt;br /&gt;
&lt;br /&gt;
=== Useful Documents ===&lt;br /&gt;
None as of now.&lt;br /&gt;
&lt;br /&gt;
=== Packages Overview ===&lt;br /&gt;
The matrices functionality can be found in the following packages :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;fr.cnes.sirius.patrius.math.geometry.euclidean.threed&amp;lt;/code&amp;gt; for Vector3D, Matrix3D&lt;br /&gt;
* &amp;lt;code&amp;gt;fr.cnes.sirius.patrius.math.linear&amp;lt;/code&amp;gt; for RealMatrix, AbstractRealMatrix, Array2DRowRealMatrix, UDDecomposition, UDDecompositionImpl ...&lt;br /&gt;
&lt;br /&gt;
Please note that not all implementations are present in the following diagram for the sake of clarity.&lt;br /&gt;
&lt;br /&gt;
[[File:PATRIMOINESIRIUSDiagrammeMUmatricesgeneriques.png]]&lt;br /&gt;
&lt;br /&gt;
== Features Description ==&lt;br /&gt;
=== The Matrix3D class ===&lt;br /&gt;
The Matrix3D is a real matrix designed to be used in geometric calculations. The Matrix3D is compatible with the Vector3D type, unlike the matrices implemented in the package &amp;quot;linear&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The packages &amp;quot;linear&amp;quot; and &amp;quot;geometry&amp;quot; both contains classes to represent vectors and matrices, but without any compatibility (for example, the &amp;quot;multiply&amp;quot; methods availables in the generic real matrices only accept the objects from the &amp;quot;linear&amp;quot; package).&lt;br /&gt;
&lt;br /&gt;
To make possible the operations using both types of vectors and matrices, a constructor and a getter are added to the Vector3D and Matrix3D classes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The constructor creates the object from a similar one (containing the same data) from the &amp;quot;linear&amp;quot; package.&lt;br /&gt;
&lt;br /&gt;
For vectors :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ArrayRealVector realVector = new ArrayRealVector(data);&lt;br /&gt;
Vector3D vector3D = new Vector3D(realVector);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For matrices, the operation is described in the previous paragraph.&lt;br /&gt;
&lt;br /&gt;
This construction works only if the generic real vectors and matrices dimensions are right (3 for the vectors and 3x3 for the matrices).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The getters are : &amp;quot;getRealMatrix()&amp;quot; in the Matrix3D class and &amp;quot;getRealVector()&amp;quot; in the Vector3D class. They return the generic objects containing identical data.&lt;br /&gt;
&lt;br /&gt;
=== Generic real matrices ===&lt;br /&gt;
The library also provides generic representations of real matrices, of any size.&lt;br /&gt;
&lt;br /&gt;
The RealMatrix interface presents the following services :&lt;br /&gt;
&lt;br /&gt;
* usual operations (adding, multiplying)&lt;br /&gt;
* extraction of submatrices&lt;br /&gt;
* symmetry and antisymmetry tests&lt;br /&gt;
* orthogonality tests&lt;br /&gt;
* diagonality tests&lt;br /&gt;
* invertibility tests&lt;br /&gt;
&lt;br /&gt;
The Array2DRowRealMatrix is one available implementation for generic real matrices.&lt;br /&gt;
&lt;br /&gt;
=== Decompositions ===&lt;br /&gt;
&lt;br /&gt;
PATRIUS provides several ways for matrix decomposition. Interface for decomposition is &amp;lt;code&amp;gt;Decomposition&amp;lt;/code&amp;gt;.&lt;br /&gt;
A decomposition provides a way to:&lt;br /&gt;
* Inverse a matrix&lt;br /&gt;
* Separate a matrix into a product of specific matrices (orthogonal, upper triangular, etc.) depending on the solver type.&lt;br /&gt;
Standard decomposition in PATRIUS are:&lt;br /&gt;
* &amp;lt;code&amp;gt;QRDecomposition&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;LUDecomposition&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;CholeskyDecomposition&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;SingularValueDecomposition&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;UDDecompositionImpl&amp;lt;/code&amp;gt;&lt;br /&gt;
RealMatrix interface possesses a method to get its inverse. If not provided, by default a &amp;lt;code&amp;gt;LUDecomposition&amp;lt;/code&amp;gt;is used.&lt;br /&gt;
&lt;br /&gt;
==== Exemple with UD decomposition ====&lt;br /&gt;
The library can compute the UD decomposition of a matrix.&lt;br /&gt;
&lt;br /&gt;
The UD-decomposition of the matrix A is a set of three matrices such that A = UxDxU^^t^^ with :&lt;br /&gt;
&lt;br /&gt;
* U is an upper triangular matrix,&lt;br /&gt;
* D is a diagonal matrix,&lt;br /&gt;
*  U^^t^^ is the transpose of U.&lt;br /&gt;
&lt;br /&gt;
=== Symmetric matrices ===&lt;br /&gt;
&lt;br /&gt;
Symmetric matrices are handled through the generic &amp;lt;code&amp;gt;SymmetricMatrix&amp;lt;/code&amp;gt; interface.&lt;br /&gt;
An implementation is provided: &amp;lt;code&amp;gt;ArrayRowSymmetricMatrix&amp;lt;/code&amp;gt;. This implementation optimally stores data in one single 1D-array.&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
&lt;br /&gt;
=== Matrix3D and Vector3D ===&lt;br /&gt;
==== The Matrix3D class ====&lt;br /&gt;
&lt;br /&gt;
A Matrix3D instance be constructed from doubles :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
double[][] data = { {1d,2d,3d}, {2d,5d,3d}, {1d,0d,8d} };&lt;br /&gt;
&lt;br /&gt;
Matrix3D matrix3d = new Matrix3D(data);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or from a RealMatrix :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Array2DRowRealMatrix matrixCM = new Array2DRowRealMatrix(data);&lt;br /&gt;
&lt;br /&gt;
Matrix3D matrix3D = new Matrix3D(matrixCM);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the RealMatrix or data dimensions are not 3x3, a MathIllegalArgumentException is thrown.&lt;br /&gt;
&lt;br /&gt;
Some basic methods are available in it :&lt;br /&gt;
&lt;br /&gt;
* Matrix3D / Matrix3D addition&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Matrix3D matrix3d_result = matrix3d_1.add(matrix3d_2);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Matrix3D / Matrix3D subtraction&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Matrix3D matrix3d_result = matrix3d_1.subtract(matrix3d_2);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Matrix3D / Matrix3D multiplication&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Matrix3D matrix3d_result = matrix3d_1.multiply(matrix3d_2);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Matrix3D / Vector3D multiplication&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Vector3D vector3d_result = matrix3d.multiply(vector3d);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Matrix3D / double multiplication&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Matrix3D matrix3d_result = matrix3d.multiply(2.0);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* transposition&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Matrix3D transposed_matrix3d = matrix3d.transpose();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* transposition and Matrix3D / Vector3D multiplication&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Vector3D vector3d_result = matrix3d.transposeAndMultiply(vector3d);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* test : orthogonal matrix ? Uses the same-named function in AbstractRealMatrix : same principle, same use.&lt;br /&gt;
&lt;br /&gt;
* getRealMatrix : returns an Array2dRowRealMatrix with the same data in it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
RealMatrix realmatrix = matrix3d.getRealMatrix();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* toString : creates a string containing all the values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; final Matrix3D matrix = new Matrix3D(testData);&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
returns &amp;lt;code&amp;gt;&amp;quot;Matrix3D{{1.0,2.0,3.0},{2.0,5.0,3.0},{1.0,0.0,8.0}}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Generic matrices ===&lt;br /&gt;
==== The AbstractRealMatrix class ====&lt;br /&gt;
&lt;br /&gt;
===== Symmetry and antisymmetry tests =====&lt;br /&gt;
&lt;br /&gt;
The RealMatrix interface and the AbstractRealMatrix abstract class contain the two methods isSymmetric and isAntisymmetric to test if a real matrix is symmetric or antisymmetric:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Array2DRowRealMatrix sym = new Array2DRowRealMatrix(symmetricData);&lt;br /&gt;
&lt;br /&gt;
boolean isSymmetric = sym.isSymmetric() ;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The returned boolean is TRUE if the matrix is symmetric. The equality test made on each value uses the MathUtils.equalsWithRelativeTolerance method, with an algorithm using a relative threshold  described in the “Doubles Values Comparisons” paragraph of the SUM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
isAntisymmetric needs a threshold given by the user for the comparisons the zero of the diagonal values. This threshold can be taken as MathUtils.DOUBLES_COMPARISON_EPSILON for standard cases.&lt;br /&gt;
&lt;br /&gt;
But if the matrix contains values closer to zero than this epsilon (1.0e-14), the user shall define their own threshold.&lt;br /&gt;
&lt;br /&gt;
For the rest of the values tested (other than the diagonal), the same method as in isSymmetric is used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Array2DRowRealMatrix antisym = new Array2DRowRealMatrix(antisymmetricData);&lt;br /&gt;
&lt;br /&gt;
boolean isAntisymmetric = antisym.isAntisymmetric(Precision.DOUBLE_COMPARISON_EPSILON) ;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The returned boolean is TRUE if the matrix is antisymmetric.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Orthogonal test =====&lt;br /&gt;
&lt;br /&gt;
In order to know if a real matrix is orthogonal, one can use the method isOrthogonal(), this method checks if the column vectors form an orthonormal set :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
        double[][] orthogonalMatrix = {{ 8.0 / 9.0, 1.0 / 9.0,-4.0 / 9.0 },&lt;br /&gt;
                {-4.0 / 9.0, 4.0 / 9.0, -7.0 / 9.0 },&lt;br /&gt;
                { 1.0 / 9.0, 8.0 / 9.0, 4.0 / 9.0 }};&lt;br /&gt;
        RealMatrix matrix = new Array2DRowRealMatrix(orthogonalMatrix);&lt;br /&gt;
        matrix.isOrthogonal(Precision.EPSILON, Precision.EPSILON));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Of course, because a matrix usually results from several operations which can introduce numerical errors, one has to give 2 thresholds under which the matrix is considered to be orthogonal. These thresholds concern the normality and the orthogonality of the column vectors of the matrix.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Diagonal test =====&lt;br /&gt;
&lt;br /&gt;
In order to know if a real matrix is diagonal, one can use the method isDiagonal() :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
        double[][] diagonalMatrix = {{ 4.0, 0.0, 0.0, 0.0 },&lt;br /&gt;
                { 0.0,-1.0, 0.0, 0.0 },&lt;br /&gt;
                { 0.0, 0.0, 5.0, 0.0 },&lt;br /&gt;
                {0.0, 0.0, 0.0, 9.0 }};&lt;br /&gt;
        RealMatrix matrix = new Array2DRowRealMatrix(diagonalMatrix);&lt;br /&gt;
        matrix.isDiagonal(Precision.EPSILON);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Of course, because a matrix usually results from several operations which can introduce numerical errors, one has to give a threshold under which the non diagonal elements are considered to be zero ie the matrix is considered to be diagonal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Invertible test =====&lt;br /&gt;
&lt;br /&gt;
In order to know if a real matrix is invertible, one can use the method isInvertible(), this method checks if the n column vectors form a basis of Rn :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
        double[][] nonSingularMatrix = {{ 4.0, 2.0,-1.5, 2.0 },&lt;br /&gt;
                { 6.0, 8.0, 2.1, 2.5 },&lt;br /&gt;
                { 2.0, 1.0,-0.75, 1.0 },&lt;br /&gt;
                {-1.0, 0.0, 0.0, -0.5 }};&lt;br /&gt;
        RealMatrix matrix = new Array2DRowRealMatrix(nonSingularMatrix);&lt;br /&gt;
        matrix.isInvertible(Precision.EPSILON);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Of course, because a matrix usually results from several operations which can introduce numerical errors, one has to give a threshold under which the column vectors are considered linearly dependant.&lt;br /&gt;
&lt;br /&gt;
=== UD decomposition ===&lt;br /&gt;
==== The UDDecompositionImpl class ====&lt;br /&gt;
&lt;br /&gt;
The UDDecompositionImpl class is the one performing the UD-decomposition of a matrix.&lt;br /&gt;
&lt;br /&gt;
If the RealMatrix A is not square, a NonSquareMatrixException is thrown.&lt;br /&gt;
If the RealMatrix A is not symmetric, a NonSymmetricMatrixException is thrown.&lt;br /&gt;
If the RealMatrix A is not positive definite, a NonPositiveDefiniteMatrixException is thrown.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Two constructors are available :&lt;br /&gt;
&lt;br /&gt;
* default constructor :&lt;br /&gt;
&amp;lt;code&amp;gt;UDDecompositionImpl(matrix,relativeSymmetryThreshold,absolutePositivityThreshold)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;matrix&amp;#039;&amp;#039;&amp;#039; = matrix to factorize,&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;relativeSymmetryThreshold&amp;#039;&amp;#039;&amp;#039; = threshold above which off-diagonal elements are considered too different and matrix not symmetric,&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;absolutePositivityThreshold&amp;#039;&amp;#039;&amp;#039; = threshold below which diagonal elements are considered null and matrix not positive definite&lt;br /&gt;
&lt;br /&gt;
* basic constructor :&lt;br /&gt;
&amp;lt;code&amp;gt;UDDecompositionImpl(matrix)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;matrix&amp;#039;&amp;#039;&amp;#039; = matrix to factorize with relativeSymmetryThreshold = DEFAULT_RELATIVE_SYMMETRY_THRESHOLD (1.0e-15) and absolutePositivityThreshold = DEFAULT_ABSOLUTE_POSITIVITY_THRESHOLD (0.0)&lt;br /&gt;
&lt;br /&gt;
The following methods are available in it :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
final UDDecomposition udut = new UDDecompositionImpl(matrix);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* get the U matrix&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
RealMatrix Umatrix = udut.getU();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* get the D matrix&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
RealMatrix Dmatrix = udut.getD();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* get the U^^t^^ matrix&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
RealMatrix UTmatrix = udut.getUT();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* get the determinant&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
double d = udut.getDeterminant();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* get the solver based on the UD decomposition&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
DecompositionSolver s = udut.getSolver();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Contents ==&lt;br /&gt;
=== Interfaces ===&lt;br /&gt;
The most relevant interfaces related to matrices are listed here :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Interface&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Summary&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Javadoc&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Vector&amp;lt;S extends Space&amp;gt;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|This interface represents a generic vector in a vectorial space or a point in an affine space.&lt;br /&gt;
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/math/geometry/Vector.html ...]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;RealMatrix&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Interface defining a real-valued matrix with basic algebraic operations.&lt;br /&gt;
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/math/linear/RealMatrix.html ...]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;SymmetricMatrix&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
| Interface for symmetric matrices.&lt;br /&gt;
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/math/linear/SymmetricMatrix.html ...]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Decomposition&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
| Interface for matrices decompositions.&lt;br /&gt;
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/math/linear/Decomposition.html ...]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;DecompositionSolver&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
| Interface for matrices decompositions solvers. In particular thses solvers provides the inverse of a matrix.&lt;br /&gt;
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/math/linear/DecompositionSolver.html ...]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;UDDecomposition&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|An interface to classes that implement an algorithm to calculate the UD-decomposition of a real matrix.&lt;br /&gt;
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/math/linear/UDDecomposition.html ...]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Classes ===&lt;br /&gt;
The most relevant classes related to matrices are listed here :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Class&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Summary&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Javadoc&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Vector3D&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|This class implements vectors in a three-dimensional space.&lt;br /&gt;
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/math/geometry/euclidean/threed/Vector3D.html ...]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Matrix3D&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|This is a real 3x3 matrix designed to be used in geometric calculations. It is compatible with the Vector3D type.&lt;br /&gt;
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/math/geometry/euclidean/threed/Matrix3D.html ...]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Array2DRowRealMatrix&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Implementation of RealMatrix using a double[][] array to store entries and LU decomposition to support linear system solution and inverse.&lt;br /&gt;
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/math/linear/Array2DRowRealMatrix.html ...]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;ArrayRowSymmetricMatrix&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
| Implementation of a symmetric matrix, implementing AbstractRealMatrix using a double[] array to store entries : storage convention is symmetric conventional full storage.&lt;br /&gt;
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/math/linear/ArrayRowSymmetricMatrix.html ...]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;DiagonalMatrix&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
| Implementation of a diagonal matrix.&lt;br /&gt;
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/math/linear/DiagonalMatrix.html ...]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;QRDecomposition&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Calculates the QR decomposition of a matrix.&lt;br /&gt;
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/math/linear/QRDecomposition.html ...]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;LUDecomposition&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Calculates the LU decomposition of a matrix.&lt;br /&gt;
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/math/linear/LUDecomposition.html ...]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;CholeskyDecomposition&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Calculates the Cholesky decomposition of a matrix.&lt;br /&gt;
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/math/linear/CholeskyDecomposition.html ...]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;SingularValueDecomposition&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Calculates the SVD decomposition of a matrix.&lt;br /&gt;
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/math/linear/SingularValueDecomposition.html ...]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:User_Manual_4.13_Mathematics]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>