Harry Garst

224 Reputation

5 Badges

17 years, 213 days

MaplePrimes Activity

These are questions asked by Harry Garst

Dear Maple experts,

I am struggling with a difference between the symbolic and numerical solution of an eigendecomposition of a symmetric positive definite matrix. Numerically the solution seems correct, but the symbolic solution puzzles me. In the symbolic solution the reconstructed matrix is different from the original matrix (although the difference between the original and the reconstructed matrix seems to be related to an unknown scalar multiplier.

Lambda := Matrix(5, 1, symbol = lambda);
Theta := Matrix(5, 5, shape = diagonal, symbol = theta);
#Ω is the matrix that will be diagonalized.
Omega := MatrixPower(Theta, -1/2) . Lambda . Lambda^%T . MatrixPower(Theta, -1/2);
#Ω is symmetric and in practice always positive definite, but I do not know how to specify the assumption of positivess definiteness in Maple
IsMatrixShape(Omega, symmetric);

# the matrix Omega is very simple and Maple finds a symbolic solution
E, V := Eigenvectors(Omega);

# this will not return the original matrix

simplify(V . DiagonalMatrix(E) . V^%T)

# check this numerically with the following values.

lambda[1, 1] := .9;lambda[2, 1] := .8;lambda[3, 1] := .7;lambda[4, 1] := .85;lambda[5, 1] := .7;
theta[1, 1] := .25;theta[2, 2] := .21;theta[3, 3] := .20;theta[4, 4] := .15;theta[5, 5] := .35;

The dotproduct is not always zero, although I thought that the eigenvectors should be orthogonal.

I know eigenvector solutions may be different because of scalar multiples, but here I am not able to understand the differences between the numerical and symbolic solution.

I probably missed something, but I spend the whole saturday trying to solve this problem, but I can not find it.

I attached both files.

Anyone? Thank in advance,




I can't find in the Linear Algebra package the command for creating the duplication matrix.

The duplication matrix is the n * n rows and n * ( n + 1 ) / 2 columns that transforms vech(A)
to vec(A) where A is a symmetric n by n matrix (Magnus & Neudecker).

If it not yet in Maple itself, has someone already made a proc for it?

Harry Garst



For many years I succesfully used the command:

Lambda := ImportMatrix(LambdaFile, delimiter = "", datatype = string);


but for some txt files I now got the following error in Maple 2016:
Error, (in ImportMatrix) cannot interpret file

The same code still runs without problems at all in previous versions of Maple.

The strange thing is that other txt files can be still be imported in Maple 2016 without problems.

I will upload two files:

ULSlx3.txt returns an error message

ULStd3.txt no problems



complete code:

with(LinearAlgebra); with(Statistics);
interface(rtablesize = infinity);

LambdaFile := "C:/path/ULSlx3.txt";
Lambda := Matrix(5, 1);

in the whatsnew there is no information on changes with respect to the ImportMatrix command, although there is some (unrelated) information on Importing Data:

Importing Data
By default, the Import command now returns a DataFrame when importing from Excel, CSV, DIF, and TSV file formats, and returns a DataSeries when importing from ODS, SXC, and TSV file formats. Use the output option to specify a different format. For example, Import(origin, output=Matrix).


I have no clue what is wrong with my code and why some text files can be imported as before whereas other files returns an error message.

greetings Harry

I hoped that Maple would return the value of 1 in all commands (see below). However, introducing a scaling parameter, sigma, yields the unevaluated expression. Why? I still think it should evaluate to the value of 1.


kind regards,

Harry (not a mathematician, but a psychologist)






After reading 


I tried to check this 'trick' in maple, but see what happens in Maple 2015:



 what is the correct solution for 0^0?


Here the code for those who hate typing:

x := 0; 0^(x^2);
for x from -1 to 1 do print(x, evalf(0^(x^2), 20)) end do;
-1, 0.
0, 1.
1, 0.
for x from -1 by .1 to 1 do print(x, evalf(0^(x^2), 20)) end do;
-1, 0.
-0.9, 0.
-0.8, 0.
-0.7, 0.
-0.6, 0.
-0.5, 0.
-0.4, 0.
-0.3, 0.
-0.2, 0.
-0.1, 0.
0., Float(undefined)
0.1, 0.
0.2, 0.
0.3, 0.



3 4 5 6 7 8 9 Page 5 of 10