Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Laura Valentina Robaina Osuna Ingresamos la matriz A, b y D con el comando matrix() ( entregable2.wxmx ) ( 1 / 3 ) (%i2) (%o2) (%i3) (%o3) A:matrix([4,1,−1,1],[1,4,−1,−1],[−1,−1,5,1],[1,−1,1,3]); 4 1 − 1 1 1 4 − 1 − 1 − 1 − 1 5 1 1 − 1 1 3 b:matrix([−2.3],[−1.2],[0.1],[1.2]); − 2.3 − 1.2 0.1 1.2 (%i4) (%o4) D:matrix([4,0,0,0],[0,4,0,0],[0,0,5,0],[0,0,0,3]); 4 0 0 0 0 4 0 0 0 0 5 0 0 0 0 3 Como A=D+R podemos hallar la matriz R restando A con D ( 0 1 − 1 1 1 0 − 1 − 1 − 1 − 1 0 1 1 − 1 1 0 )(%i33) R:A−D; (%o33) Hacemos el bucle con el comando "for i thru n do" sabiendo que la recurrencia del método de Jacobi es X(n+1)=-(D^-1).R.X(n)+(D^-1).b (%i34) for i thru 80 do (x: invert(D).(−R.x+b), print(x)); − 0.8616438356164382 0.03972602739726022 − 0.3047945205479452 0.8020547945205477 − 0.8616438356164382 0.03972602739726022 − 0.3047945205479452 0.8020547945205477 − 0.8616438356164382 0.03972602739726022 − 0.3047945205479452 0.8020547945205477 − 0.8616438356164382 0.03972602739726022 − 0.3047945205479452 0.8020547945205477 − 0.8616438356164382 0.03972602739726022 − 0.3047945205479452 0.8020547945205477 − 0.8616438356164382 0.03972602739726022 − 0.3047945205479452 0.8020547945205477 − 0.8616438356164382 0.03972602739726022 − 0.3047945205479452 0.8020547945205477 − 0.8616438356164382 0.03972602739726022 − 0.3047945205479452 0.8020547945205477 − 0.8616438356164382 0.03972602739726022 − 0.3047945205479452 0.8020547945205477 − 0.8616438356164382 0.03972602739726022 Sustituyendo la matriz x luego de 80 iteraciones en Ax=b para comprobar la aproximación del método (%i35) A.x=b; − 2.299999999999999 − 1.2 (%o35) 0.09999999999999976 1.2 − 2.3 − 1.2 = 0.1 1.2 Podemos comprobar que la aproximación del método es bastante buena luego de 80 iteraciones ya que los resultados son prácticamente iguales a la matriz de términos independientes.
Compartir