Matlab - Intersección de la función coseno

   
Vista:

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
información
Otras secciones de LWP con contenido de Matlab
- Código fuente de Matlab
- Cursos de Matlab
- Temas de Matlab
- Chat de Matlab
información
Códigos de Matlab
- Fuerzas de Coulomb
- Fixed Pivot
- Elige una carta

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

Intersección de la función coseno

Publicado por Jorge De Los Santos (212 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