Skip to content

Commit 9065a99

Browse files
committed
Adjust tests for slight changes in sympy 1.15
1 parent ace309d commit 9065a99

File tree

2 files changed

+32
-14
lines changed

2 files changed

+32
-14
lines changed

inst/@sym/dsolve.m

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
%% Copyright (C) 2014-2016, 2018-2019, 2022, 2025 Colin B. Macdonald
1+
%% Copyright (C) 2014-2016, 2018-2019, 2022, 2025-2026 Colin B. Macdonald
22
%% Copyright (C) 2014-2015 Andrés Prieto
33
%% Copyright (C) 2020 Rafael Laboissière
44
%% Copyright (C) 2020 Jing-Chen Peng
@@ -306,17 +306,22 @@
306306
%! ode1 = diff(x(t),t) == 2*y(t);
307307
%! ode2 = diff(y(t),t) == 2*x(t);
308308
%! soln = dsolve([ode1, ode2]);
309+
%! X = soln.x;
310+
%! Y = soln.y;
309311
%! soln = [soln.x, soln.y];
312+
%! % check its a soln
313+
%! assert (isequal (simplify (diff (X, t) - 2*Y), sym(0)))
310314
%! g1 = [C1*exp(-2*t) + C2*exp(2*t), -C1*exp(-2*t) + C2*exp(2*t)];
311315
%! g2 = [C1*exp(2*t) + C2*exp(-2*t), C1*exp(2*t) - C2*exp(-2*t)];
312316
%! g3 = [-C1*exp(-2*t) + C2*exp(2*t), C1*exp(-2*t) + C2*exp(2*t)];
313317
%! g4 = [C1*exp(2*t) - C2*exp(-2*t), C1*exp(2*t) + C2*exp(-2*t)];
314318
%! % old SymPy <= 1.5.1 had some extra twos
315-
%! g5 = [2*C1*exp(-2*t) + 2*C2*exp(2*t), -2*C1*exp(-2*t) + 2*C2*exp(2*t)];
316-
%! g6 = [2*C1*exp(2*t) + 2*C2*exp(-2*t), 2*C1*exp(2*t) - 2*C2*exp(-2*t)];
319+
%! % new SymPy >= 1.15.0 also has extra twos
320+
%! % so also try dividing by two
317321
%! assert (isequal (soln, g1) || isequal (soln, g2) || ...
318322
%! isequal (soln, g3) || isequal (soln, g4) || ...
319-
%! isequal (soln, g5) || isequal (soln, g6))
323+
%! isequal (soln/2, g1) || isequal (soln/2, g2) ||
324+
%! isequal (soln/2, g3) || isequal (soln/2, g4))
320325

321326
%!test
322327
%! % System of ODEs (initial-value problem)

inst/@sym/jordan.m

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
%% Copyright (C) 2016 Alex Vong
2-
%% Copyright (C) 2017-2019 Colin B. Macdonald
2+
%% Copyright (C) 2017-2019, 2026 Colin B. Macdonald
33
%%
44
%% This file is part of OctSymPy.
55
%%
@@ -135,13 +135,24 @@
135135
%! A = sym ([2 1 0 0; 0 2 1 0; 0 0 3 0; 0 1 -1 3]);
136136
%! [V, J] = jordan (A);
137137
%! assert (isequal (inv (V) * A * V, J));
138-
%! assert (isequal (J, sym ([2 1 0 0; 0 2 0 0; 0 0 3 0; 0 0 0 3])))
139-
%! % the first 2 generalized eigenvectors form a cycle
140-
%! assert (isequal ((A - J(1, 1) * eye (4)) * V(:, 1), zeros (4, 1)));
141-
%! assert (isequal ((A - J(2, 2) * eye (4)) * V(:, 2), V(:, 1)));
142-
%! % the last 2 generalized eigenvectors are eigenvectors
143-
%! assert (isequal ((A - J(3, 3) * eye (4)) * V(:, 3), zeros (4, 1)));
144-
%! assert (isequal ((A - J(4, 4) * eye (4)) * V(:, 4), zeros (4, 1)));
138+
%! % it might give J1 or J2: either answer is ok.
139+
%! J1 = sym ([2 1 0 0; 0 2 0 0; 0 0 3 0; 0 0 0 3]);
140+
%! J2 = sym ([3 0 0 0; 0 3 0 0; 0 0 2 1; 0 0 0 2]);
141+
%! assert (isequal (J, J1) | isequal (J, J2))
142+
%! if (isequal (J, J1))
143+
%! % the first 2 generalized eigenvectors form a cycle
144+
%! assert (isequal ((A - J(1, 1) * eye (4)) * V(:, 1), zeros (4, 1)));
145+
%! assert (isequal ((A - J(2, 2) * eye (4)) * V(:, 2), V(:, 1)));
146+
%! % the last 2 generalized eigenvectors are eigenvectors
147+
%! assert (isequal ((A - J(3, 3) * eye (4)) * V(:, 3), zeros (4, 1)));
148+
%! assert (isequal ((A - J(4, 4) * eye (4)) * V(:, 4), zeros (4, 1)));
149+
%! else
150+
%! % opposite order as above
151+
%! assert (isequal ((A - J(1, 1) * eye (4)) * V(:, 1), zeros (4, 1)));
152+
%! assert (isequal ((A - J(2, 2) * eye (4)) * V(:, 2), zeros (4, 1)));
153+
%! assert (isequal ((A - J(3, 3) * eye (4)) * V(:, 3), zeros (4, 1)));
154+
%! assert (isequal ((A - J(4, 4) * eye (4)) * V(:, 4), V(:, 3)));
155+
%! end
145156

146157
%!test
147158
%! % scalars
@@ -153,8 +164,10 @@
153164
%! A = diag (sym ([6 6 7]));
154165
%! [V1, D] = eig (A);
155166
%! [V2, J] = jordan (A);
156-
%! assert (isequal (V1, V2));
157-
%! assert (isequal (D, J));
167+
%! assert (isequal (A*V2, V2*J));
168+
%! assert (isequal (V1 * V1', sym (eye (3))))
169+
%! assert (isequal (V2 * V2', sym (eye (3))))
170+
%! assert (isempty (setdiff (diag (D), diag (J))))
158171

159172
%!test
160173
%! % matrices of unknown entries

0 commit comments

Comments
 (0)