next up previous contents
Next: LAPACK Up: Working with Jasymca Previous: Jumps


Vectors and Matrices (2)

Several standardmatrices are created by means of functions without specifying individual elements: ones(n,m), zeros(n,m), rand(n,m) return matrices with elements 1, 0 or random numbers between 0 and 1. eye(n,m) has diagonalelements 1, else 0, and hilb(n) creates the n-th degree Hilbert-matrix.
>> A=rand(1,3)
A = 
  0.33138  0.94928  0.56824  
>> B=hilb(4)
B = 
  1    1/2  1/3  1/4  
  1/2  1/3  1/4  1/5  
  1/3  1/4  1/5  1/6  
  1/4  1/5  1/6  1/7
The following functions are provided for matrix calculations: diag(x) (extracts diagonal elements), det(x) (determinante), eig(x) (eigenvalues), inv(x) (inverse), pinv(x) (pseudoinverse). The adjunct matrix is created using the operator '.
>> det(hilb(4))
ans = 1/6048000
>> M=[2 3 1; 4 4 5; 2 9 3];
>> M'
ans = 
  2  4  2  
  3  4  9  
  1  5  3  
>> eig(M)
ans = [ 11.531  -3.593  1.062 ]
>> inv(M)
ans = 
  0.75        0           -0.25       
  4.5455E-2   -9.0909E-2  0.13636     
  -0.63636    0.27273     9.0909E-2

The nontrivial functions are all based on the LU-decomposition, which is also accessible as a function call lu(x). It has 2 or 3 return values, therefor the left side of the equation must provide multiple variables, see example below:

>> M=[2 3 1; 4 4 5; 2 9 3]
>> [l,u,p]=lu(M)         % 2 or 3 return values
l =                      % left triangular matrix (perm.)
  0.5      0.14286  1        
  1        0        0        
  0.5      1        0        
u =                      % right upper triangular matrix
  4        4        5        
  0        7        0.5      
  0        0        -1.5714  
p =                      % permutation matrix
  0  0  1  
  1  0  0  
  0  1  0
Without preceding point the arithmetic operators function as matrix operators, e.g. * corresponds to matrix and vector multiplication.
>> x=[2,1,4]; y=[3,5,6];
>> x.*y      %  with point
ans = [ 6  5  24 ]
>> x*y       %  without point
ans = 35

If one of the arguments is a scalar datatype, the operation is repeated for each element of the other argument:

>> x=[2,1,4]; 
>> x+3
ans = [ 5  4  7 ]

Matrix division corresponds to multiplication by the pseudoinverse. Using the operator \ leads to left-division, which can be used to solve systems of linear equations:

>> M=[2 3 1; 4 4 5; 2 9 3];
>> b=[0;3;1];
>> x=M\b      % solution of M*x = b
x = 
  -0.25     
  -0.13636  
  0.90909   
>> M*x        % control
ans = 
  0  
  3  
  1
Systems of linear equations can (and should) be solved directly with the function linsolve(A,b) which will be discussed in chapter 2.13.1.



Subsections
next up previous contents
Next: LAPACK Up: Working with Jasymca Previous: Jumps
Helmut Dersch
2009-03-15