problemas de scilab

14
Instituto Politécnico Nacional. Unidad Profesional Interdisciplinaria Campus Guanajuato. Análisis Numérico. Tarea 1. Ejercicio 1. Código 1. clear clc //La solución del sistema esta dada por la ec. x=inv(A)*B //Donde A es nuestra matriz compuesta por nuestros coeficientes y //B es nuestro vector columna. A=[1 , 1 ,-%pi/4;1 ,2 ,-2*atan(2);1 ,3 , -3*atan(3)] //Ahora nombramos B que viene siendo a que estan igualadas nuestras ecuaciones, //osea el vector columna. B=[%pi/4;atan(2);atan(3)] //Por ultimo resolvemos nuestro sistema de ecuaciones con la formula dada //anteriormente. //IMPORTANTE pueden sacar la inversa de la matriz (A) para comprobar //que nuestro sistema tiene solución. k=inv(A)*B //Una vez obtenidos los coeficientes "a","b" y "c", construimos nuestra función. function z=f(x) z=atan(x) // Nuestra función atan(x) endfunction function v=g(x) v=(((-0.6498337)+2.7942446*x))/(1+1.7303487*x)//Nuestra función con nuestros //coeficientes encontrados endfunction t=0:0.1:4;//El intervalo que deseamos que se grafiquen , con marca de paso de 0.1 plot(t,f);//Grafica de nuestra función atan(x) plot(t,g);//Grafica de nuestra función v=g(x) t=[1 2 3] v=[f(1) f(2) f(3)] w=[g(1) g(2) g(3)] plot(t,v,'*r'); plot(t,w,'*r'); xgrid() //De esta forma obtenemos la solución de x al igual g(x)=f(x) deff('[y]=f(x)','y=atan(x) - (((-0.6498337)+2.7942446*x))/(1+1.7303487*x)'); deff('[y]=df(x)', 'y=1/(x^2 +1)-((1.3088-2.22045*10^(-16))/(x+0.577918)^2)'); fsolve(0.5,f,df)

Upload: victor-barroso-velazquez

Post on 25-Sep-2015

66 views

Category:

Documents


12 download

DESCRIPTION

Problemas diversos en Scilab

TRANSCRIPT

  • Instituto Politcnico Nacional. Unidad Profesional Interdisciplinaria Campus Guanajuato.

    Anlisis Numrico. Tarea 1.

    Ejercicio 1.

    Cdigo 1.

    clear clc //La solucin del sistema esta dada por la ec. x=inv(A)*B //Donde A es nuestra matriz compuesta por nuestros coeficientes y //B es nuestro vector columna. A=[1 , 1 ,-%pi/4;1 ,2 ,-2*atan(2);1 ,3 , -3*atan(3)] //Ahora nombramos B que viene siendo a que estan igualadas nuestras ecuaciones, //osea el vector columna. B=[%pi/4;atan(2);atan(3)] //Por ultimo resolvemos nuestro sistema de ecuaciones con la formula dada //anteriormente. //IMPORTANTE pueden sacar la inversa de la matriz (A) para comprobar //que nuestro sistema tiene solucin. k=inv(A)*B //Una vez obtenidos los coeficientes "a","b" y "c", construimos nuestra funcin. function z=f(x) z=atan(x) // Nuestra funcin atan(x) endfunction function v=g(x) v=(((-0.6498337)+2.7942446*x))/(1+1.7303487*x)//Nuestra funcin con nuestros //coeficientes encontrados endfunction t=0:0.1:4;//El intervalo que deseamos que se grafiquen , con marca de paso de 0.1 plot(t,f);//Grafica de nuestra funcin atan(x) plot(t,g);//Grafica de nuestra funcin v=g(x) t=[1 2 3] v=[f(1) f(2) f(3)] w=[g(1) g(2) g(3)] plot(t,v,'*r'); plot(t,w,'*r'); xgrid() //De esta forma obtenemos la solucin de x al igual g(x)=f(x) deff('[y]=f(x)','y=atan(x) - (((-0.6498337)+2.7942446*x))/(1+1.7303487*x)'); deff('[y]=df(x)', 'y=1/(x^2 +1)-((1.3088-2.22045*10^(-16))/(x+0.577918)^2)'); fsolve(0.5,f,df)

  • Ejercicio 2.

    Cdigo 2.

    clear clc //Vamos a calcular el minimo de la funcin. //Para este ejercicio utilizamos el comando fminsearch. //Declaramos nuestra funciin function y=f(x) y= 100*(x(1)^2-x(2))^2 + (1-x(1))^2+90*(x(3)^2-x(4))^2+(1+x(3))^2+10*(x(2)-1)^2+(x(4)-1)^2+19.8*(x(2)-1)*(x(4)-1)//Escribimos nuestra funcin , usando el "x computacional" osea x(1)=x //x(2)=y , x(3)=z , x(4)=w endfunction [xmin] = fminsearch (f,[0;0;0;0])//Proporcionamos una variable([xmin]) para nombrar a fminsearch //dentro de fminsearch se llama a nuestra funcin y a los puntos en que deseamos buscar el min.

    Ejercicio 3.

    a) !"#$%&'( = + () b) ()(21 2 + ())

  • c) Cdigo 3. clear clc //Usamos la funcin optim para estimar el maximo de nuestra funcin //Construimos nuestra funcin function [f, g, ind]=h(x, ind) f=-[21*x(1)*sin(x(2))-2*x(2)^2*sin(x(2))+x(1)^2*sin(x(2))*cos(x(2))]; g=-[x(1)*cos(2*x(2))+sin(x(2))*(2*x(1)*cos(x(2))-4*x(1)+21);x(1)*cos(x(2))*(x(1)*cos(x(2))-2*x(1)+21)-x(1)^2*sin(x(2))^2]; //Utilizmaos el signo menos para encontrar el mximo endfunction x0=[3,1.5];//indicamos los puntos [f,xopt]=optim(h,x0)//Usamos la funcin optin d) 317.8

    Ejercicio 4.

    Sustituyendo valores y haciendo un poco de algebra, nuestra funcin es la siguiente. = 6 10!! ! + 4053333.3! A partir de esta funcin calculamos el mnimo.

    Respuestas 509.81812 y 3118.9742 respectivamente.

  • Cdigo 4. clear clc //Creamos nuesta funcin function [d, g, ind]=f(x, ind) d=6*10^(-3)*x(1)^2+1/(x(1))^2*(405333333.3);//ponemos nuestra funcin original g=[(2*6*10^(-3))*x(1)-(2/(x(1))^3)*(405333333.3)];//En esta parte va la derivada de la funcin principal endfunction x0=[1]; [d,xopt]=optim(f,x0)//Utilizamos el comando optim para minimizar //Acontinuacin se mostraran las graficas cuando se varia el peso function z=f(x) z=6*10^(-3)*x^2+1/(x)^2*(228000000); endfunction function k=p(x) k=6*10^(-3)*x^2+1/(x)^2*(310333333.3); endfunction function v=h(x) v=6*10^(-3)*x^2+1/(x)^2*(513000000); endfunction function j=e(x) j=6*10^(-3)*x^2+1/(x)^2*(633333333.3); endfunction function a=w(x) a=6*10^(-3)*x^2+1/(x)^2*(405333333.3); endfunction t=0.5:0.01:4;//Rango donde se desea graficar plot(t,f)//Las plot(t,p) plot(t,h) plot(t,e) plot(t,w)

    Ilustracin 1 Variacin del peso

  • Ejercicio 5.

    Cdigo 5 clc clear //Para este problema solo seguimos las instrucciones del problema ya que venia semiresuelto function z=f(x, y) z=3*exp(-(x-1)^2-(y-2)^2)-2*exp(-(x-2)^2-(y-1)^2) endfunction z=feval(-2:0.2:4,-2:0.2:4,f); plot3d(-2:0.2:4,-2:0.2:4,z); function z=grad(x, y) z=[-6*(x-1)*exp(-(x-1)^2-(y-2)^2)+4*(x-2)*exp(-(x-2)^2-(y-1)^2) -6*(y-2)*exp(-(x-1)^2-(y-2)^2)+4*(y-1)*exp(-(x-2)^2-(y-1)^2 )] endfunction gradf1=grad(0,1) gradf2=grad(2.5,-1.5) contour(-2:0.2:4,-2:0.2:4,f,14); xi = [0 2.5] yi = [1 -0.5] xf = xi+[gradf1(1) gradf2(1)] yf = yi+[gradf1(2) gradf2(2)] xarrows([xi;xf],[yi;yf],3,[5 6])

  • Ilustracin 2 Grafica de curvas de nivel del cdigo 5

    Ejercicio 6. Cdigo 6.

    clear clc //DEfinimos la funcin que nos dan en el problema //la escribimos con el "x computacional" function y=f(x) y=[5*x(1);4*x(1)^2-2*sin(x(2)*x(3));x(2)*x(3)] endfunction w=numderivative(f,[1;2;3])//Una vez escrita usamos el comando "numderivative" //llamando a la funcin "f" y dando valores

    Ilustracin 3 Matriz jacobiana

  • Ejercicio 7. Cdigo 7.

    clear clc //Para usar la funcin "derivat" , necesitamos crear nuestro polinomio, //para esto usamosla funcin "poly" p=poly([5 -1 2 -3], 'x' , 'coeff')//indicamos la variabla a usar e indicamos los coeficientes derivat(p)//Apliamos la funcin "derivat" e indicamos lo que queremos derivar , en este caso p horner(derivat(p),-3) //Evaluamos la derivada en x=-3 //Ahora con derivative //Creamos el polinomio function y=f(x) y=-3*x^3+2*x^2+-x+5 endfunction p=derivative(f,-3)//Aplicamos derivative llamadno a la funcin ya antes declarada y evaluando en //x=-3 simp(p) La derivaba evaluada en x=-3 , es igual a 94.

    Ejercicio 8.

  • Cdigo 8. clear clc //En el problema nos piden sacar la segunda derivada de 4 funciones a nuestra eleccin. //Para este caso utilizaremos el comando [df,ddf]=numderivative(f,x0), esta sugerencia de uso //no los proporcion el mismo ejercicio. //Declaramos las 4 funciones. function y=f(x) y=3*x^4+5*x^2+sin(x)+6//Primera funcin endfunction function h=g(x) h=32*cos(x)+tan(x)*x^2 + 6*x//Segunda funcin endfunction function u=r(x) u=tan(3*x)+cos(4*x)+6*x^2//Tercera funcin endfunction function j=b(x) j=atan(x)+4*x^2 + 6//Cuarta funcin endfunction //Utilizamos el comando que nos proporcionaron en el ejercicio , una vez puesto indicamos en que //punto deseamos que se evalue. [df,ddf]=numderivative(f,4) [df,ddf]=numderivative(g,5) [df,ddf]=numderivative(r,0) [df,ddf]=numderivative(b,7) Los resultados son : 586.75681 , 807.34636, - 1867.9462 , 313.57747 ,-3.9999987, 3, 7.9944 ,56.02 respectivamente.

    Ejercicio 9.

  • Cdigo 9. clear clc //Resolveremos un sistema de ecuaciones //Como podemos observar son de pimer orden y no las dan despejadas. //empzaremos declarando a nuestra funcin function [dx]=f(t, x) dx=[x(1)-x(2)+2*t-t^2-t^3;x(1)+x(2)-4*t^2+t^3] endfunction t0=0;//Las condiciones de t x0=[1;0];//Las condiciones de x t=0:0.1:6;//La grafica de 0 a 6 con marco de paso de 0.1 x=ode(x0,t0,t,f)//Solucin de la ec diferencial con los valores iniciales y de mov de la grfic plot(t,x(1,:),"*");//La grafica de nuestro resultado //Ahora necesitamos hacer una comparacin con su solucin analtica. //Empezamos haciendo la declaracin para la primer funcin llamada x(t) function e=x(t) e=%e^t*cos(t)+t^2 endfunction //Hacemos la declaracin de la segunda funcin llamada y(t) function s=y(t) s=%e^t*sin(t)-t^3 endfunction t=0:0.1:6;//indicamos como se quiere mover t plot(t,x);//Graficamos a la funcion x(t) plot(t,y);//Graficamos a la funcin y(t)

    Ilustracin 4 Como se puede ver , una de nuestras funciones coincide con las respuestas analticas.

  • Ejercicio 10.

    Cdigo 10. clear clc //Resolucin de una ecuacin diferencial de segundo orden //Realizamos un cambio de variable para simplificar el orden de nuestra ecuacin y de esa forma //poderla meterla en Scilab //Declaramos nuestra funcin function dy=f(t, x) dy=[x(2);-3*(cos(t))^2+2] endfunction t0=0;//Las condiciones de t x0=[0;0];//Las condiciones de x t=0:0.1:6;//La grafica de 0 a 6 con marco de paso de 0.1 x=ode(x0,t0,t,f);//Solucin de la ec diferencial con los valores iniciales y de mov de la grfic plot(t,x(1,:),"*");//La grafica de nuestro resultado

    Ilustracin 5 Grafica de nuestra solucin

  • Ejercicio 11 Cdigo 11

    //Resolvemos la ecuacin diferencial //Realizamos un cambio de variable function [y]=dif(t, y) y=[y(2);y(3);2*y(2)+log(y(3))+cos(y(1))] endfunction y=ode([1;-3;5],0,t,dif);//Indcamos la solucin de nuestra ec diferencial t=0:0.1:10;//Indicamos en que rango la grafique plot(t,y(1,:)); plot(t,y);

    Ilustracin 6 Grafica de nuestra solucin.

  • Ejercicio 12

    Cdigo 12

    clc clear //definimos la funcin con el comando poly, de esa forma creamos nuestro polinomio p=poly([0 -840 -599 -77 55 22 3 1/7],'x','c') derivat(p)//Lo derivamos y obetenemos de nuevo otra funcin la cual repetimos nuestro procedimiento anterior y=poly([-840 -1198 -231 220 110 18 1],'x','c') roots(y)//Una vez creado nuestro polinomio le sacamos sus raices o sus soluciones g=derivat(derivat(p))// como se puede analizar sacamos la derivada de la derivada horner(g,-7)//Graficamos los puntos para obener los puntos crticos horner(g,-2) horner(g,-5) horner(g,-4) horner(g,-3) horner(g,-1) function y=f(x) y=-840*x-599*x^2-77*x^3+55*x^4+22*x^5+3*x^6+0.142871*x^7 endfunction x=0:0.1:15;//DE esta forma graficamos plot(x,f)

    Ilustracin 7 No se pudo encontrar mnimos en este rango

  • Ejercicio 13.

    Cdigo 13. clear clc //Ponemos los datos obetenidos para el tiempo y velocidad t=[0 1.5 2 3 4.5 5 6.5 7 8.5 10]; v=[0 4 12 21 32 46 53 58 60 63]; i=[1 4 6 8 9];//en donde queremos que interpolemos esos datos interpln([t;v],i)//Usamos la funcin "interpln" function [y]=lineal(x)//Declaramos nuestra funcin t=[0 1.5 2 3 4.5 5 6.5 7 8.5 10] v=[0 4 12 21 32 46 53 58 60 63] y=interpln([t;v],x) endfunction x=1:0.01:8;//Rango donde queremos graficar plot(x,lineal) plot(t,v,'*r') I=intg(0,10,lineal)

    Ilustracin 8 Interpolacin de nuestros datos.

  • Ejercicio 14. Cdigo 14.

    //Para este problema ya nos dan el codigo solo es de observarlo y analizarlo // El cdigo queda de la siguiente forma clear clc t=0:0.1:15; comet3d(sin(t),sin(2*t),sin(%pi*t))

    Ilustracin 9 Movimiento del insecto