Vous êtes sur la page 1sur 3

UNIVERSIDAD CENTRAL DE VENEZUELA FACULTAD DE INGENIERA ESCUELA DE INGENIERA ELCTRICA DEPARTAMENTO DE ELECTRNICA, COMPUTACIN Y CONTROL CALCULO NUMERICO Profesores:

Flavio De Caires, William La Cruz, Dan El Montoya CUARTA PRACTICA: METODOS ITERATIVOS PARA RESOLVER SISTEMAS DE ECUACIONES LINEALES Y NO LINEALES. OBJETIVOS: Resolver un sistema de ecuaciones lineales por los mtodos Jcobi y Gauss Seidel programando los algortmos en Matlab. Resolver un sistema de ecuaciones no lineales por los mtodos Jcobi y Gauss Seidel programando los algoritmos en Matlab.

OBSERVACIONES: Los algoritmos propuestos han sido empleando la herramienta MATLAB. implementados por los docentes de la ctedra

ACTIVIDADES: El siguiente cdigo resuelve un sistema de ecuaciones lineales por el mtodo de jcobi. Copie el programa en el editor del Matlab y gurdelo con el nombre E41.m. clear all clc fprintf('Resolucin del sistema Ax = b por \n'); fprintf('Jcobi \n\n') n=input('Ingrese el orden del sistema = '); fprintf('\n'); fprintf('Matriz coeficientes del sistema \n\n') for i=1:n for j=1:n fprintf('coeficiente A(%d,%d) = ', i,j ) % Definicin de la matriz A A(i,j)=input(' '); end end fprintf('\nVector trminos independientes \n\n') for i=1:n fprintf('trmino b(%d) = ', i ) % Definicin del vector b b(i)=input(' '); end b=b'; fprintf('\nVector aproximacin inicial\n\n') for i=1:n fprintf('xo(%d) = ', i ) % Definicin de la aproximacin inicial xo(i)=input(' '); end xo=xo'; e=input('\nIngrese el valor de la tolerancia = '); % Definicin de la tolerancia fprintf('\n'); for i=1:n c(i)=b(i)/A(i,i); % Clculo del vector c for j=1:n if i==j T(i,j)=0; , else T(i,j)=-A(i,j)/A(i,i);, end % Clculo de la matriz T end end

c=c'; Er=A*xo-b; while norm(Er,inf)>=e x=T*xo+c; xo=x; Er=A*xo-b; end disp(x) Corra el programa anterior para el sistema de ecuaciones lineales: 5x1+x2+x3=7 x1+5x2+x3=7 x1+x2+5x3=7 Tome como aproximacin inicial el vector xo=[0,0,0]T y como tolerancia =10-4 El siguiente diagrama de flujo presenta el algoritmo de Gauss-Seidel para resolver sistemas de ecuaciones lineales. Entrada: n, A, b, x (aproximacin inicial), (tolerancia). Salida: solucin aproximada x1,x2,x3,...xn. Paso 1: Er=A*x-b. Paso 2: Mientras Er> hacer pasos 3-8 Paso 3: Para i=1 hasta n hacer pasos 4-7 Paso 4: s=0 Paso 5: Para j=1 hasta n hacer paso 6 Paso 6: Si ij hacer s=s+A(i,j)*x(j) Paso 7: x(i)=(b(i)-s)/A(i,i) Paso 8: Er=A*x-b Paso 9: Solucin aproximada x1,x2,x3,...xn. Implemente el algoritmo anterior en Matlab. Salve el programa con el nombre E42.m y realice una corrida para el sistema de ecuaciones lineales descrito en el segundo punto de esta prctica. Se quiere calcular, de la siguiente red, las tensiones E1 y E2 sabiendo que ambas fuentes entregan 2 y 3 watts respectivamente.
5 ohms 6 ohms

E1

1 ohm

E2

El sistema no lineal planteado en el clculo de E1 y E2 es E12.E2-12E2-3E1 = 0 E1.E22-2E2-21E1 = 0 El siguiente cdigo resuelve el sistema de ecuaciones no lineales por el mtodo de jcobi. Copie el programa en el editor del Matlab y gurdelo con el nombre E43.m. clear x=2*ones(1,2); % Vector fila de unos y=x; n=0; fprintf('n E1 E2 Error\n'); fprintf('%1d %7.6f %7.6f %7.6f\n',n,y(1),y(2),norm(fj(y),inf)); while norm(fj(y))>=0.0001 x=y; y=gj(x); n=n+1;

fprintf('%1d end

%7.6f

%7.6f

%7.6f\n',n,y(1),y(2),norm(fj(y),inf));

Las funciones f y g presentes en el programa anterior son las siguientes: function y=fj(x) y(1)=x(1)*x(1)*x(2)-12*x(2)-3*x(1); y(2)=x(1)*x(2)*x(2)-2*x(2)-21*x(1); function y=gj(x) y(1)=sqrt(12+3*x(1)/x(2)); y(2)=sqrt(21+2*x(2)/x(1));

Corra el programa E43.m. Cambie el vector aproximacin inicial por el x=[4,4] T y observe el resultado. Modifique el programa anterior para que calcule la solucin del sistema no lineal 3x2-y2=0 3xy-x3-1=0 Tome como aproximacin inicial el vector x=(1/2,3/4)T. Para resolver el sistema de ecuaciones no lineales original por Gauss-Seidel, cambie la funcin matlab gj.m por la siguiente: function y=ggs(x) y(1)=sqrt(12+3*x(1)/x(2)); y(2)=sqrt(21+2*x(2)/y(1));

Ejecute el programa y observe el resultado. Compare el nmero de iteraciones usados en Jacobi y Gauss-Seidel. Resuelva, usando Gauss-Seidel, el sistema no lineal: 3x2-y2=0 3xy-x3-1=0 Tome como aproximacin inicial el vector x=(1/2,3/4)T.

Vous aimerez peut-être aussi