Está en la página 1de 5

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

Dan El Montoya, Gilberto Noguera, Elio Texeira SEGUNDA PRACTICA: GRAFICACION Y ECUACIONES NO LINEALES. OBJETIVOS: Introducir al estudiante en el manejo de la herramienta SCILAB. Graficar una funcin usando las herramientas que proporciona el SCILAB para tal fin. Calcular el cero o raz de una funcin a travs de los mtodos desarrollados en clase.

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

ACTIVIDADES: Corra el programa SCILAB. En el ambiente de trabajo que presenta el SCILAB escriba cada una de las siguientes instrucciones. x=0:0.05:10 y=sin(x).*exp(-0.4*x) plot(x,y) Repita el ejercicio colocando al final de las primeras dos instrucciones punto y coma. En el Men EDITOR cree un nuevo documento .SCE. En el editor de archivos .SCE escriba las instrucciones siguientes: x=0:0.05:10; y=sin(x).*exp(-0.4*x); plot(x,y) xtitle( 'Grafica de y=f(x)', 'eje X', 'eje Y' ) ;

Guarde el archivo con el nombre E01.sce En el ambiente de trabajo del SCILAB escriba exec E01.sce y luego pulse ENTER. En el archivo E01.sce cambie la instruccin plot(x,y) por las siguientes luego guarde y corra el archivo desde el ambiente de trabajo SCILAB para cada caso. plot(x,y,'o') plot(x,y, 'g') plot(x,y, '+') plot(x,y, '+g')

En el archivo E01.sce agregue la siguiente instruccin y corra el programa. square(0,0,6,0.6)

Cambie la instruccin anterior por la siguiente y corra el programa. isoview(0,6,0,0.6)

Agregue la instruccin: xgrid(2)

Al final del archivo E01.sce agregue clf y luego corra el programa. Cree un nuevo archivo en el EDITOR y escriba las instrucciones siguientes: x=0:0.05:5; y=sin(x); z=cos(x);

plot(x,y,x,z)

Guarde el archivo anterior con el nombre E02.sce y pruebe. Cambie la instruccin plot(x,y,x,z) por las siguientes y pruebe en cada caso. plot(x,y,'-',x,z,'*') plot(x,y,'g',x,z,'*y') plot(x,y,'r',x,z,'b')

Cree un nuevo archivo en el editor y copie las siguientes instrucciones: Para ahorrar tiempo copie y pegue las instrucciones usando las herramientas de edicin. clc clear; clf; x=0:0.05:5; y=sin(x); plot(x,y); z=cos(x); plot(x,z)

Guarde el archivo anterior con el nombre E03.sce y corra el programa. Observe como se logra el solapamiento de las grficas de las funciones "y" y "z". Teclee clc y luego enter. Qu observa?. Cree un nuevo archivo E04.sce con las siguientes instrucciones: clear clc printf('PRCTICA '); printf('NMERO '); printf(' 2\n\n');

Ejecute el archivo E04.sce desde el ambiente SCILAB. Concluya acerca de la utilidad de la instruccin printf. Cambie las instrucciones del archivo E04.sce por las siguientes. Qu observa? clear clc printf('PRCTICA\n\n'); printf('NMERO\n\n'); printf(' 2\n\n');

Cree un nuevo archivo E05.sce con las siguientes instrucciones: clear clc printf('PRCTICA '); printf('NMERO '); printf(' 2\n\n'); u=input('Ingrese su nombre: ','s');

Ejecute el archivo E05.sce desde el ambiente SCILAB. Teclee disp(u) y enter. Concluya acerca de la utilidad de la instruccin input. Cree un nuevo archivo E06.sce con las siguientes instrucciones: clear clc printf('PRCTICA NMERO 2\n\n'); while 1==1 printf('Seleccione la funcin a graficar\n'); z=input("1. Sin(x) 2. Cos(x) 3. Exp(-x) :"); printf('\n'); if z==1 | z==2 | z==3

x=0:0.05:10; if z==1 then y=sin(x);end if z==2 then y=cos(x);end if z==3 then y=exp(-x);end plot(x,y); u=input('Desea graficar nuevamente (si/no)?', 's'); if u=="no" then break, end; end; clear clc end; clear clc

Ejecute el archivo E06.sce desde el ambiente SCILAB y concluya acerca de la utilidad de las instrucciones if, while, break, end. Observe que la forma de salir del lazo creado por la instruccin while es a travs de la instruccin break. Cree un nuevo archivo E07.sce con las siguientes instrucciones y pruebe con la funcin sin(x), cos(x) y x^3+1. Observe que la instruccin feval define un arreglo unidimensional "y" evaluando la funcin "z" (definida mediante la instruccin input por pantalla y la instruccin deff) en los valores "x". clear,clc printf('PRCTICA NMERO 2\n\n'); while 1 clc; f1=input('Ingrese la funcin f(x) =','s'); printf('\n'); f2='z='+f1; deff('z=f(x)',f2); x=0:0.05:10; y=feval(x,f); plot(x,y); u=input('Desea graficar nuevamente (s/n)?','s'); if u=='n' then break, end; clear;clc end

Cree un nuevo archivo E08.sce con las siguientes instrucciones. Coloque como entrada las funciones f(x)=x.*x+1 y f(x)=sin(x)+cos(x)+25*exp(-x). La funcin 'eval' realiza la evaluacin de la cadena de caracteres en los valores del arreglo 'x'. clear,clc printf('PRCTICA NMERO 2\n\n'); while 1 z=input('Ingrese la funcin f(x)= ','s');printf('\n'); x=0:0.05:10; y=eval(z); plot(x,y); u=input('Desea ingresar otra funcin (s/n)?','s'); if u=='n' then break, end; clear;clc; end;

Se pueden crear e incluir en la librera del SCILAB funciones definidas segn los requerimientos del programador. Copie en un archivo de nombre mifuncion.sci el siguiente cdigo. function y=mifuncion(x) y=sqrt(x.*x+1)-tan(x); endfunction

Para utilizar la funcin definida anteriormente ejecute exec mifuncion.sci y copie en el ambiente de trabajo SCILAB las siguientes instrucciones. Observe que la funcion "mifuncion" tiene una raz entre 0.8 y 1. x=0:0.01:1; plot(x,mifuncion(x))

xgrid(2) El siguiente cdigo realiza el clculo de la raz de la funcin "mifuncion". Copie en un archivo de nombre biseccion.sce el siguiente cdigo: t=0.000001; itlimit=30; a=0.8; b=1.0; // Valores iniciales de tolerancia, nmero mximo // de iteraciones y extremos del intervalo inicial printf('It. printf('f(a) a f(c) c f(b) b (b-a)\n'); ') // Cabecera de la tabla a ser // generada

ya=feval(a,mifuncion);yb=feval(b,mifuncion); it=1; printf('\n') printf('Metodo de Biseccin\n\n') while it<itlimit c=(a+b)/2;yc=feval(c,mifuncion); // Clculo de la raz por biseccin.

printf('%3.0f, %10.6f, %10.6f, %10.6f', it, a, c, b); printf('%10.6f, %10.6f, %10.6f, %10.6f', ya, yc, yb, b-a);printf('\n'); // Valores de la tabla en cada iteracin if abs(b-a)<=t & abs(yc)<=t // Verificacin de la precisin de la raz. printf('Se satisface la tolerancia.\n'); printf('Resultado final: Raz = %12.6f \n',c); break end it=it+1; // incremento en el contador de iteraciones if ya*yc<=0 b=c; yb=yc; // Reasignacin de los lmites del intervalo de estudio. else a=c; ya=yc; end

end

if it==30; clc; printf('Mtodo fracas despues de %3.0f iteraciones\n',itlimit); end;

El archivo biseccion.sce busca la raz de la funcin 'mifuncion' en el intervalo [0.8,1.0]. Resuelva usando el algoritmo programado las siguientes ecuaciones: ex-2-x=0 en [-2.4,-1.6] log(x)-5+x=0 (seleccione usted un intervalo inicial adecuado)

Modifique el archivo biseccin.sce para que calcule la raz de una funcin por rgula falsi. Corra el programa para el primer ejemplo del algoritmo de biseccin. Modifique el archivo biseccin.sce para que calcule la raz de una funcin por el mtodo de la secante. Corra el programa para el primer ejemplo del algoritmo de biseccin. Copie el siguiente cdigo en el editor SCILAB y gurdelo con el nombre bisecciongraf.sce: funcionprueba=mifuncion; a=0.8; b=1; npuntos=20; //a,b:Extremos del intervalo //e:Tolerancia //itlimit:Limite de iteraciones //ya,yb:Valor de la funcin en los extremos actuales //npuntos: Nmero de puntos de la grfica. clear ya yb anchox=b-a; dx=anchox/npuntos;

xp=a:dx:b; yp=feval(xp,funcionprueba) plot(xp,yp); xtitle('Metodo de biseccin','x','y'); ymin=min(yp);ymax=max(yp);anchoy=ymax-ymin; yp=0.*xp; plot(xp,yp,'k'); printf('Mtodo de biseccin:\n\n'); t=0.000001;itlimit=30; printf('It. a c b ') printf('f(a) f(c) f(b) (b-a)\n'); ya=feval(a,funcionprueba);yb=feval(b,funcionprueba); plot([a,a],[ya,0],':'); xstring(a,-0.1*anchoy,'x=a') plot([b,b],[yb,0],':'); xstring(b,-0.1*anchoy,'x=b') it=0; while 1 it=it+1; c=(a+b)/2;yc=feval(c,funcionprueba); plot([c,c],[yc,0],':');plot(c,0,'o') if it<4, xstring(c,anchoy/20,[string(it)]),end printf('%3.0f, %10.6f, %10.6f, %10.6f', it, a, c, b); printf('%10.6f, %10.6f, %10.6f, %10.6f', ya, yc, yb, b-a); printf('\n'); if abs(b-a)<=t & abs(yc)<=t printf('Se satisface la tolerancia.\n'); break end if it>itlimit fprintf('Se excedio el nmero de iteraciones.\n'); break end if ya*yc<=0 b=c; yb=yc; else a=c; ya=yc; end end printf('Resultado final: Raz = %12.6f \n',c); x=c; plot([x,x],[0.05*anchoy,0.2*anchoy]) xstring(x-0.185*anchox,0.25*anchoy,'Solucin Final =') xstring(x+0*anchox,0.25*anchoy, string(c)) plot([x,(x-anchox*0.004)],[0.05*anchoy,0.09*anchoy]) plot([x,(x+anchox*0.004)],[0.05*anchoy,0.09*anchoy])

Corra el programa bisecciongraf.sce en el ambiente SCILAB. El programa realiza el clculo de la raz de la funcin que se defina como mifuncion mediante el mtodo de biseccin. Adems, realiza la grfica de la funcin mifuncion con marcas que representan algunas iteraciones y el resultado final. La funcin mifuncion debe ser en este caso la definida al principio a partir de: sqrt(x.*x+1)-tan(x). Calcule la raz de la mifuncion mediante la funcin que proporciona el SCILAB para tal fin. En tal sentido escriba en el ambiente de trabajo SCILAB la siguiente instruccin y oprima ENTER La funcin mifuncion debe ser en este caso la definida al principio a partir de: sqrt(x.*x+1)-tan(x). fsolve(0.8,mifuncion)

Cambie el valor inicial "0.8" por "2" y repita el procedimiento. Concluya acerca del mtodo que usa SCILAB para calcular raices.

Notas: help, flecha para no copiar de nuevo textos,

También podría gustarte