annotate minors.m @ 1198:2924b3a9b921 feature/d2_compatible

Add OpSet for fully compatible D2Variable, created from regular D2Variable by replacing d1 by first row of D1. Formal reduction by one order of accuracy at the boundary point.
author Martin Almquist <malmquist@stanford.edu>
date Fri, 16 Aug 2019 14:30:28 -0700
parents eaf557023fbe
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
234
eaf557023fbe Added verbose flag to semiDefIneq and minors.
Jonatan Werpers <jonatan@werpers.com>
parents: 129
diff changeset
1 function [minor, sub] = minors(A, verbose)
eaf557023fbe Added verbose flag to semiDefIneq and minors.
Jonatan Werpers <jonatan@werpers.com>
parents: 129
diff changeset
2 default_arg('verbose', true);
129
0a881a3dc9a9 Cleaned up the code for minors.
Jonatan Werpers <jonatan@werpers.com>
parents: 127
diff changeset
3 [n, m] = size(A);
127
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
4
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
5 if n ~= m
129
0a881a3dc9a9 Cleaned up the code for minors.
Jonatan Werpers <jonatan@werpers.com>
parents: 127
diff changeset
6 error('A must be square');
127
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
7 end
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
8
129
0a881a3dc9a9 Cleaned up the code for minors.
Jonatan Werpers <jonatan@werpers.com>
parents: 127
diff changeset
9 sub = {};
127
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
10 ks = {};
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
11
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
12 ind = 1:n;
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
13 for k = 1:n
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
14 C = nchoosek(ind,k);
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
15 for i = 1:size(C,1)
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
16 ks{end + 1} = k;
129
0a881a3dc9a9 Cleaned up the code for minors.
Jonatan Werpers <jonatan@werpers.com>
parents: 127
diff changeset
17 sub{end + 1} = A(C(i,:),C(i,:));
127
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
18 end
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
129
0a881a3dc9a9 Cleaned up the code for minors.
Jonatan Werpers <jonatan@werpers.com>
parents: 127
diff changeset
21 for i = 1:length(sub)
234
eaf557023fbe Added verbose flag to semiDefIneq and minors.
Jonatan Werpers <jonatan@werpers.com>
parents: 129
diff changeset
22 if verbose
eaf557023fbe Added verbose flag to semiDefIneq and minors.
Jonatan Werpers <jonatan@werpers.com>
parents: 129
diff changeset
23 fprintf('%d:\n', ks{i});
eaf557023fbe Added verbose flag to semiDefIneq and minors.
Jonatan Werpers <jonatan@werpers.com>
parents: 129
diff changeset
24 disp(sub{i})
eaf557023fbe Added verbose flag to semiDefIneq and minors.
Jonatan Werpers <jonatan@werpers.com>
parents: 129
diff changeset
25 end
127
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
26
129
0a881a3dc9a9 Cleaned up the code for minors.
Jonatan Werpers <jonatan@werpers.com>
parents: 127
diff changeset
27 minor(i) = det(sub{i});
127
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
28 end
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
129
0a881a3dc9a9 Cleaned up the code for minors.
Jonatan Werpers <jonatan@werpers.com>
parents: 127
diff changeset
32 % A is positive semidefinite if all minors are non-negative
0a881a3dc9a9 Cleaned up the code for minors.
Jonatan Werpers <jonatan@werpers.com>
parents: 127
diff changeset
33 % A is negative semidefinite if all odd minors are non-positive and all even minors are non-negative
127
967152d7d58b Added function for printing the minors of a matrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
34