Generalized Inverse and Volume Adi Ben-Israel LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYrLUkjbWlHRiQ2KFEocmVzdGFydEYnLyUlYm9sZEdRJXRydWVGJy8lJ2l0YWxpY0dGMS8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GJy8lLG1hdGh2YXJpYW50R1EsYm9sZC1pdGFsaWNGJy8lK2ZvbnR3ZWlnaHRHUSVib2xkRictSSNtb0dGJDYwUSI6RidGL0Y0L0Y4RjxGOi8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGRC8lKXN0cmV0Y2h5R0ZELyUqc3ltbWV0cmljR0ZELyUobGFyZ2VvcEdGRC8lLm1vdmFibGVsaW1pdHNHRkQvJSdhY2NlbnRHRkQvJSdsc3BhY2VHUSwwLjI3Nzc3NzhlbUYnLyUncnNwYWNlR0ZTLUYsNihRJXdpdGhGJ0YvRjJGNEY3RjotSShtZmVuY2VkR0YkNictRiM2Iy1GLDYoUSdsaW5hbGdGJ0YvRjJGNEY3RjpGL0Y0RkFGOkY9LUY+NjBRIiNGJ0YvRjRGQUY6RkJGRUZHRklGS0ZNRk8vRlJRJjAuMGVtRicvRlVGX29GVi1GWjYnLUYjNiMtRiw2KFEuTGluZWFyQWxnZWJyYUYnRi9GMkY0RjdGOkYvRjRGQUY6Rj0= QyQ+SSRlcHNHNiIsJC1JIl5HJSpwcm90ZWN0ZWRHNiQiIzUhIiokIiIiIiIhRi4= LUkjbWlHNiMvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0dJKF9zeXNsaWJHRic2JVE1b3V0cHV0fnJlZGlyZWN0ZWQuLi5GJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRic= print(); # input placeholder JCIrKysrKzUhIz0= recipvec(x) returens a vector of reciprocals of the elements of x with modulus > eps and 0 otherwise QyQ+SSlyZWNpcHZlY0c2ImYqNiNJInhHRiU2JUkia0dGJUkibkdGJUkieUdGJUYlRiVDJj44JS1JKHZlY3RkaW1HRiU2IzkkPjgmLUkmYXJyYXlHJSpwcm90ZWN0ZWRHNiM7IiIiRi8/KDgkRjtGO0YvSSV0cnVlR0Y4QCUySSRlcHNHRiUtSSRhYnNHRjg2IyZGMzYjRj0+JkY1RkYqJEZFISIiPkZIIiIhLUklZXZhbEdGODYjRjVGJUYlRiVGSg== JSFH print(); # input placeholder print(); # input placeholder LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2I1EhRic= Example #recipvec([1, 2, -3, 0.1e-2, 0.1e-9]); print(); # input placeholder JSFH print(); # input placeholder vectodiag(x,m,n) returns an mxn matrix X with x on diagonal QyQ+SSp2ZWN0b2RpYWdHNiJmKjYlSSJ4R0YlSSJtR0YlSSJuR0YlNiZJImlHRiVJImpHRiVJImtHRiVJIlhHRiVGJUYlQyY+OCctSSZhcnJheUclKnByb3RlY3RlZEc2JDsiIiI5JTtGODkmPjgmLUkodmVjdGRpbUdGJTYjOSQ/KDgkRjhGOEY5SSV0cnVlR0Y1Pyg4JUY4RjhGO0ZEQCUzL0ZDRkYxRkNGPT4mRjI2JEZDRkYmRkE2I0ZDPkZMIiIhLUkmZXZhbG1HRiU2I0YyRiVGJUYlISIi print(); # input placeholder Example #vectodiag(recipvec([1,2,-3,0.001,0.0000000001]),6,7); print(); # input placeholder Svd(A,U,V) returns the singular values of A and the unitary matrices U,V A:=matrix(3,5,[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]); LUkjbWlHNiMvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0dJKF9zeXNsaWJHRic2JVE1b3V0cHV0fnJlZGlyZWN0ZWQuLi5GJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRic= print(); # input placeholder PTYiNiQ7IiIiIiIkO0YmIiImRVxbbDA2JEYnRiYiIzY2JEYnRikiIzo2JEYmRidGJzYkIiIjRikiIzU2JEYxRiYiIic2JEYnRjEiIzc2JEYxRiciIik2JEYmRilGKTYkRidGJyIjODYkRjEiIiUiIio2JEYmRjFGMTYkRjFGMSIiKDYkRiZGJkYmNiRGJkY9Rj02JEYnRj0iIzk= evalf(Svd(A,U,V)); LUkjbWlHNiMvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0dJKF9zeXNsaWJHRic2JVE1b3V0cHV0fnJlZGlyZWN0ZWQuLi5GJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRic= print(); # input placeholder PTYiNiM7IiIiIiIkRVxbbCRGJiQiK0xCczdOISIpIiIjJCIrKHAnUmxDISIqRickIitjVShbdSUhI0Q= D1:=vectodiag(%,3,5); LUkjbWlHNiMvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0dJKF9zeXNsaWJHRic2JVE1b3V0cHV0fnJlZGlyZWN0ZWQuLi5GJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRic= print(); # input placeholder PTYiNiQ7IiIiIiIkO0YmIiImRVxbbDA2JEYnRiYiIiE2JEYnRilGLDYkRiZGJ0YsNiQiIiNGKUYsNiRGMEYmRiw2JEYnRjBGLDYkRjBGJ0YsNiRGJkYpRiw2JEYnRickIitjVShbdSUhI0Q2JEYwIiIlRiw2JEYmRjBGLDYkRjBGMCQiKyhwJ1JsQyEiKjYkRiZGJiQiK0xCczdOISIpNiRGJkY6Riw2JEYnRjpGLA== evalm(U&*D1&*transpose(V)); LUkjbWlHNiMvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0dJKF9zeXNsaWJHRic2JVE1b3V0cHV0fnJlZGlyZWN0ZWQuLi5GJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRic= print(); # input placeholder PTYiNiQ7IiIiIiIkO0YmIiImRVxbbDA2JEYnRiYkIisrKysrNiEiKTYkRidGKSQiKysrKys6Ri42JEYmRickIisrKysrSSEiKjYkIiIjRikkIisrKysrNUYuNiRGN0YmJCIrKysrK2dGNTYkRidGNyQiKysrKys3Ri42JEY3RickIistKysrISlGNTYkRiZGKSQiKysrKytdRjU2JEYnRickIisrKysrOEYuNiRGNyIiJSQiKysrKyshKkY1NiRGJkY3JCIrKysrKz9GNTYkRjdGNyQiKysrKytxRjU2JEYmRiYkRjlGNTYkRiZGSiQiKysrKytTRjU2JEYnRkokIisqKioqKioqUiJGLg== LUkjbWlHNiMvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0dJKF9zeXNsaWJHRic2JVE1b3V0cHV0fnJlZGlyZWN0ZWQuLi5GJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRic= LUkjbWlHNiMvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0dJKF9zeXNsaWJHRic2JVE1b3V0cHV0fnJlZGlyZWN0ZWQuLi5GJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRic= MoorePenrose(A) returns the Moore-Penrose inverse of A QyQ+SS1Nb29yZVBlbnJvc2VHNiJmKjYjSSJBR0YlNihJIm1HRiVJIm5HRiVJInhHRiVJIlVHRiVJIlZHRiVJI0QxR0YlRiVGJUMnPjgkLUkncm93ZGltR0YlNiM5JD44JS1JJ2NvbGRpbUdGJUY1PjgmLUkmZXZhbGZHJSpwcm90ZWN0ZWRHNiMtSSRTdmRHNiRGP0koX3N5c2xpYkdGJTYlRjY4JzgoPjgpLUkqdmVjdG9kaWFnR0YlNiUtSSlyZWNpcHZlY0dGJTYjRjxGOEYyLUkmZXZhbG1HRkM2Iy1JIyYqR0YlNiQtRlQ2JEZHRkktSSp0cmFuc3Bvc2VHRiU2I0ZGRiVGJUYlISIi Example A:=matrix(3,5,[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]): print(); # input placeholder A:=MoorePenrose(A): print(); # input placeholder evalm(A&*MoorePenrose(A)): print(); # input placeholder evalm(MoorePenrose(A)&*A): print(); # input placeholder Hilbert(n) returns the nxn Hilbert matrix QyQ+SShIaWxiZXJ0RzYiZio2I0kibkdGJTYlSSJpR0YlSSJqR0YlSSJIR0YlRiVGJUMlPjgmLUkmYXJyYXlHJSpwcm90ZWN0ZWRHNiQ7IiIiOSRGND8oOCRGNUY1RjZJJXRydWVHRjI/KDglRjVGNUY2Rjk+JkYvNiRGOEY7KiQsJkY4RjVGO0Y1ISIiLUkmZXZhbG1HNiRGMkkoX3N5c2xpYkdGJTYjRi9GJUYlRiVGQQ== print(); # input placeholder Example #H:=Hilbert(3); print(); # input placeholder #inverse(H); print(); # input placeholder #MoorePenrose(H): print(); # input placeholder #evalm(%-%%); print(); # input placeholder #evalf(norm(%)); print(); # input placeholder Vol(A) computes the volume of A using its singular value (sensitive to eps) JSFH QyQ+SSRWb2xHNiJmKjYjSSJBR0YlNiZJInhHRiVJIm5HRiVJInZHRiVJImtHRiVGJUYlQyc+OCQtSSZldmFsZkclKnByb3RlY3RlZEc2Iy1JJFN2ZEc2JEYzSShfc3lzbGliR0YlNiM5JD44JS1JKHZlY3RkaW1HRiU2I0YwQCUyJkYwNiMiIiJJJGVwc0dGJT44JiIiIT5GR0ZEPyg4J0ZERkRGPEkldHJ1ZUdGM0AkMkZFJkYwNiNGSz5GRyomRkdGREZPRkRGR0YlRiVGJSEiIg== Example #A:=matrix(2,2,[1,2,3,4]); print(); # input placeholder #Vol(A); print(); # input placeholder #H:=Hilbert(10): #Vol(H); print(); # input placeholder #evalf(det(H)); print(); # input placeholder Gramian(A) computes the volume of a full-rank matrix A from det(A^T A) or det(A A^T) QyQ+SShHcmFtaWFuRzYiZio2I0kiQUdGJTYlSSJHR0YlSSJtR0YlSSJuR0YlRiVGJUMmPjglLUkncm93ZGltR0YlNiM5JD44Ji1JJ2NvbGRpbUdGJUYyQCUyRjVGLz44JC1JJmV2YWxtRzYkJSpwcm90ZWN0ZWRHSShfc3lzbGliR0YlNiMtSSMmKkdGJTYkLUkqdHJhbnNwb3NlR0YlRjJGMz5GOy1GPTYjLUZDNiRGM0ZFLUkpc2ltcGxpZnlHRiU2Iy1JJXNxcnRHRiU2Iy1JJGRldEdGJTYjRjtGJUYlRiUhIiI= print(); # input placeholder JSFH Example #H:=Hilbert(10): print(); # input placeholder #Vol(H); print(); # input placeholder #evalf(Gramian(H)); print(); # input placeholder #X:=randmatrix(8,5):Y:=randmatrix(5,12):Z:=evalm(X&*Y): #Vol(X); print(); # input placeholder #Vol(Y); print(); # input placeholder #%*%%; print(); # input placeholder #Vol(Z); print(); # input placeholder JSFH Cartesian coordinates #x:=array(1..2): #jacobian([x[1],x[2],z(x[1],x[2])],x); print(); # input placeholder #Gramian(%); print(); # input placeholder #unassign('x'),x; print(); # input placeholder Cylindical coordinates #jacobian([r*cos(theta),r*sin(theta),z(r,theta)],[r,theta]); print(); # input placeholder #Gramian(%); print(); # input placeholder Spherical coordinates #jacobian([r*cos(theta)*sin(phi),r*sin(theta)*sin(phi),z(r)],[r,theta,phi]); print(); # input placeholder #Gramian(%); print(); # input placeholder The area of the unit sphere in R^3 #jacobian([x,y,sqrt(1-x^2-y^2)],[x,y]); print(); # input placeholder #Gramian(%); print(); # input placeholder #2*int(int(%,y=-sqrt(1-x^2)..sqrt(1-x^2)),x=-1..1); print(); # input placeholder Sphere of radius R in R^3 #jacobian([r,theta,sqrt(R^2-r^2)],[r,theta]); print(); # input placeholder #Gramian(%); print(); # input placeholder IntSphere2(f,r,theta) computes integral of f(r,theta,z) on sphere of radius R in R^3 QyQ+SStJbnRTcGhlcmUyRzYiZio2JkkiZkdGJUkickdGJUkmdGhldGFHRiVJIlJHRiU2KEkldm9sdUdGJUkldm9sZEdGJUkjZnVHRiVJI2ZkR0YlSSVpbnR1R0YlSSVpbnRkR0YlRiVGJUMpPjgkLUkoR3JhbWlhbkdGJTYjLUkpamFjb2JpYW5HRiU2JDclOSU5Ji1JJXNxcnRHNiQlKnByb3RlY3RlZEdJKF9zeXNsaWJHRiU2IywmKiQ5JyIiIyIiIiokRj1GSCEiIjckRj1GPj44JS1GNzYjLUY6NiQ3JUY9Rj4sJEY/RktGTD44Ji1JJXN1YnNHRkI2JC9JInpHRiVGPzkkPjgnLUZYNiQvRmVuRlRGZm4+OCgtSSRpbnRHRkE2JC1GX282JCooRj1GSUZWRklGNUZJL0Y+OyIiISwkSSNQaUdGQkZIL0Y9O0Zmb0ZHPjgpLUZfbzYkLUZfbzYkKihGPUZJRmhuRklGTkZJRmRvRmlvLUkpc2ltcGxpZnlHRkE2IywmRl1vRklGXHBGSUYlRiVGJUZL The area of the a sphere of radius R in R^3 IntSphere2(1,r,theta,R); LUkjbWlHNiMvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0dJKF9zeXNsaWJHRic2JVE1b3V0cHV0fnJlZGlyZWN0ZWQuLi5GJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRic= print(); # input placeholder LCQqJkkiUkc2IiIiI0kjUGlHJSpwcm90ZWN0ZWRHIiIiIiIl Volume of a ball of radius R in R^3 int(IntSphere2(1,r,theta,s),s=0..R); LUkjbWlHNiMvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0dJKF9zeXNsaWJHRic2JVE1b3V0cHV0fnJlZGlyZWN0ZWQuLi5GJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRic= print(); # input placeholder LCQqJkkjUGlHJSpwcm90ZWN0ZWRHIiIiSSJSRzYiIiIkIyIiJUYp Integrals of f(r)=r^2, f(r)=R^2-r^2 and f(r)=x^2 on the sphere of radius R in R^3 #IntSphere2(r^2,r,theta,R); print(); # input placeholder #IntSphere2(R^2-r^2,r,theta,R); print(); # input placeholder #IntSphere2(r^2*cos(theta)^2,r,theta,R); print(); # input placeholder Integrals of f(r)=1/r, f(r)=1/r^2 and f(r)=1/r^3 over the ball of radius R in R^3 int(IntSphere2(1/R,r,theta,R),R=0..R); LUkjbWlHNiMvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0dJKF9zeXNsaWJHRic2JVE1b3V0cHV0fnJlZGlyZWN0ZWQuLi5GJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRic= print(); # input placeholder LCQqJkkiUkc2IiIiI0kjUGlHJSpwcm90ZWN0ZWRHIiIiRiY= LUkjbWlHNiMvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0dJKF9zeXNsaWJHRic2JVE1b3V0cHV0fnJlZGlyZWN0ZWQuLi5GJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRic= int(IntSphere2(1/R^2,r,theta,R),R=0..R); LUkjbWlHNiMvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0dJKF9zeXNsaWJHRic2JVE1b3V0cHV0fnJlZGlyZWN0ZWQuLi5GJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRic= print(); # input placeholder LCQqJkkjUGlHJSpwcm90ZWN0ZWRHIiIiSSJSRzYiRiYiIiU= int(IntSphere2(1/R^3,r,theta,R),R=0..R); LUkjbWlHNiMvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0dJKF9zeXNsaWJHRic2JVE1b3V0cHV0fnJlZGlyZWN0ZWQuLi5GJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRic= print(); # input placeholder SSlpbmZpbml0eUclKnByb3RlY3RlZEc= print(); # input placeholder print(); # input placeholder LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2I1EhRic= Radon2(f,x,y,a,b,p) is the integral of f(x,y) on the line ax+by=p, b must be nonzero