File tree Expand file tree Collapse file tree 1 file changed +23
-1
lines changed
doc/d-practical-exercises Expand file tree Collapse file tree 1 file changed +23
-1
lines changed Original file line number Diff line number Diff line change @@ -152,7 +152,29 @@ the null space of task 1 is:
152152
153153\f$P_1 = I_9 - J_1^+ J_1\f$
154154
155- \f$vq_2 = vq_1 + P_1 (J_2 P_1)^+ ( v_2^* - J_2 vq_1)\f$
155+ \f$vq_2 = vq_1 + P_1 (J_2 P_1)^+ (v_2^* - J_2 vq_1)\f$
156+
157+ With the mathematical property
158+
159+ \f$(J_2 P_1)^+ = P_1 (J_2 P_1)^+\f$
160+
161+ we can save a matrix multiplication:
162+
163+ \f$vq_2 = vq_1 + (J_2 P_1)^+ (v_2^* - J_2 vq_1)\f$
164+
165+ It is important to note that the null space of ` J1 ` is defined up to a numeric
166+ threshold on its eigen values. A low threshold will lead to a trivial null space
167+ of ` J1 ` , and task 2 could numerically interfere with task 1. It translates into
168+ setting an appropriate ` rcond ` or ` rtol ` when computing the pseudo-inverse of
169+ ` J2 P1 ` :
170+
171+ ``` py
172+ pinv_J2_P1 = pinv(J2 @ P1, rcond = 1e-3 )
173+ ```
174+
175+ Tuning ` rcond ` is a tradeoff: if ` rcond ` is too low (its default is ` 1e-15 ` ),
176+ task 2 could interfere with task 1. If it is too high, there won't be enough
177+ DoFs to complete task 2.
156178
157179#### Question 2
158180
You can’t perform that action at this time.
0 commit comments