annotate minorsSym.m @ 127:967152d7d58b

Added function for printing the minors of a matrix.
author Jonatan Werpers <jonatan@werpers.com>
date Wed, 03 Feb 2016 16:56:05 +0100
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
127
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
1 function ineq = minorsSym(B)
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
2 B
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
3
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
4 [n, m] = size(B);
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
5
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
6 if n ~= m
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
7 error('B must be square');
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
8 end
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
9
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
10 subB = {};
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
11 ks = {};
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
12
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
13 ind = 1:n;
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
14 for k = 1:n
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
15 C = nchoosek(ind,k);
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
16 for i = 1:size(C,1)
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
17 ks{end + 1} = k;
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
18 subB{end + 1} = B(C(i,:),C(i,:));
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
19 end
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
20 end
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
21
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
22
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
23
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
24 for i = 1:length(subB)
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
25 fprintf('%d:\n', ks{i});
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
26 disp(subB{i})
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
27
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
28 minor{i} = det(subB{i});
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
29 end
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
30
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
31 for i = 1:length(subB)
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
32 fprintf('%d:\n', ks{i});
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
33 disp(minor{i});
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
34
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
35 if mod(ks{i},2) == 0
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
36 ineq{i} = minor{i} >= 0;
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
37 else
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
38 ineq{i} = minor{i} <= 0;
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
39 end
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
40 end
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
41
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
42 ineqsys = true;
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
43 for i = 1:length(ineq)
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
44 ineqsys = ineqsys & ineq{i};
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
45 end
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
46
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
47 ineq = simplify(ineqsys)
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
48 end
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
49
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
50
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
51 % B is positive semidefinite if all minors are non-negative
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
52 % B is negative semidefinite if all odd minors are non-positive and all even minors are non-negative
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
53