Métodos numéricos con Scilab



//MÉTODO DE BISECCIÓN
//Elaboró: Claudia Sánchez y Jaime Zaragoza
//Inst. Tec. Sup. del Oriente del Estado de Hidalgo.
//ITESA
//--------------------------------------------------
clc
clear all
//Valores extremos del intervalo
a=1; b=2;
//Inicialización de valores
conta=0;      //Contador de iteraciones
c=(b-a)/2;    //Valor intermedio
//Ciclo Do While
while c>0.00001 do
    x=a+(b-a)/2;    //x=punto medio en [a,b]
    y=x^3+4*x^2-10; //Función
    if y<0 then     //Condición
        a=x;
    else
        b=x;
    end
    conta=conta+1;  //Contador de iteraciones
    c=(b-a)/2;      //Nuevo valor intermedio
end
disp('MÉTODO DE BISECCIÓN')
disp('-------------------')
disp(x,'x=')
disp(y,'y=')
disp(conta,'Iteraciones=')
____________________________________________________________________________



//Programa para el ordenamiento de números de mayor a menor
//Elaboró: Claudia Sánchez y Jaime Zaragoza
//---------------------------------------------------------------------------
clc         //Limpiar pantalla.
//Vector con elementos aleatorios a ordenar de mayor a menor
a=round(100*rand(1,5));
//Rutina
for i=1:length(a);
    for j=1:length(a)
        if a(i)>a(j) then
            temp(i)=a(i);
            a(i)=a(j);
            a(j)=temp(i);
        end
    end
end
//Despliegue en pantalla el vector "a" como vector columna
disp(a')
//Para ordenar de menor a mayor, se invierte el signo de desigualdad.
______________________________________________________________
//               MÉTODO DE EULER
//  Borrelli, 2005. Ecuaciones Diferenciales
//  Ejemplo 2.5.2. Página 152
//  y'=y sen(3t), y(0)=1, 0<=t<=4.
//
//  Elaboró:  Ing. Claudia Sánchez y Jaime Zaragoza
//-------------------------------------------------
clc         //Limpiar pantalla.
clf(0)      //Limpiar figura gráfica anterior
//-------------------------------------------------
//        INICIALIZACIÓN DE VALORES
h=0.2;        //Tamaño del intervalo o escalón
N=4/h;        //Límite superior del número de escalones
t0=0;         //Tiempo inicial en t=0.
ti=t0;        //Valor inicial de ti que se almacena a(i)
y0=1;         //Condición inicial para y(t0)=y0
yi=y0;        //Valor inicial de "yi" que se almacena en el vector b(i)
//-----------------------------------------------
for i=1:N;       //Número de escalones
    a(i)=ti;     //Vector de valores de ti
    ti=t0+i*h;   //Tiempo ti
    b(i)=yi;     //Vector de valores de yi
    yi=yi+h*yi*sin(3*ti)//Valores de yi
end
//-------------------------------------------------
c=[a,b];         //Matriz de resultados
disp(c)          //Presentación de resultados
plot(a,b,"*-")   //Gráfica con los vectores a y b
xgrid
xtitle("Metodo de Euler para y´=ysen(3t)","Tiempo t","y(t)")
g=gca();
g.title.font_size=5;
g.labels_font_size=4;
g.x_label.font_size=4;
g.y_label.font_size=4;
//-------------------------------------------------
//         SOLUCIÓN VERDADERA
x=0:0.1:4;
y=%e^((1-cos(3*x))/3);
plot(x,y)        //Gráfica de la función verdadera

No hay comentarios:

Publicar un comentario