Matlab - Intersección de la función coseno

 
Vista:
sin imagen de perfil

Intersección de la función coseno

Publicado por Ricardo (5 intervenciones) el 13/06/2014 21:28:05
Hola, necesito ayuda con una tarea para la u, se trata de hacer una función que devuelva el valor de una intersección con el eje x de la función coseno.
el enunciado dice:
Escriba una función que encuentre la intersección con el eje x de la
función coseno para un intervalo [a, b]. Se asume que la función cruza al eje x solo
una vez en ese intervalo. Utilice el siguiente algoritmo (búsqueda binaria):

1. Dados a y b límites del intervalo [a, b].
2. Dado alfa un número lo suficientemente pequeño
3. Mientras el tamaño del intervalo [a, b] sea mayor que alfa
a. Calcular r como el punto medio del intervalo.
b. Si f(r) tiene igual signo que f(a)
i. Cambiar a por r
c. Si f(r) tiene igual signo que f(b)
i. Cambiar b por r
4. Retornar r
La función se ejecutaría de la siguiente manera:
-- resultado = cero_cos(a, b, alfa) ---
lo intente y no pude, se utiliza principalmente "while", por favor ayuda,
de anetemano muchas gracias
Ricardo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Intersección de la función coseno

Publicado por Ricardo (5 intervenciones) el 14/06/2014 03:14:07
Ayuda porfavor lo que tengo es:
1
2
3
4
5
6
7
8
9
10
11
12
function r=ceros(a,b,epsilon)
    while r~=epsilon
       while  (epsilon<abs(b-a))
          r=(a+b)/2;
                    if (cos(r)>0 && cos(a)>0) || (cos(r)<0 && cos(a)<0)
                   a=r;
                    elseif (cos(r)<0 && cos(b)<0) || (cos(r)>0 && cos(b)>0)
                   b=r;
                    end
       end
    end
end

pero no funciona si alguien me dice mi error porfavor
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jorge De Los Santos
Val: 30
Ha disminuido su posición en 12 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Intersección de la función coseno

Publicado por Jorge De Los Santos (213 intervenciones) el 14/06/2014 05:48:09
Hola Ricardo

Una forma de hacerlo sería la siguiente:

1
2
3
4
5
6
7
8
9
10
11
function r=cero_cos(a,b,epsilon)
f=@(x) cos(x);
while abs(a-b)>epsilon
    r=(a+b)/2;
    if sign(f(r))==sign(f(a))
        a=r;
    elseif sign(f(r))==sign(f(b))
        b=r;
    end
end
end


Lo anterior funciona para cuando en el intervalo dado hay únicamente un cero, tal como se indica.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar