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 QyQ+SSdSYWRvbjJHNiJmKjYoSSJmR0YlSSJ4R0YlSSJ5R0YlSSJhR0YlSSJiR0YlSSJwR0YlNiRJJHZvbEdGJUkjZnhHRiVGJUYlQyU+OCQtSShHcmFtaWFuR0YlNiMtSSlqYWNvYmlhbkdGJTYkNyQ5JSomLCY5KSIiIiomOSdGP0Y7Rj8hIiJGPzkoRkI3I0Y7PjglLUkpc2ltcGxpZnlHNiQlKnByb3RlY3RlZEdJKF9zeXNsaWJHRiU2Iy1JJXN1YnNHRko2JC85JkY8OSQtSSRpbnRHRkk2JComRkZGP0YzRj8vRjs7LCRJKWluZmluaXR5R0ZKRkJGWkYlRiVGJUZC Examples assume(a,real):assume(b,real): Radon2(exp(-x^2-y^2),x,y,a,b,p); LUkjbWlHNiMvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0dJKF9zeXNsaWJHRic2JVE1b3V0cHV0fnJlZGlyZWN0ZWQuLi5GJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRic= print(); # input placeholder LUkqcGllY2V3aXNlRyUqcHJvdGVjdGVkRzYlLy1JJWNzZ25HNiRGJEkoX3N5c2xpYkc2IjYjLCYiIiJGLiomSSJhR0YrIiIjSSJiR0YrISIjRi5GLiomLUkkZXhwR0YpNiMqJiwmKiRGMkYxISIiKiRGMEYxRjtGO0kicEdGK0YxRi5JI1BpR0YkI0YuRjFJKWluZmluaXR5R0Yk simplify(%); LUkjbWlHNiMvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0dJKF9zeXNsaWJHRic2JVE1b3V0cHV0fnJlZGlyZWN0ZWQuLi5GJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRic= print(); # input placeholder KiYtSSRleHBHNiQlKnByb3RlY3RlZEdJKF9zeXNsaWJHNiI2IywkKiZJInBHRigiIiMsJiokSSNifGlyR0YoRi0iIiIqJEkjYXxpckdGKEYtRjEhIiJGNEYxSSNQaUdGJiNGMUYt RadonNormal2(f,x,y,theta,p) is the integral of f(x,y) on the line x*cos(theta)+y*sin(theta)=p, theta must be nonzero QyQ+SS1SYWRvbk5vcm1hbDJHNiJmKjYnSSJmR0YlSSJ4R0YlSSJ5R0YlSSZ0aGV0YUdGJUkicEdGJTYkSSR2b2xHRiVJI2Z4R0YlRiVGJUMlPjgkLUkoR3JhbWlhbkdGJTYjLUkpamFjb2JpYW5HRiU2JDckOSUqJiwmOSgiIiIqJkY6Rj4tSSRjb3NHNiQlKnByb3RlY3RlZEdJKF9zeXNsaWJHRiU2IzknRj4hIiJGPi1JJHNpbkdGQkZFRkc3I0Y6PjglLUkpc2ltcGxpZnlHRkI2Iy1JJXN1YnNHRkM2JC85JkY7OSQtSSRpbnRHRkI2JComRkxGPkYyRj4vRjo7LCRJKWluZmluaXR5R0ZDRkdGZ25GJUYlRiVGRw== Examples #RadonNormal2(exp(-x^2-y^2),x,y,Pi/4,p); print(); # input placeholder #Radon2(exp(-x^2-y^2),x,y,1/sqrt(2),1/sqrt(2),p); print(); # input placeholder Radon3(f,x,y,z,a,b,c,p) is the integral of f(x,y,z) on the plane a*x+b*y*+c*z=p QyQ+SSdSYWRvbjNHNiJmKjYqSSJmR0YlSSJ4R0YlSSJ5R0YlSSJ6R0YlSSJhR0YlSSJiR0YlSSJjR0YlSSJwR0YlNiRJJHZvbEdGJUkjZnhHRiVGJUYlQyU+OCQtSShHcmFtaWFuR0YlNiMtSSlqYWNvYmlhbkdGJTYkNyU5JTkmKiYsKDkrIiIiKiY5KEZCRj1GQiEiIiomOSlGQkY+RkJGRUZCOSpGRTckRj1GPj44JS1JKXNpbXBsaWZ5RzYkJSpwcm90ZWN0ZWRHSShfc3lzbGliR0YlNiMtSSVzdWJzR0ZPNiQvOSdGPzkkLUkkaW50R0ZONiQtRlk2JComRktGQkY1RkIvRj47LCRJKWluZmluaXR5R0ZPRkVGW28vRj1GaW5GJUYlRiVGRQ== Examples #Radon3(exp(-x^2-y^2-z^2),x,y,z,1,2,3,4); print(); # input placeholder #assume(c,real):Radon3(exp(-x^2-y^2-z^2),x,y,z,a,b,c,p); print(); # input placeholder #simplify(%); print(); # input placeholder CharFn(x,a,b) is the characteristic function of the interval [a,b], a < b QyQ+SSdDaGFyRm5HNiJmKjYlSSJ4R0YlSSJhR0YlSSJiR0YlRiVGJUYlKiYtSSpIZWF2aXNpZGVHRiU2IywmOSQiIiI5JSEiIkYxLUYtNiMsJjkmRjFGMEYzRjFGJUYlRiVGMw== print(); # input placeholder plot(CharFn(x,1,2),x=0..3,y=0..1.5,thickness=4,color=blue); LUkjbWlHNiMvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0dJKF9zeXNsaWJHRic2JVE1b3V0cHV0fnJlZGlyZWN0ZWQuLi5GJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRic= %; NigtJSdDVVJWRVNHNiM3Y283JCQiIiEhIiIkIiIhISIiNyQkIipEWSJSbCEjNSQiIiEhIiI3JCQiLXZWQSlHQSIhIzckIiIhISIiNyQkIix2JGV1aT0hIzYkIiIhISIiNyQkIixEJzMmb10jISM2JCIiISEiIjckJCItdm9YKnk5JCEjNyQiIiEhIiI3JCQiLXZWVEFVUCEjNyQiIiEhIiI3JCQiLXYkKnpoZFYhIzckIiIhISIiNyQkIi12JD5mUypcISM3JCIiISEiIjckJCItdj0kZiVHYyEjNyQiIiEhIiI3JCQiK0R5LCJHJyEjNSQiIiEhIiI3JCQiLERyInpibyEjNiQiIiEhIiI3JCQiK3Y0JkddKCEjNSQiIiEhIiI3JCQiK0RyY18iKSEjNSQiIiEhIiI3JCQiK0QhKm95KCkhIzUkIiIhISIiNyQkIi52JGYkeUgxKiEjOCQiIiEhIiI3JCQiLXYkcG5zTSohIzckIiIhISIiNyQkIi9EY145SDsmKiEjOSQiIiEhIiI3JCQiMSxdUDRfSiZvKiEjOyQiIiEhIiI3JCQiMV43RykzRilwKCohIzskIiIhISIiNyQkIi92PW4qUVYmKSohIzkkIiIhISIiNyQkIjFFMWsxXGYnKikqISM7JCIiISEiIjckJCIwdiQ0WTMmKVEqKiEjOiQiIiEhIiI3JCQiMTcuI2UiKXkqZioqISM7JCIiISEiIjckJCIxdm9hJnkxNikqKiEjOyQiIiEhIiI3JCQiMlFNRmJaQi0rIiEjOyQiIzUhIiI3JCQiLERGT0IrIiEjNSQiIzUhIiI3JCQiLURKTCg0LiIhIzYkIiM1ISIiNyQkIipSNSdmNSEiKSQiIzUhIiI3JCQiLnZWIVFCRTYhIzckIiM1ISIiNyQkIis6bz8mPSIhIiokIiM1ISIiNyQkIi52VmI0Klw3ISM3JCIjNSEiIjckJCIuREonPV82OCEjNyQiIzUhIiI3JCQiLXZWeSFlUCIhIzYkIiM1ISIiNyQkIi52PVdVW1YiISM3JCIjNSEiIjckJCItREojPiYpXCIhIzYkIiM1ISIiNyQkIi52JD46bWs6ISM3JCIjNSEiIjckJCIuRGNkUUFpIiEjNyQiIzUhIiI3JCQiLXZ0TFUlbyIhIzYkIiM1ISIiNyQkIitiam1bPCEiKiQiIzUhIiI3JCQiLXZ5Yl42PSEjNiQiIzUhIiI3JCQiLnZWVkRCKD0hIzckIiM1ISIiNyQkIi9EIkcjXDMxPiEjOCQiIzUhIiI3JCQiLUQ2VyUpUj4hIzYkIiM1ISIiNyQkIi92PTc7LGI+ISM4JCIjNSEiIjckJCIuREoiKXksKD4hIzckIiM1ISIiNyQkIjB2JGY4Q3d4PiEjOSQiIzUhIiI3JCQiMioqXGlTLFlgKT4hIzskIiM1ISIiNyQkIjJbKG9IOXk4Kik+ISM7JCIjNSEiIjckJCIyKVw3YDknSEgqPiEjOyQiIzUhIiI3JCQiMnRWW1leRFsqPiEjOyQiIzUhIiI3JCQiMURjdzk5cycqPiEjOiQiIzUhIiI3JCQiMkMiRylbSjwnKSo+ISM7JCIjNSEiIjckJCIrOkteKz8hIiokIiIhISIiNyQkIjIoKioqXFBtLEguIyEjOyQiIiEhIiI3JCQiLEQ2IUhsPyEjNSQiIiEhIiI3JCQiLnYkNHcpUjcjISM3JCIiISEiIjckJCIsdlpmIik9IyEjNSQiIiEhIiI3JCQiLnZWP1MmW0EhIzckIiIhISIiNyQkIi52PVliO0ojISM3JCIiISEiIjckJCIsRDtpTFAjISM1JCIiISEiIjckJCIudiRmTCd6ViMhIzckIiIhISIiNyQkIioqPj0rRCEiKSQiIiEhIiI3JCQiLURFJjRRYyMhIzYkIiIhISIiNyQkIi52Vj41cGkjISM3JCIiISEiIjckJCIrYkoqW28jISIqJCIiISEiIjckJCItRHIiWzh2IyEjNiQiIiEhIiI3JCQiKkwneTVHISIpJCIiISEiIjckJCIudlYhKWZUKEchIzckIiIhISIiNyQkIi5EY0k7WyRIISM3JCIiISEiIjckJCIjSSEiIiQiIiEhIiItJSVWSUVXRzYkOyQiIiEhIiIkIiNJISIiOyQiIiEhIiIkIiM6ISIiLSUrQVhFU0xBQkVMU0c2Jy1JI21pRzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliRzYiNjVRI3h8aXI2Ii8lJ2ZhbWlseUdRITYiLyUlc2l6ZUdRIzEwNiIvJSVib2xkR1EmZmFsc2U2Ii8lJ2l0YWxpY0dRJXRydWU2Ii8lKnVuZGVybGluZUdRJmZhbHNlNiIvJSpzdWJzY3JpcHRHUSZmYWxzZTYiLyUsc3VwZXJzY3JpcHRHUSZmYWxzZTYiLyUrZm9yZWdyb3VuZEdRKFswLDAsMF02Ii8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdNiIvJSdvcGFxdWVHUSZmYWxzZTYiLyUrZXhlY3V0YWJsZUdRJmZhbHNlNiIvJSlyZWFkb25seUdRJmZhbHNlNiIvJSljb21wb3NlZEdRJmZhbHNlNiIvJSpjb252ZXJ0ZWRHUSZmYWxzZTYiLyUraW1zZWxlY3RlZEdRJmZhbHNlNiIvJSxwbGFjZWhvbGRlckdRJmZhbHNlNiIvJTZzZWxlY3Rpb24tcGxhY2Vob2xkZXJHUSZmYWxzZTYiLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWM2Ii1JI21pRzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliRzYiNjVRInk2Ii8lJ2ZhbWlseUdRITYiLyUlc2l6ZUdRIzEwNiIvJSVib2xkR1EmZmFsc2U2Ii8lJ2l0YWxpY0dRJXRydWU2Ii8lKnVuZGVybGluZUdRJmZhbHNlNiIvJSpzdWJzY3JpcHRHUSZmYWxzZTYiLyUsc3VwZXJzY3JpcHRHUSZmYWxzZTYiLyUrZm9yZWdyb3VuZEdRKFswLDAsMF02Ii8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdNiIvJSdvcGFxdWVHUSZmYWxzZTYiLyUrZXhlY3V0YWJsZUdRJmZhbHNlNiIvJSlyZWFkb25seUdRJmZhbHNlNiIvJSljb21wb3NlZEdRJmZhbHNlNiIvJSpjb252ZXJ0ZWRHUSZmYWxzZTYiLyUraW1zZWxlY3RlZEdRJmZhbHNlNiIvJSxwbGFjZWhvbGRlckdRJmZhbHNlNiIvJTZzZWxlY3Rpb24tcGxhY2Vob2xkZXJHUSZmYWxzZTYiLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWM2Ii0lJUZPTlRHNiUlKERFRkFVTFRHJShERUZBVUxURyIjNSUrSE9SSVpPTlRBTEclK0hPUklaT05UQUxHLSUmQ09MT1JHNiYlJFJHQkckIiIhISIiJCIiISEiIiQiIzUhIiItJSpUSElDS05FU1NHNiMiIiUtJSVST09URzYnLSUpQk9VTkRTX1hHNiMkIiQhXCEiIi0lKUJPVU5EU19ZRzYjJCIkPyIhIiItJS1CT1VORFNfV0lEVEhHNiMkIiVJTSEiIi0lLkJPVU5EU19IRUlHSFRHNiMkIiVnTSEiIi0lKUNISUxEUkVORzYi #int(int(CharFn(x,0,1)*CharFn(y,0,1),x=-infinity..infinity),y=-infinity..infinity); print(); # input placeholder #Radon2(CharFn(x,0,1)*CharFn(y,0,1),x,y,1,1,1); print(); # input placeholder #unassign('x'),x:Radon3(CharFn(x,0,1)*CharFn(y,0,1)*CharFn(z,0,1),x,y,z,1,1,1,1); print(); # input placeholder Int2(f,x,y,a,b) is the integral of f(x,y) over R^2 using slicing lines a*x+b*y=p, p in R LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzY9LUkjbWlHRiQ2JlElSW50MkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi5RKiZjb2xvbmVxO0YnRjIvRjZRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0ZALyUpc3RyZXRjaHlHRkAvJSpzeW1tZXRyaWNHRkAvJShsYXJnZW9wR0ZALyUubW92YWJsZWxpbWl0c0dGQC8lJ2FjY2VudEdGQC8lJ2xzcGFjZUdRLDAuMjc3Nzc3OGVtRicvJSdyc3BhY2VHRk8tRjk2MFElcHJvY0YnLyUlYm9sZEdGMUYyL0Y2USVib2xkRicvJStmb250d2VpZ2h0R0ZYRj5GQUZDRkVGR0ZJRksvRk5RJjAuMGVtRicvRlFGZm4tSShtZmVuY2VkR0YkNiUtRiM2Ky1GLDYmUSJmRidGL0YyRjUtRjk2LlEiLEYnRjJGPEY+L0ZCRjFGQ0ZFRkdGSUZLRmVuL0ZRUSwwLjMzMzMzMzNlbUYnLUYsNiZRInhGJ0YvRjJGNUZgby1GLDYmUSJ5RidGL0YyRjVGYG8tRiw2JlEiYUYnRi9GMkY1RmBvLUYsNiZRImJGJ0YvRjJGNUYyRjwtRiw2I1EhRictSSdtc3BhY2VHRiQ2Ji8lJ2hlaWdodEdRJjAuMGV4RicvJSZ3aWR0aEdRJjAuMGVtRicvJSZkZXB0aEdGanAvJSpsaW5lYnJlYWtHUShuZXdsaW5lRictRjk2LlEifkYnRjJGPEY+RkFGQ0ZFRkdGSUZLRmVuRmduLUY5NjBRJmxvY2FsRidGVUYyRldGWUY+RkFGQ0ZFRkdGSUZLRmVuRmduRmNxLUYsNiZRInBGJ0YvRjJGNS1GOTYuUSI7RidGMkY8Rj5GY29GQ0ZFRkdGSUZLRmVuRlBGZXBGY3EtRiw2JlEnYXNzdW1lRidGL0YyRjUtRmluNiUtRiM2JUZpcUZgby1GLDYmUSVyZWFsRidGL0YyRjVGMkY8LUY5Ni5RIjpGJ0YyRjxGPkZBRkNGRUZHRklGS0ZNRlBGZXBGY3EtRiw2JlEkaW50RidGL0YyRjUtRmluNiUtRiM2Ky1GLDYmUSdSYWRvbjJGJ0YvRjJGNS1GaW42JS1GIzYtRl1vRmBvRmZvRmBvRmlvRmBvRlxwRmBvRl9wRmBvRmlxRjJGPEZgb0ZpcS1GOTYuUSI9RidGMkY8Rj5GQUZDRkVGR0ZJRktGTUZQLUY5Ni5RKiZ1bWludXMwO0YnRjJGPEY+RkFGQ0ZFRkdGSUZLL0ZOUSwwLjIyMjIyMjJlbUYnL0ZRRmF0LUYsNiZRKCZpbmZpbjtGJ0YvRjJGNS1GOTYuUSMuLkYnRjJGPEY+RkFGQ0ZFRkdGSUZLRmB0RmduRmN0RjJGPC1GOTYuUScmc2RvdDtGJ0YyRjxGPkZBRkNGRUZHRklGS0ZlbkZnbi1GaW42JS1GIzYjLUkmbWZyYWNHRiQ2KS1JI21uR0YkNiVRIjFGJ0YyRjwtRiM2JC1GLDYmUSVzcXJ0RicvRjBGQEYyRjwtRmluNiUtRiM2JS1JJW1zdXBHRiQ2JUZccC1GIzYjLUZkdTYlUSIyRidGMkY8LyUxc3VwZXJzY3JpcHRzaGlmdEdRIjBGJy1GOTYuUSIrRidGMkY8Rj5GQUZDRkVGR0ZJRktGYHRGYnQtRmJ2NiVGX3BGZHZGaXZGMkY8LyUubGluZXRoaWNrbmVzc0dRIjFGJy8lK2Rlbm9tYWxpZ25HUSdjZW50ZXJGJy8lKW51bWFsaWduR0Zmdy8lKWJldmVsbGVkR0ZALyUrZm9yZWdyb3VuZEdGNEYyRjxGXHJGZXBGY3EtRjk2MFEkZW5kRidGVUYyRldGWUY+RkFGQ0ZFRkdGSUZLRmVuRmduRmly print(); # input placeholder LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2I1EhRic= IntNormal2(f,x,y,theta) is the integral of f over R^2 using slicing lines x*cos(theta)+y*sin(theta)=p, p in R LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzY7LUkjbWlHRiQ2JlErSW50Tm9ybWFsMkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi5RKiZjb2xvbmVxO0YnRjIvRjZRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0ZALyUpc3RyZXRjaHlHRkAvJSpzeW1tZXRyaWNHRkAvJShsYXJnZW9wR0ZALyUubW92YWJsZWxpbWl0c0dGQC8lJ2FjY2VudEdGQC8lJ2xzcGFjZUdRLDAuMjc3Nzc3OGVtRicvJSdyc3BhY2VHRk8tRjk2MFElcHJvY0YnLyUlYm9sZEdGMUYyL0Y2USVib2xkRicvJStmb250d2VpZ2h0R0ZYRj5GQUZDRkVGR0ZJRksvRk5RJjAuMGVtRicvRlFGZm4tSShtZmVuY2VkR0YkNiUtRiM2KS1GLDYmUSJmRidGL0YyRjUtRjk2LlEiLEYnRjJGPEY+L0ZCRjFGQ0ZFRkdGSUZLRmVuL0ZRUSwwLjMzMzMzMzNlbUYnLUYsNiZRInhGJ0YvRjJGNUZgby1GLDYmUSJ5RidGL0YyRjVGYG8tRiw2JlEoJnRoZXRhO0YnL0YwRkBGMkY8RjJGPC1GLDYjUSFGJy1JJ21zcGFjZUdGJDYmLyUnaGVpZ2h0R1EmMC4wZXhGJy8lJndpZHRoR1EmMC4wZW1GJy8lJmRlcHRoR0ZocC8lKmxpbmVicmVha0dRKG5ld2xpbmVGJy1GOTYuUSJ+RidGMkY8Rj5GQUZDRkVGR0ZJRktGZW5GZ24tRjk2MFEmbG9jYWxGJ0ZVRjJGV0ZZRj5GQUZDRkVGR0ZJRktGZW5GZ25GYXEtRiw2JlEicEYnRi9GMkY1LUY5Ni5RIjtGJ0YyRjxGPkZjb0ZDRkVGR0ZJRktGZW5GUEZjcEZhcS1GLDYmUSdhc3N1bWVGJ0YvRjJGNS1GaW42JS1GIzYlRmdxRmBvLUYsNiZRJXJlYWxGJ0YvRjJGNUYyRjwtRjk2LlEiOkYnRjJGPEY+RkFGQ0ZFRkdGSUZLRk1GUEZjcEZhcS1GLDYmUSRpbnRGJ0YvRjJGNS1GaW42JS1GIzYrLUYsNiZRLVJhZG9uTm9ybWFsMkYnRi9GMkY1LUZpbjYlLUYjNitGXW9GYG9GZm9GYG9GaW9GYG9GXHBGYG9GZ3FGMkY8RmBvRmdxLUY5Ni5RIj1GJ0YyRjxGPkZBRkNGRUZHRklGS0ZNRlAtRjk2LlEqJnVtaW51czA7RidGMkY8Rj5GQUZDRkVGR0ZJRksvRk5RLDAuMjIyMjIyMmVtRicvRlFGX3QtRiw2JlEoJmluZmluO0YnRi9GMkY1LUY5Ni5RIy4uRidGMkY8Rj5GQUZDRkVGR0ZJRktGXnRGZ25GYXRGMkY8RmpxRmNwRmFxLUY5NjBRJGVuZEYnRlVGMkZXRllGPkZBRkNGRUZHRklGS0ZlbkZnbkZncg== Int3(f,x,y,z,a,b,c) is the integral of f(x,y,z) over R^3 using slicing planes a*x+b*y+c*z=p, p in R LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzY4LUkjbWlHRiQ2JlElSW50M0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi5RKiZjb2xvbmVxO0YnRjIvRjZRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0ZALyUpc3RyZXRjaHlHRkAvJSpzeW1tZXRyaWNHRkAvJShsYXJnZW9wR0ZALyUubW92YWJsZWxpbWl0c0dGQC8lJ2FjY2VudEdGQC8lJ2xzcGFjZUdRLDAuMjc3Nzc3OGVtRicvJSdyc3BhY2VHRk8tRjk2MFElcHJvY0YnLyUlYm9sZEdGMUYyL0Y2USVib2xkRicvJStmb250d2VpZ2h0R0ZYRj5GQUZDRkVGR0ZJRksvRk5RJjAuMGVtRicvRlFGZm4tSShtZmVuY2VkR0YkNiUtRiM2Ly1GLDYmUSJmRidGL0YyRjUtRjk2LlEiLEYnRjJGPEY+L0ZCRjFGQ0ZFRkdGSUZLRmVuL0ZRUSwwLjMzMzMzMzNlbUYnLUYsNiZRInhGJ0YvRjJGNUZgby1GLDYmUSJ5RidGL0YyRjVGYG8tRiw2JlEiekYnRi9GMkY1RmBvLUYsNiZRImFGJ0YvRjJGNUZgby1GLDYmUSJiRidGL0YyRjVGYG8tRiw2JlEiY0YnRi9GMkY1RjJGPC1GLDYjUSFGJy1JJ21zcGFjZUdGJDYmLyUnaGVpZ2h0R1EmMC4wZXhGJy8lJndpZHRoR1EmMC4wZW1GJy8lJmRlcHRoR0ZgcS8lKmxpbmVicmVha0dRKG5ld2xpbmVGJy1GOTYuUSJ+RidGMkY8Rj5GQUZDRkVGR0ZJRktGZW5GZ24tRjk2MFEmbG9jYWxGJ0ZVRjJGV0ZZRj5GQUZDRkVGR0ZJRktGZW5GZ25GaXEtRiw2JlEicEYnRi9GMkY1LUY5Ni5RIjtGJ0YyRjxGPkZjb0ZDRkVGR0ZJRktGZW5GUEZbcUZpcS1GLDYmUSRpbnRGJ0YvRjJGNS1GaW42JS1GIzYrLUYsNiZRJ1JhZG9uM0YnRi9GMkY1LUZpbjYlLUYjNjFGXW9GYG9GZm9GYG9GaW9GYG9GXHBGYG9GX3BGYG9GYnBGYG9GZXBGYG9GX3JGMkY8RmBvRl9yLUY5Ni5RIj1GJ0YyRjxGPkZBRkNGRUZHRklGS0ZNRlAtRjk2LlEqJnVtaW51czA7RidGMkY8Rj5GQUZDRkVGR0ZJRksvRk5RLDAuMjIyMjIyMmVtRicvRlFGanMtRiw2JlEoJmluZmluO0YnRi9GMkY1LUY5Ni5RIy4uRidGMkY8Rj5GQUZDRkVGR0ZJRktGaXNGZ25GXHRGMkY8LUY5Ni5RJyZzZG90O0YnRjJGPEY+RkFGQ0ZFRkdGSUZLRmVuRmduLUZpbjYlLUYjNiMtSSZtZnJhY0dGJDYpLUkjbW5HRiQ2JVEiMUYnRjJGPC1GIzYkLUYsNiZRJXNxcnRGJy9GMEZARjJGPC1GaW42JS1GIzYnLUklbXN1cEdGJDYlRl9wLUYjNiMtRl11NiVRIjJGJ0YyRjwvJTFzdXBlcnNjcmlwdHNoaWZ0R1EiMEYnLUY5Ni5RIitGJ0YyRjxGPkZBRkNGRUZHRklGS0Zpc0ZbdC1GW3Y2JUZicEZddkZidkZldi1GW3Y2JUZlcEZddkZidkYyRjwvJS5saW5ldGhpY2tuZXNzR1EiMUYnLyUrZGVub21hbGlnbkdRJ2NlbnRlckYnLyUpbnVtYWxpZ25HRmF3LyUpYmV2ZWxsZWRHRkAvJStmb3JlZ3JvdW5kR0Y0RjJGPEZickZbcUZpcS1GOTYwUSRlbmRGJ0ZVRjJGV0ZZRj5GQUZDRkVGR0ZJRktGZW5GZ24tRjk2LlEiOkYnRjJGPEY+RkFGQ0ZFRkdGSUZLRk1GUA== Examples #Int2(exp(-x^2-y^2),x,y,1,1); print(); # input placeholder #Int2(exp(-x^2-y^2)*(x^2+y^2),x,y,1,1); print(); # input placeholder #IntNormal2(exp(-x^2-y^2),x,y,Pi/3); print(); # input placeholder #Int3(exp(-x^2-y^2-z^2),x,y,z,1,1,1); print(); # input placeholder Int3(CharFn(x,0,1)*CharFn(y,0,1)*CharFn(z,0,1),x,y,z,1,1,1); LUkjbWlHNiMvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0dJKF9zeXNsaWJHRic2JVE1b3V0cHV0fnJlZGlyZWN0ZWQuLi5GJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRic= print(); # input placeholder IiIi LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2I1EhRic= Density2(f,x,y,a,b,z) computes the density of the random variable Z=a X + b Y, if X, Y have density f QyQ+SSlEZW5zaXR5Mkc2ImYqNihJImZHRiVJInhHRiVJInlHRiVJImFHRiVJImJHRiVJInpHRiVGJUYlRiUtSSlzaW1wbGlmeUc2JCUqcHJvdGVjdGVkR0koX3N5c2xpYkdGJTYjKiYtSSdSYWRvbjJHRiU2KDkkOSU5JjknOSg5KSIiIi1JJXNxcnRHRjA2IywmKiRGOyIiI0Y+KiRGPEZERj4hIiJGJUYlRiVGRg== JSFH Density2(CharFn(x,-1,1)*CharFn(y,2,3),x,y,5,-2,z); LUkjbWlHNiMvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0dJKF9zeXNsaWJHRic2JVE1b3V0cHV0fnJlZGlyZWN0ZWQuLi5GJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRic= print(); # input placeholder LUkqcGllY2V3aXNlRyUqcHJvdGVjdGVkRzYsMUkiekc2IiEjNiIiITFGJyEiKiwmIyIjNiIjNSIiIkYnI0YxRjAxRichIiIjRjEiIiYxRidGMSwmRicjRjRGMEYyRjEyRjFGJ0Yq plot(%,z=-20..5,thickness=3,color=blue); LUkjbWlHNiMvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0dJKF9zeXNsaWJHRic2JVE1b3V0cHV0fnJlZGlyZWN0ZWQuLi5GJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRic= %; NigtJSdDVVJWRVNHNiM3ZXA3JCQhJCsjISIiJCIiISEiIjckJCEyTEwkZTlyXVg+ISM6JCIiISEiIjckJCEybDthajkkNCkqPSEjOiQiIiEhIiI3JCQhMkxMMy09clolPSEjOiQiIiEhIiI3JCQhMUwkZTl3JjQieiIhIzkkIiIhISIiNyQkITJsOy9FWHZ3dCIhIzokIiIhISIiNyQkITFMMy0pKXo5KW8iISM5JCIiISEiIjckJCEvdj1uXidvaiIhIzckIiIhISIiNyQkITJMJDNfKyVHUWUiISM6JCIiISEiIjckJCEvdlZCPCc0YCIhIzckIiIhISIiNyQkITJsbTt6JT1ldzkhIzokIiIhISIiNyQkITJLTGVSLSVvRzkhIzokIiIhISIiNyQkITIpKioqXCg9Q3d1OCEjOiQiIiEhIiI3JCQhLUQxJT4xSyIhIzUkIiIhISIiNyQkITIqKioqXDdlVSVvNyEjOiQiIiEhIiI3JCQhMk0kM19ENTFANyEjOiQiIiEhIiI3JCQhMmxtO0h4Plo7IiEjOiQiIiEhIiI3JCQhMmxtIkhkYiYzOSIhIzokIiIhISIiNyQkITJubW07TSIqcDYiISM6JCIiISEiIjckJCEyMkZwRVNeKzYiISM6JCIiISEiIjckJCExdj1uajk2LjYhIzkkIiIhISIiNyQkITIjelduQzo8JzQiISM6JCIxJykzX0RgWkdRISM9NyQkITJLM3hjZUojKjMiISM6JCIyYG4iSEs5JW8yIiEjPTckJCEyO0gjbzI8TnY1ISM6JCIyKFszeEojSFtZIyEjPTckJCEvdm9IPVpoNSEjNyQiMUErREpxIkcmUSEjPDckJCEyOkgyZXkmPVw1ISM6JCIyJ2YzRj45VSIzJiEjPTckJCEyTDNGPnUqKm8uIiEjOiQiMXY7SDJlLTVqISM8NyQkITF2by8pcDhZLSIhIzkkIjE3REomPkknUXYhIzw3JCQhMm1tbVRsRkIsIiEjOiQiME5MTGVNc3cpISM7NyQkITFbKG96O3olKSkqKiEjOiQiMj5ESj8kM182NSEjPDckJCExSzNGJXoib2ApKiEjOiQiMilvIkhkPz1qOSIhIzw3JCQhMTtIZD9XKSk9KCohIzokIjJYM0YlemI2IkciISM8NyQkITEpKlwoby8oMyVlKiEjOiQiMkQrREomSCJmVCIhIzw3JCQhL0RKcSFHZFgqISM4JCIyMl0ob0g+Rlc6ISM8NyQkITEqKipcUDRwdEsqISM6JCIxLCtEMTRqczshIzs3JCQhMSlcKD08LCwqPiohIzokIjJFXTdHKSkqKTQhPSEjPDckJCEuRDE5XjEyKiEjNyQiMjMrdiRmKVskSD4hIzw3JCQhMXklXCFmKW9yLiohIzokIjJHX100OUpHJz4hIzw3JCQhMWRSWnhsby4hKiEjOiQiMlAvRURVOGoqPiEjPDckJCExUCUpKmVILy0oKikhIzokIiIjISIiNyQkITE7SEs5P3NPKikhIzokIiIjISIiNyQkITF2PTxedXZwKSkhIzokIiIjISIiNyQkITFLMy0pKUd6LSkpISM6JCIiIyEiIjckJCExXCg9PHdqKW8nKSEjOiQiIiMhIiI3JCQhMWxtVE5ZJFxgKSEjOiQiIiMhIiI3JCQhMWwiSEs5ZCopRykhIzokIiIjISIiNyQkITFtOy9eJ3pILykhIzokIiIjISIiNyQkITFLTGVSKFJCXighIzokIiIjISIiNyQkITFLJDNfK2E2J3AhIzokIiIjISIiNyQkITEqKlw3Ll9NIlsnISM6JCIiIyEiIjckJCExTEwzXyZRSidmISM6JCIiIyEiIjckJCExKioqKipcUCF5RmEhIzokIiIjISIiNyQkITEqKipcUCVvLi9cISM6JCIiIyEiIjckJCEyJioqXChvLylHKFIlISM7JCIiIyEiIjckJCExLCtEMSpIWSRRISM6JCIiIyEiIjckJCEybW1tO2FjIUhMISM7JCIiIyEiIjckJCExKSoqKlxpIVwjKnkjISM6JCIiIyEiIjckJCEyWEwzX0QuLEkjISM7JCIiIyEiIjckJCExKCoqKlwob1BgdyIhIzokIiIjISIiNyQkITJFJDNfRDh2ODohIzskIiIjISIiNyQkITFvO2FqXDtpNyEjOiQiIiMhIiI3JCQhMjArXVAlW25JNiEjOyQiIiMhIiI3JCQhMUhMZVJzJT0qKiohIzskIjFMJGVScyU9Kio+ISM7NyQkITFgbW1UZyVwbikhIzskIjJgbW1UZyVwbj0hIzw3JCQhMXgqXFAlWy9pdCEjOyQiMSkqXFAlWy9pdCIhIzs3JCQhMV4iSDJlKVt3ZyEjOyQiMmEiSDJlKVt3ZyIhIzw3JCQhMUQkM3hKSzR6JSEjOyQiMkYkM3hKSzR6OSEjPDckJCExKlwob2FnUDBOISM7JCIwdm9hZ1AwTiIhIzo3JCQhMXRtbSJ6Pik+QSEjOyQiMnVtbSJ6Pik+QSIhIzw3JCQhMTRdUE1faFIoKSEjPCQiMi12VkI6J1IoMyIhIzw3JCQiMTZuInpXbio9WiEjPCQiMEwzX0QuIkcmKiEjOzckJCIxVjMtOF12PD0hIzskIjFlInpwKVxDIz0pISM8NyQkIjE6K0QiRzhPOyQhIzskIjElKSpcKD1uUU9vISM8NyQkIjEnPS9Fdk0pZlchIzskIjJZImVSWl87U2IhIz03JCQiMWQkZVJBY2d2JiEjOyQiMk5rVGd4VlJDJSEjPTckJCIxR0RKJnB4QTAoISM7JCIyQlooby9Cc1pIISM9NyQkIjEqcG1tOypcWyQpISM7JCIxLExMTDNdXjshIzw3JCQiMSNwVCZRRzJ1JyohIzskIjEoMyRlOTtGZkshIz03JCQiMiZvOy9eWScqKjQiISM7JCIiISEiIjckJCIyeTtIIz0/X0s3ISM7JCIiISEiIjckJCIyc207YVF6XU8iISM7JCIiISEiIjckJCIyQV1QZiQpKSp6aSIhIzskIiIhISIiNyQkIjJyTGVrRz00Kj0hIzskIiIhISIiNyQkIjJGKytdaTRUUCMhIzskIiIhISIiNyQkIjJWTCQzRjkheiNIISM7JCIiISEiIjckJCIyKG9tbTslPktVJCEjOyQiIiEhIiI3JCQiMkwrREpxSjgmUiEjOyQiIiEhIiI3JCQiMS9dKG9hLW9YJSEjOiQiIiEhIiI3JCQiI10hIiIkIiIhISIiLSUlVklFV0c2JDskISQrIyEiIiQiI10hIiIlKERFRkFVTFRHLSUrQVhFU0xBQkVMU0c2Jy1JI21pRzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliRzYiNjVRIno2Ii8lJ2ZhbWlseUdRITYiLyUlc2l6ZUdRIzEwNiIvJSVib2xkR1EmZmFsc2U2Ii8lJ2l0YWxpY0dRJXRydWU2Ii8lKnVuZGVybGluZUdRJmZhbHNlNiIvJSpzdWJzY3JpcHRHUSZmYWxzZTYiLyUsc3VwZXJzY3JpcHRHUSZmYWxzZTYiLyUrZm9yZWdyb3VuZEdRKFswLDAsMF02Ii8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdNiIvJSdvcGFxdWVHUSZmYWxzZTYiLyUrZXhlY3V0YWJsZUdRJmZhbHNlNiIvJSlyZWFkb25seUdRJmZhbHNlNiIvJSljb21wb3NlZEdRJmZhbHNlNiIvJSpjb252ZXJ0ZWRHUSZmYWxzZTYiLyUraW1zZWxlY3RlZEdRJmZhbHNlNiIvJSxwbGFjZWhvbGRlckdRJmZhbHNlNiIvJTZzZWxlY3Rpb24tcGxhY2Vob2xkZXJHUSZmYWxzZTYiLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWM2IlEhNiItJSVGT05URzYlJShERUZBVUxURyUoREVGQVVMVEciIzUlK0hPUklaT05UQUxHJStIT1JJWk9OVEFMRy0lJkNPTE9SRzYmJSRSR0JHJCIiISEiIiQiIiEhIiIkIiM1ISIiLSUqVEhJQ0tORVNTRzYjIiIkLSUlUk9PVEc2Jy0lKUJPVU5EU19YRzYjJCIkZyIhIiItJSlCT1VORFNfWUc2IyQiJD8iISIiLSUtQk9VTkRTX1dJRFRIRzYjJCIlZ1AhIiItJS5CT1VORFNfSEVJR0hURzYjJCIlZ00hIiItJSlDSElMRFJFTkc2Ig== Density3(f,x,y,z,a,b,c,w) computes the density of the random variable W=a X + b Y + cZ, if X, Y, Z have density f QyQ+SSlEZW5zaXR5M0c2ImYqNipJImZHRiVJInhHRiVJInlHRiVJInpHRiVJImFHRiVJImJHRiVJImNHRiVJIndHRiVGJUYlRiUtSSlzaW1wbGlmeUc2JCUqcHJvdGVjdGVkR0koX3N5c2xpYkdGJTYjKiYtSSdSYWRvbjNHRiU2KjkkOSU5JjknOSg5KTkqOSsiIiItSSVzcXJ0R0YyNiMsKCokRj4iIiNGQiokRj9GSEZCKiRGQEZIRkIhIiJGJUYlRiVGSw== print(); # input placeholder JSFH Density3(CharFn(x,0,1)*CharFn(y,-1,1)*CharFn(z,0,2),x,y,z,1,-2,3,w); LUkjbWlHNiMvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0dJKF9zeXNsaWJHRic2JVE1b3V0cHV0fnJlZGlyZWN0ZWQuLi5GJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRic= print(); # input placeholder LFItSSpIZWF2aXNpZGVHNiQlKnByb3RlY3RlZEdJKF9zeXNsaWJHNiI2IywmISImIiIiSSJ3R0YoRiwjIiNEIiM3LUYkNiMsJkYsRixGLUYsIyEiIkYwLUYkNiMsJiEiKkYsRi1GLCMhI0YiIiUtRiQ2IywmISIpRixGLUYsIyIjOyIiJC1GJDYjLCYhIiNGLEYtRiwjRjVGQyomRjZGLEYtIiIjRjQqJkY2RixGLUYsI0ZDRkoqJkYxRixGLUYsI0Y1IiInKiZGREYsRi1GLCNGLEZDLUYkNiMsJkYtRixGSkYsRlEtRiQ2IywmRi1GLCEiJUYsI0ZYRkMtRiQ2IywmISIkRixGLUYsI0ZDRjwqJkYjRixGLUYsI0YrRk8qJkYtRkpGI0YsI0YsRjAqJkZaRixGLUZKRlxvKiZGVUYsRi1GLCNGSkZDKiZGPUYsRi1GLEZZKiZGWkYsRi1GLCNGNUZKKiZGLUZKRlVGLEY0KiZGLUYsRlJGLEZRKiZGMUYsRi1GSkY0KiZGLUZKRj1GLEZcbyomRkRGLEYtRkpGNComRi1GSkZSRixGXG8= plot(%,w=-5..5,thivkness=3,colot=blue);JSFH LUkjbWlHNiMvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0dJKF9zeXNsaWJHRic2JVE1b3V0cHV0fnJlZGlyZWN0ZWQuLi5GJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRic= %; NigtJSdDVVJWRVNHNiM3Y3A3JCQhI1MhIiIkIiIhISIiNyQkISxEaERRIVEhIzUkIiIhISIiNyQkIS52b0tOSmokISM3JCIiISEiIjckJCEyKCoqKlwoW2k8VE0hIzskIiIhISIiNyQkIS1EVFolekMkISM2JCIiISEiIjckJCEudiRIO2piSSEjNyQiIiEhIiI3JCQhLnZvdkt0KEchIzckIiIhISIiNyQkIS52PWc5RnAjISM3JCIiISEiIjckJCEudj1DI3ksRCEjNyQiIiEhIiI3JCQhLnZWP2k5SiMhIzckIiIhISIiNyQkITIpKioqKlxfWXA6QCEjOyQiIiEhIiI3JCQhLUQnW2lLJT4hIzYkIiIhISIiNyQkITIoKioqKlwyWjlcPCEjOyQiIiEhIiI3JCQhMi0rK0QnKUhVYiIhIzskIiIhISIiNyQkITIoKioqKlwjSCRSbTghIzskIiIhISIiNyQkITIsK3Y9cD5lPiIhIzskIiIhISIiNyQkIS92PVBhUyU0IiEjOCQiIiEhIiI3JCQhK0Q9IipIKiohIzUkIjEpUihSInpgcz0pISNANyQkIS52VilRODooKiEjOCQiMkVGKT0oUnlDTiIhIz83JCQhLXZWZk4rJiohIzckIjIkR0RWI1FPMjslISM/NyQkITEqKlw3LiF5YkcqISM7JCIxdXZrJFxZbV0pISM+NyQkISxEMSszMiohIzYkIjFUTDN0My1SOSEjPTckJCEtRCI9VzdrKSEjNyQiMU07SmUqR3EyJCEjPTckJCEpJClvNiMpISIpJCIwO0dSKnk0SWAhIzw3JCQhLnZWM1BCQCghIzgkIjIpeSVlPVV4XkgiISM9NyQkITEsK3ZvZSlIQCchIzskIjJqJ3kvMGdDIVIjISM9NyQkITEtXVA0MlJHYCEjOyQiMk1qdnRBQXRqJCEjPTckJCEyRSsrK2ImelZXISM8JCIwam0kW1lCWF4hIzs3JCQhMSoqXFBmV0R0TSEjOyQiMWMheSdlWHQqNCghIzw3JCQhMScqKlwob0xyLUQhIzskIjFybT0weUBvJCohIzw3JCQhMmQqKipcUChHJnk6ISM8JCIyTkEmM1AnPj89IiEjPDckJCExYioqXGk1V1ZsISM8JCIwMnQhbyEpb2I5ISM6NyQkIjImZStESmdYKjQkISM9JCIySlIkNGoyUW88ISM8NyQkIjJzKytESk5VRiIhIzwkIjJFSTEuXl1WMSMhIzw3JCQiMS9dUCVHYShmQCEjOyQiMlsxeD5YVSkzQiEjPDckJCIyMitdaUR0Xy8kISM8JCIyYlpIYEUnPkZEISM8NyQkIjJ4KlwobzRELyslISM8JCIyT2EncFwkPU10IyEjPDckJCIxJioqKlxQcGRiXCEjOyQiMjhJdkYkKkgjNEghIzw3JCQiMSgqXFBmN3JaZiEjOyQiMShSVmdFXCdmSSEjOzckJCIxKioqXDdlWClScCEjOyQiMTlNQSNlZHM8JCEjOzckJCIxLCsrRDldLnkhIzskIjJGUStOQkJIRCQhIzw3JCQiMS4rdm9zOm4nKSEjOyQiMk5CSFVdRFBJJCEjPDckJCIxLXZvYUthTCIqISM7JCIyOi92JXkzIzNLJCEjPDckJCIuRDFDSCoqZiohIzgkIjEmKVs3QmRtSUwhIzs3JCQiMipcaWxBOmoxNSEjOyQiMUxMTExMTExMISM7NyQkIjIoKioqXDc3cUswIiEjOyQiMlBMTExMTExMJCEjPDckJCIyJyoqXDckZk0nXDYhIzskIjFMTExMTExMTCEjOzckJCIyJioqKioqXDEqKmZDIiEjOyQiMkVMTExMTExMJCEjPDckJCIyKCoqKlxpdFlYViIhIzskIjFMTExMTExMTCEjOzckJCIuREpJd3BoIiEjNyQiMUxMTExMTExMISM7NyQkIjInKioqXFBCTCY+PSEjOyQiMUxMTExMTExMISM7NyQkIjImKipcUFJrYDU+ISM7JCIxTUxMTExMTEwhIzs3JCQiMiUqKioqKlxrUjorIyEjOyQiMSp5KVsjUUhMTCQhIzs3JCQiMigqXGk6KTQkZS0jISM7JCIxJT4+dEVAQUwkISM7NyQkIjIoKipcNz1CN10/ISM7JCIxJEh3YERZIkhMISM7NyQkIjInKlwob2FPVHU/ISM7JCIyMTNnbU0vVEskISM8NyQkIi1EIipccSk0IyEjNiQiMjBjcTZhJjQ8TCEjPDckJCIyLit2Vm0oR1pAISM7JCIxJmZyKVJzPChIJCEjOzckJCIyMSsrdkxxZT4jISM7JCIyRVJ6OU4iUnBLISM8NyQkIi9EIkdlO1JHIyEjOCQiMjo3U0xpJikqKT4kISM8NyQkIjInKipcN0dHJz5QIyEjOyQiMic+YTpDJVJGNSQhIzw3JCQiL0RKSTFBb0MhIzgkIjJZRjsqbyFceidIISM8NyQkIjIwKytEVnlXYyMhIzskIjJtQlAoKVx0QSFHISM8NyQkIi9EIkdfXF1sIyEjOCQiMCc9eFBOPT1FISM6NyQkIjIlKipcNzgxaVhGISM7JCIyWCQ9Wk4pXG5TIyEjPDckJCIyJioqXFAqXCRIU0chIzskIjIlR05eIlI2bDojISM8NyQkIjIoKipcaSZRbVwkSCEjOyQiMndgJmVIa1J3PSEjPDckJCIvRGNPa19GSSEjOCQiMkwvMyQ+Wjx3OiEjPDckJCIsdlsnMz9KISM1JCIybCFvWSMpSFQhSCIhIzw3JCQiL0QiR0cpKXBAJCEjOCQiMkw/KTMjZVg9LSIhIzw3JCQiMicqKlw3eSsqUUokISM7JCIxKio9I1xUIXlYeSEjPDckJCIyLl1pUy09c1MkISM7JCIya0hSKlx5XWNlISM9NyQkIjEsKytxZmErTiEjOiQiLzBzTUBkZFQhIzo3JCQiMjArdlZGKClmZiQhIzskIjFaZDZUIVEvcyMhIzw3JCQiLXZ5Jkc5cCQhIzYkIjIuLC8tcVFwZSIhIz03JCQiMi5dUDRlemd5JCEjOyQiMSVRWSdbNCpwaSghIz03JCQiMjArREplSTIpUSEjOyQiMHg7T2psM1AjISM8NyQkIjIudiRmLnlAQ1IhIzskIjFfQ0Q/KW86ZCohIz43JCQiL0QxQ11xblIhIzgkIjJGWG9ZeXYjUTwhIz83JCQiMERKWEMjPjZTISM5JCIxRTFdKTQjKjNXJSEjSjckJCIyJioqKioqXFl6WTAlISM7JCEyeT1dJkh3RUs4ISNKNyQkIjImKipcUCopPk9hVCEjOyQhMnk9XSZId0VLOCEjSjckJCIxKioqXFBeV1NEJSEjOiQhMnk9XSZId0VLOCEjSjckJCIxLCsrISoqZUJWJSEjOiQhMV83Kyg+JXkiKSkpISNKNyQkIjEqKlw3OCV6Q2klISM6JCExRTFdKTQjKjNXJSEjSjckJCIudm8iKltXIVshIzckIjFfNysoPiV5IikpKSEjSjckJCIjXSEiIiQhMV83Kyg+JXkiKSkpISNKLSUlVklFV0c2JDskISNTISIiJCIjXSEiIiUoREVGQVVMVEctJStBWEVTTEFCRUxTRzYnLUkjbWlHNiMvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0dJKF9zeXNsaWJHNiI2NVEidzYiLyUnZmFtaWx5R1EhNiIvJSVzaXplR1EjMTA2Ii8lJWJvbGRHUSZmYWxzZTYiLyUnaXRhbGljR1EldHJ1ZTYiLyUqdW5kZXJsaW5lR1EmZmFsc2U2Ii8lKnN1YnNjcmlwdEdRJmZhbHNlNiIvJSxzdXBlcnNjcmlwdEdRJmZhbHNlNiIvJStmb3JlZ3JvdW5kR1EoWzAsMCwwXTYiLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV02Ii8lJ29wYXF1ZUdRJmZhbHNlNiIvJStleGVjdXRhYmxlR1EmZmFsc2U2Ii8lKXJlYWRvbmx5R1EmZmFsc2U2Ii8lKWNvbXBvc2VkR1EmZmFsc2U2Ii8lKmNvbnZlcnRlZEdRJmZhbHNlNiIvJStpbXNlbGVjdGVkR1EmZmFsc2U2Ii8lLHBsYWNlaG9sZGVyR1EmZmFsc2U2Ii8lNnNlbGVjdGlvbi1wbGFjZWhvbGRlckdRJmZhbHNlNiIvJSxtYXRodmFyaWFudEdRJ2l0YWxpYzYiUSE2Ii0lJUZPTlRHNiUlKERFRkFVTFRHJShERUZBVUxURyIjNSUrSE9SSVpPTlRBTEclK0hPUklaT05UQUxHLSUmQ09MT1JHNiYlJFJHQkckIiIhISIiJCIiISEiIiQiIzUhIiItJSpUSElDS05FU1NHNiMiIiQtJSVST09URzYnLSUpQk9VTkRTX1hHNiMkIiRJIiEiIi0lKUJPVU5EU19ZRzYjJCIjISkhIiItJS1CT1VORFNfV0lEVEhHNiMkIiUheiQhIiItJS5CT1VORFNfSEVJR0hURzYjJCIlIVwkISIiLSUpQ0hJTERSRU5HNiI= Example: Normal distribution Normal1(x,a,\317\203) is the normal density with mean \316\267 and stand. dev. \317\203 Normal2(x,y,a,b,\317\201) is the bivariate normal with center (a,b) and coefficient \317\261 QyQ+SShOb3JtYWwxRzYiZio2JUkieEdGJUkjbXVHRiVJJnNpZ21hR0YlNiNJI3gxR0YlRiVGJUMkPjgkLCY5JCIiIjklISIiKigtSSRleHBHNiQlKnByb3RlY3RlZEdJKF9zeXNsaWJHRiU2IywkKiZGLyIiIzkmISIjI0Y0Rj5GMi1JJXNxcnRHRjg2IywkSSNQaUdGOUY+RjRGP0Y0RiVGJUYlRjQ= print(); # input placeholder QyQ+SShOb3JtYWwyRzYiZio2J0kieEdGJUkieUdGJUkiYUdGJUkiYkdGJUkkcmhvR0YlNiRJI3gxR0YlSSN5MUdGJUYlRiVDJT44JCwmOSQiIiI5JiEiIj44JSwmOSVGNTknRjcsJCooLUkkZXhwRzYkJSpwcm90ZWN0ZWRHSShfc3lzbGliR0YlNiMqJiwoKiRGMiIiI0Y3Kig5KEY1RjJGNUY5RjVGSCokRjlGSEY3RjUsJkZIRjUqJEZKRkghIiNGN0Y1SSNQaUdGQkY3LUklc3FydEdGQTYjLCZGNUY1Rk1GN0Y3I0Y1RkhGJUYlRiVGNw== print(); # input placeholder Examples evalf(int(Normal1(x,0,1),x=-1..1)); LUkjbWlHNiMvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0dJKF9zeXNsaWJHRic2JVE1b3V0cHV0fnJlZGlyZWN0ZWQuLi5GJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRic= print(); # input placeholder JCIrP1wqbyNvISM1 Density2(Normal2(x1,x2,3,2,0.4),x1,x2,3,-2,y); LUkjbWlHNiMvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0dJKF9zeXNsaWJHRic2JVE1b3V0cHV0fnJlZGlyZWN0ZWQuLi5GJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRic= print(); # input placeholder LCQtSSRleHBHNiQlKnByb3RlY3RlZEdJKF9zeXNsaWJHNiI2IywoJCErVi1SQzohIioiIiJJInlHRigkIit3NGMoNCchIzUqJEYvIiIjJCErdjRjKDQnISM2JCIrdW87JFIiRjI= plot(%,y=-12..20,thickness=3,color=blue); LUkjbWlHNiMvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0dJKF9zeXNsaWJHRic2JVE1b3V0cHV0fnJlZGlyZWN0ZWQuLi5GJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRic= %; NigtJSdDVVJWRVNHNiM3Y283JCQhJD8iISIiJCIyYFxhMkI4bTQkISNENyQkITJubW1tNVwtOCIhIzokIjJ2NC8heikpW3c3ISNDNyQkITJLTEx0QWYmcDUhIzokIjI6Nl51a0k4PCUhI0M3JCQhMm5tbTE2MjgrIiEjOiQiMC9QKCozIUgoXCIhI0A3JCQhMW1tbVlkLUUkKiEjOiQiMT1BPmAwKXo2JiEjQTckJCExTUxMJHpYQWspISM6JCIyJj1rITRKLEVrIiEjQTckJCExbm1tWVVIMyEpISM6JCIxMm5VTSY9PmclISNANyQkITIwKysrOXU9TighIzskIjJMTGFrODMqcDchI0A3JCQhMW5tbUVOK3RtISM6JCIxYnM1TTUuTE0hIz83JCQhMSwrK2crSicqZiEjOiQiMVRlOSZ6Y3p1KSEjPzckJCExTExMYHdDK2AhIzokIjJRPFFhN0crOyMhIz83JCQhMW5tbTFiOihvJSEjOiQiMWBgJyoqei8rYyUhIz43JCQhMjErKysnKmVwKlIhIzskIjI8TUBrK2o1KyIhIz43JCQhKSVHUkkkISIoJCIyI1FFXm5KZHo/ISM+NyQkISovbGdqIyEiKSQiMUo+ZD1YLyEpUiEjPTckJCExbm1tRTZlSD8hIzokIjFsTTshKm8jZSVvISM9NyQkITJRTExMNDglMzghIzskIjImekAjPV4qb0k3ISM9NyQkITFXTExMPCpbKHAhIzskIjEpSGkwYiF5Qz4hIzw3JCQiMCMqKioqKip6MDs4ISM7JCIyJ2UvIlEiUTNlSSEjPTckJCIxQUxMTEkkb0YkISM7JCIyRUVFMiFlVyFvJCEjPTckJCIxX21tbS0xQWshIzskIjF1QylHMl5qUCUhIzw3JCQiMUhMTExJKEcoKSohIzskIjJZN10jeXU+Pl8hIz03JCQiMjIrKytlb0JMIiEjOyQiMjl1WCQqKTRqTWghIz03JCQiMjArKytjbjRtIiEjOyQiMGhhdzRfI2ZxISM7NyQkIjItKysrYW0mKik+ISM7JCIxPF9DKEdvcCwpISM8NyQkIjJPTExMNURDTCMhIzskIjF1WjA7UlNGISohIzw3JCQiMW5tbW1PR3ZFISM6JCIydF87eHNdPysiISM8NyQkIjFubW1jWzghKkghIzokIjJfJSkqZSFmMCEqMyIhIzw3JCQiMmxtbW0vJylcSSQhIzskIjIqXCRRZGslR3A2ISM8NyQkIjIpKioqKioqKmUmZldPISM7JCIyUlthcFhHYkMiISM8NyQkIjFMTExMXj8lKVIhIzokIjJHRksrXDgjMzghIzw3JCQiMUtMTC5TJ3BMJSEjOiQiMUQ1dHh5SmM4ISM7NyQkIjFKTEx0R3MqbyUhIzokIjIkZTFRN0UsJlEiISM8NyQkIjFsbW0iRyNcbVohIzokIjJhdHElUkVhKVEiISM8NyQkIjEpKioqKioqb2hLJVshIzokIjJVPEYoKlwiMyJSIiEjPDckJCIxSkxMKTRKKyNcISM6JCIyOnRlJEhQaSNSIiEjPDckJCIyWG1tbV0rbypcISM7JCIyJT5wODFnOyRSIiEjPDckJCIxKSoqKipcIipwTjImISM6JCIxLzRLaHJxI1IiISM7NyQkIjFKTExCJFIuOiYhIzokIjEzWiZRPVs3UiIhIzs3JCQiMlhtbTt0M3JBJiEjOyQiMiRHYyJvQCN6KVEiISM8NyQkIjEpKioqKipSInlRSSYhIzokIjE0PDhZWE0mUSIhIzs3JCQiMWxtbSdSSWJqJiEjOiQiMlZmeWEvdiNmOCEjPDckJCIxS0xMYEU9bmYhIzokIjFkUTBKYyNmSiIhIzs3JCQiMWxtbScpPSIpNGohIzokIjBodERMInphNyEjOjckJCIxKioqKioqPjZXX20hIzokIjJKMyV5QScqW3o2ISM8NyQkIjEpKioqKip6cGooKXAhIzokIjJuZzhbJz4jXDQiISM8NyQkIjEoKioqKipSRyRHSyghIzokIjEjUVFMcyZlLTUhIzs3JCQiMSgqKioqKnA/Olp3ISM6JCIxLyJ5Yy5cdDMqISM8NyQkIjJ2KioqKioqSHI5KHohIzskIjFuITNUYDk8OCkhIzw3JCQiMSgqKioqKjREZEokKSEjOiQiMXZyeS1XcSEzKCEjPDckJCIxKCoqKioqPlBuInApISM6JCIxW2AmWzEtKW9nISM8NyQkIjBMTExuU18sKiEjOSQiMTh1I2YpR3U3XyEjPDckJCIxa21tRXchKVEkKiEjOiQiMVAvYkpeaj9XISM8NyQkIjFLTEw4V0clbyohIzokIjFXYDN3PFNiTyEjPDckJCIqN3dIKyIhIigkIjAoM3lRcSYqeUghIzs3JCQiMm1tbTtYIkdNNSEjOiQiMjwtZk84XlFXIyEjPTckJCIyS0xMTHknZWw1ISM6JCIyQjxHWCtaNSk+ISM9NyQkIit3bi5NNiEiKSQiMnZQeUw7SDI/IiEjPTckJCIyam1tWSlHVyk+IiEjOiQiMmFOd1xiQV42KCEjPjckJCIyKSoqKioqZiNld2w3ISM6JCIyYUwhZXQ4cStSISM+NyQkIjJsbW1tSSdlSjghIzokIjJ2VCJIQ0lkYT8hIz43JCQiMioqKioqKipcVVwrOSEjOiQiMSk9JVE/bkdCKiohIz43JCQiMk1MTCQqeWdvWSIhIzokIjJtNkFQKmUjNG0lISM/NyQkIjJLTEw4O0laYCIhIzokIjInZVBIJSlHeU4/ISM/NyQkIjJtbW0xYVA/ZyIhIzokIjBZaFcmMyYpcCUpISM+NyQkIitLZylRbSIhIikkIjF2J1tuJWV2Lk8hIz83JCQiMm1tbUVRclp0IiEjOiQiMjNgLWAtISp5RiIhI0A3JCQiMktMTGAzcyIpeiIhIzokIjEjeV8xeWEpKnolISNANyQkIitlL3hsPSEiKSQiMkJeNTo+cjNnIiEjQTckJCIrRTJaST4hIikkIjEob2dtJnAvN2AhI0E3JCQiJCsjISIiJCIyeE4nKSlmJlFOYCIhI0ItJSVWSUVXRzYkOyQhJD8iISIiJCIkKyMhIiIlKERFRkFVTFRHLSUrQVhFU0xBQkVMU0c2Jy1JI21pRzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliRzYiNjVRInk2Ii8lJ2ZhbWlseUdRITYiLyUlc2l6ZUdRIzEwNiIvJSVib2xkR1EmZmFsc2U2Ii8lJ2l0YWxpY0dRJXRydWU2Ii8lKnVuZGVybGluZUdRJmZhbHNlNiIvJSpzdWJzY3JpcHRHUSZmYWxzZTYiLyUsc3VwZXJzY3JpcHRHUSZmYWxzZTYiLyUrZm9yZWdyb3VuZEdRKFswLDAsMF02Ii8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdNiIvJSdvcGFxdWVHUSZmYWxzZTYiLyUrZXhlY3V0YWJsZUdRJmZhbHNlNiIvJSlyZWFkb25seUdRJmZhbHNlNiIvJSljb21wb3NlZEdRJmZhbHNlNiIvJSpjb252ZXJ0ZWRHUSZmYWxzZTYiLyUraW1zZWxlY3RlZEdRJmZhbHNlNiIvJSxwbGFjZWhvbGRlckdRJmZhbHNlNiIvJTZzZWxlY3Rpb24tcGxhY2Vob2xkZXJHUSZmYWxzZTYiLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWM2IlEhNiItJSVGT05URzYlJShERUZBVUxURyUoREVGQVVMVEciIzUlK0hPUklaT05UQUxHJStIT1JJWk9OVEFMRy0lJkNPTE9SRzYmJSRSR0JHJCIiISEiIiQiIiEhIiIkIiM1ISIiLSUqVEhJQ0tORVNTRzYjIiIkLSUlUk9PVEc2Jy0lKUJPVU5EU19YRzYjJCIjISohIiItJSlCT1VORFNfWUc2IyQiIyEpISIiLSUtQk9VTkRTX1dJRFRIRzYjJCIlK1EhIiItJS5CT1VORFNfSEVJR0hURzYjJCIlIVwkISIiLSUpQ0hJTERSRU5HNiI= Density3(Normal2(x1,x2,3,2,0.4)*Normal1(x3,-2,1),x1,x2,x3,1,-2,1,y); LUkjbWlHNiMvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0dJKF9zeXNsaWJHRic2JVE1b3V0cHV0fnJlZGlyZWN0ZWQuLi5GJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRic= print(); # input placeholder LCQtSSRleHBHNiQlKnByb3RlY3RlZEdJKF9zeXNsaWJHNiI2IywoJCErc3NzQTUhIioiIiIqJEkieUdGKCIiIyQhK09PT082ISM1RjAkISs6PT09b0Y0JCIrKXAjKT0hPkY0 %; plot(%,y=-15..10,thickness=3,color=blue); LUkjbWlHNiMvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0dJKF9zeXNsaWJHRic2JVE1b3V0cHV0fnJlZGlyZWN0ZWQuLi5GJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRic= %; NigtJSdDVVJWRVNHNiM3ZW83JCQhJF0iISIiJCIybmtjNmAyeVsiISNDNyQkITJMTCRlOXJdWDkhIzokIjElW2kyQSg0ZWohI0I3JCQhMm47YWo5JDQpUiIhIzokIjJLSylwIil6cUhAISNCNyQkITJMTDMtPXJaTSIhIzokIjE8V2FpQUUteSEjQTckJCEyTExlOXcmNCJIIiEjOiQiMVpvY3RWJTRxIyEjQDckJCEybjsvRVh2d0IiISM6JCIwYE1UcigqKTQoKSEjPzckJCEyTCQzLSkpejkpPSIhIzokIjEsVjNIMCVRViMhIz83JCQhL3Y9bl4nbzgiISM3JCIxbjhTT2IhM2wnISM/NyQkITJMJDNfKyVHUTMiISM6JCIyd2RyI0dfUG08ISM/NyQkIS92VkI8JzQuIiEjNyQiMXVJN1U6TSlRJSEjPjckJCExbG07eiU9ZXcqISM6JCIyMWQmXCtWQ1o1ISM+NyQkITFLTGVSLSVvRyohIzokIjF5RkBUJlI1OCMhIz03JCQhMSkqKipcKD1Dd3UpISM6JCIxJ1tFXjhfXFglISM9NyQkISxEMSU+MSMpISM1JCIxPCJvJ3B6WFMoKSEjPTckJCExKioqKlw3ZVUlbyghIzokIjJjT2wxT2E2ZCIhIz03JCQhMUwkM19ENTFAKCEjOiQiMncjeUVNTVJPRCEjPTckJCExKVwoPSMqUiEqR3AhIzokIjEoWyJlTm1QIkgkISM8NyQkITFsbTtIeD5abSEjOiQiMUVHQCpSWFo+JSEjPDckJCExbW0iSGRiJjNrISM6JCIxKVsjKnBnKyR6XSEjPDckJCExbm1tO00iKnBoISM6JCIwbGZTQiJIcmchIzs3JCQhMUwzeGNlSiMqZSEjOiQiMWlcJEhYczJOKCEjPDckJCExKipcKG9IPVpoJiEjOiQiMFZxWiU9UVgoKSEjOzckJCEyRCQzRj51KipvYCEjOyQiMSRcPyRRSjYwNSEjOzckJCExbW1tVGxGQl4hIzokIjIjZicqWzYtV1I2ISM8NyQkITFLM0YleiJvYFshIzokIjIocFI0ZXcyKEciISM8NyQkITEpKlwoby8oMyVlJSEjOiQiMUw8a2xrLUk5ISM7NyQkITEqKipcUDRwdEslISM6JCIyMjQkUl1AemM6ISM8NyQkITEqKlxpUzZscVMhIzokIjEyTTBVIypmcDshIzs3JCQhMUszLSkpR3otUSEjOiQiMkxPWFNodXZ3IiEjPDckJCExbG1UTlkkXGAkISM6JCIyY1xCeHFLNSU9ISM8NyQkITE6SEsqKWUlPlQkISM6JCIyS0Q4TDZlYic9ISM8NyQkITJgO0hLOWQqKUckISM7JCIyWSRbKCl5RCNSKT0hIzw3JCQhMi9IIz1xRllGSyEjOyQiMVoiXCFcTXQhKj0hIzs3JCQhMmNUTnJSb2Y7JCEjOyQiMil6RCFveVFmKj0hIzw3JCQhMjJhKTNDU1ovSiEjOyQiMm4vM2hARCYqKj0hIzw3JCQhMW07L14nekgvJCEjOiQiMmI3P25dJFssPiEjPDckJCExdSQ0QG1cbShIISM6JCIyXilSSGpbdyw+ISM8NyQkITJDM3hKbj4uIkghIzskIjIxZ2smNGA5Kz4hIzw3JCQhMjJ6V1VvKilSJUchIzskIjBSQi1xSG0qPSEjOjckJCExKlw3YHBmd3gjISM6JCIyVGUmKVJjRzcqPSEjPDckJCEyYyJ6VzwoKipcayMhIzskIjE+SW1fKVJbKD0hIzs3JCQhMkFMJGVSKFJCXiMhIzskIjFZai4nPnU2Jj0hIzs3JCQhMUtlUnNvdU9BISM6JCIxb24nMypmMCF5IiEjOzckJCExSyQzXythNic+ISM6JCIxWU11SnNQI28iISM7NyQkITJhbW1UZ1w3cyIhIzskIjIkUiVRYGxwJHo6ISM8NyQkITIoKSpcNy5fTSJbIiEjOyQiMm4jRyUqSDdTajkhIzw3JCQhMmQ7L3coPUNBNyEjOyQiMVchW05QVCFHOCEjOzckJCExRkwkM18mUUonKiEjOyQiMmRpK0JsX3A9IiEjPDckJCEwbTthaiVmYXAhIzokIjJtdUoyKGU2UzUhIzw3JCQhMSQqKioqKlxQIXlGJSEjOyQiMSMqKmUpRyY9cycqKSEjPDckJCExJCoqXFA0JzNmOyEjOyQiMXZRTXJTaU13ISM8NyQkIjF1KytEY0onZiohIzwkIjFKKXlSbVMmKlInISM8NyQkIjExXShvYXZMXCQhIzskIjFbaDZDKD5jSiYhIzw3JCQiMTArREomPnItJyEjOyQiMVorU05QTF5WISM8NyQkIjEpKlxQTS1UUykpISM7JCIxT0hIRDU3RE0hIzw3JCQiMiIqKipcUDRxYDsiISM7JCIyJD13I0gicCp6ayMhIz03JCQiMk1MTCRlTSU0biIhIzskIjFwKFwqUWkkUWYiISM8NyQkIjEtK11QNHY1QSEjOiQiMXlfNHZ0ViRwKSEjPTckJCIyYm0ielduKikqcCMhIzskIjEiPXI+PTYudSUhIz03JCQiMS4rXTdCbU1LISM6JCIyLmdlQmN4X0gjISM+NyQkIjFLJGVrLk55dCQhIzokIjI9YUBERCQ+JDQiISM+NyQkIjEtXWk6YnpqVSEjOiQiMUpOZXhvSU1aISM+NyQkIjFMTCQzLT0heVohIzokIjEmSE5TIlx2bD4hIz43JCQiMjorRCJHOE87YCEjOyQiMThaQVlmKVJNKCEjPzckJCIwbm1tIipcWyRlISM5JCIyKWZhV0snKVF0RSEjQDckJCIxbm1UJlF6XU8nISM6JCIxZlk3KillPUgqKSEjQDckJCIxUCRla0c9NCpvISM6JCIyMlpUQDpEYiNHISNBNyQkIjEuKytEJzRUUCghIzokIjFQNjhUMGAnRyohI0E3JCQiMU1MM0Y5IXojeiEjOiQiMSl5aTgoKipHSUMhI0E3JCQiMXBtbTslPktVKSEjOiQiMXBLJWZLOXEhcCEjQjckJCIxLl03LjxMXiopISM6JCIyakd0bi9OJilwIiEjQzckJCIxL10ob2Etb1gqISM6JCIxNEs8ZHE7IT0lISNDNyQkIiQrIiEiIiQiMXhvNEZlciVvKSEjRC0lJVZJRVdHNiQ7JCEkXSIhIiIkIiQrIiEiIiUoREVGQVVMVEctJStBWEVTTEFCRUxTRzYnLUkjbWlHNiMvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0dJKF9zeXNsaWJHNiI2NVEieTYiLyUnZmFtaWx5R1EhNiIvJSVzaXplR1EjMTA2Ii8lJWJvbGRHUSZmYWxzZTYiLyUnaXRhbGljR1EldHJ1ZTYiLyUqdW5kZXJsaW5lR1EmZmFsc2U2Ii8lKnN1YnNjcmlwdEdRJmZhbHNlNiIvJSxzdXBlcnNjcmlwdEdRJmZhbHNlNiIvJStmb3JlZ3JvdW5kR1EoWzAsMCwwXTYiLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV02Ii8lJ29wYXF1ZUdRJmZhbHNlNiIvJStleGVjdXRhYmxlR1EmZmFsc2U2Ii8lKXJlYWRvbmx5R1EmZmFsc2U2Ii8lKWNvbXBvc2VkR1EmZmFsc2U2Ii8lKmNvbnZlcnRlZEdRJmZhbHNlNiIvJStpbXNlbGVjdGVkR1EmZmFsc2U2Ii8lLHBsYWNlaG9sZGVyR1EmZmFsc2U2Ii8lNnNlbGVjdGlvbi1wbGFjZWhvbGRlckdRJmZhbHNlNiIvJSxtYXRodmFyaWFudEdRJ2l0YWxpYzYiUSE2Ii0lJUZPTlRHNiUlKERFRkFVTFRHJShERUZBVUxURyIjNSUrSE9SSVpPTlRBTEclK0hPUklaT05UQUxHLSUmQ09MT1JHNiYlJFJHQkckIiIhISIiJCIiISEiIiQiIzUhIiItJSpUSElDS05FU1NHNiMiIiQtJSVST09URzYnLSUpQk9VTkRTX1hHNiMkIiRnIiEiIi0lKUJPVU5EU19ZRzYjJCIjISkhIiItJS1CT1VORFNfV0lEVEhHNiMkIiVJUCEiIi0lLkJPVU5EU19IRUlHSFRHNiMkIiUhXCQhIiItJSlDSElMRFJFTkc2Ig== JSFH