]> ruderich.org/simon Gitweb - config/dotfiles.git/blobdiff - maxima/maxima-init.mac
maxima: Improved version of norm_2(), also rename to mat_norm2().
[config/dotfiles.git] / maxima / maxima-init.mac
index 438989f1e567c4262931af244ee9e017065cd7ac..f270c10f3f5bef5153c78a901547447d4fc16c57 100644 (file)
@@ -5,16 +5,17 @@
  */
 
 
-/* PACKAGES */
-
-/* Provides maxi() and mini() (and more). */
-load (descriptive);
+/* CUSTOM FUNCTIONS */
 
+/* Didn't find any euclid norm in Maxima, so here it is. */
+norm(x) := sqrt(transpose(x) . x);
 
-/* CUSTOM FUNCTIONS */
+/* Maxima's mat_norm() can't calculate the 2-norm. Thanks to Wolfgang Lindner
+ * (http://www.ma.utexas.edu/pipermail/maxima/2007/006300.html) for an
+ * improved version. */
+mat_norm2(x) := sqrt(lmax(eigenvalues(transpose(conjugate(x)).x)[1]));
 
-/* Maxima's norm() can't calculate the 2-norm. Only works for non-complex
- * matrices. */
-norm_2(x) := sqrt(maxi(eigenvalues(transpose(x) . x)[1]));
+/* Shortcut to perform lu factorization. */
+lu(x) := block(x : lu_factor(x), get_lu_factors(x));
 
 /* vim: ft=maxima */