Matlab - Resolver una ecuación complicada

   
Vista:

Resolver una ecuación complicada

Publicado por Luis (43 intervenciones) el 14/09/2011 18:05:54
Hola, me gustaría encontrar las soluciones a la siguiente ecuación entre el intervalo cero y pi.

La ecuación es: 2+3*sin(x)+0.4*sin(x)^2+0.9*sin(x)^3+cos(x)*(3+9*sin(x)+0.2*sin(x)^2)=0

He utilizado los comandos fzero y solve. EL primero sólo me encuentra la solución más cercana al punto que yo le diga y si le pongo el intervalo tiene que coincidir que en los extremos la función tenga el signo contrario. El segundo me da una solución muy extraña.

¿Alguien conoce otro comando que me resuelva este problema?

Muchas gracias a quien me pueda echar una mano.
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
Imágen de perfil de JOSE JEREMIAS CABALLERO

Resolver una ecuación complicada

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3432 intervenciones) el 14/09/2011 19:09:03
Hola Luis.

%======================
figure(gcf);
f='2+3*sin(x)+0.4*sin(x)^2+0.9*sin(x)^3+cos(x)*(3+9*sin(x)+0.2*sin(x)^2)';
fplot(f,[0 pi]),
grid,
raiz=fzero(f,[0 pi])
%=========================

>>resultado
raiz =

2.0954


JOSE JEREMIAS CABALLERO
ASESOR DE PROYECTOS CON MATLAB
PROFESOR DE METODOS NUMERICOS CON MATLAB
PROGRAMADOR MATLAB
jjcc94@hotmail.com
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

Resolver una ecuación complicada

Publicado por Luis (43 intervenciones) el 19/09/2011 18:34:47
Hola Jose Jeremias, muchas gracias por tu respuesta. En el caso que he escrito no ocurre ningún problema, sin embargo, en la ecuación que yo realmente si quería resolver no puedo utilizar el método que tu has utilizado, te escribo todo el programilla:

syms x
l=7;
e=0.0001;
B=((l^2+1)*(1+(tan(e))^2))^0.5;
A=B/l;
C=B*tan(e);
D=l*tan(e);
A1=A*B*l-B*(B^2-1)*C*tan(e);
A2=(1-B^2)*C*(l+tan(e))+A*(1+D*(B^2-1))*l-2*B^2*A*l;
A3=B*(1-B^2)*C*tan(e)+B*(B^2-1)*C*tan(e)-3*A*B^3*l;
A4=A*B^2*l;
A5=2*A*B^3*l;
B1=B*(l+(1-B^2)*D*tan(e));
B2=2*B^2*(l+tan(e));
B3=B^3*(3*l+4*tan(e));
B4=2*B^4*tan(e);
figure(gcf);
Derivada_Cp='A1+A2*sin(x)+A3*sin(x)^2+A4*sin(x)^3+A5*sin(x)^4+cos(x)*(B1-B2*sin(x)-B3*sin(x)^2-B4*sin(x)^3)';
fplot(Derivada_Cp,[0 pi]),
grid
raiz=fzero(Derivada_Cp,[0 pi])

¿Te da un error como a mí?
Un saludo y gracias.
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 JOSE JEREMIAS CABALLERO

Resolver una ecuación complicada

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3432 intervenciones) el 19/09/2011 19:55:57
Hola Luis.
Primeramente haz tus preguntas claras, no te vayas por las tangentes.
Yo pense que " f='2+3*sin(x)+0.4*sin(x)^2+0.9*sin(x)^3+cos(x)*(3+9*sin(x)+0.2*sin(x)^2)';".
era tu pregunta, por eso te resolvi esa manera la pregunta, uno contesta de acuerdo a las preguntas que hacen los usuarios del foro.
Ahora me dices que era otra tu pregunta, entonces que entendemos las personas que contestamos en el foro.
Muchas personas cometen ese mismo errror, pregunta algo, luego uno le contesta, dice que no era la repuestas que querian. Entonces porque no son precisas en sus preguntas.

Te contestado de una muy particular, ya que no conosco tu nivel de conocimientos de matlab.

Ahora si deas que salga todas las raices de una funcion cualquiera.
Entonces debes aplicar el metodo de Newton-Raphson, generalizada para hallar todas la raices de una funcion, pero para hay saber la teoria del metodo de Newton-Raphson y ademas programar en Matlab.


%===============================
clear all;
syms x
l=7;
e=0.0001;
B=((l^2+1)*(1+(tan(e))^2))^0.5;
A=B/l;
C=B*tan(e);
D=l*tan(e);
A1=A*B*l-B*(B^2-1)*C*tan(e);
A2=(1-B^2)*C*(l+tan(e))+A*(1+D*(B^2-1))*l-2*B^2*A*l;
A3=B*(1-B^2)*C*tan(e)+B*(B^2-1)*C*tan(e)-3*A*B^3*l;
A4=A*B^2*l;
A5=2*A*B^3*l;
B1=B*(l+(1-B^2)*D*tan(e));
B2=2*B^2*(l+tan(e));
B3=B^3*(3*l+4*tan(e));
B4=2*B^4*tan(e);
Derivada_Cp=A1+A2*sin(x)+A3*sin(x)^2+A4*sin(x)^3+A5*sin(x)^4+cos(x)*(B1-B2*sin(x)-B3*sin(x)^2-B4*sin(x)^3);
Der=inline(Derivada_Cp);
figure(gcf);
fplot(Der,[0 pi]),
grid on
raiz1=fzero(Der,[0 1])
raiz2=fzero(Der,[1 pi])
%===========================

EJECUCION
>> ecuacion_complicada

raiz1 =
0.0473


raiz2 =
2.1415


JOSE JEREMIAS CABALLERO
ASESOR DE PROYECTOS CON MATLAB
PROFESOR DE METODOS NUMERICOS CON MATLAB
PROGRAMADOR MATLAB
jjcc94@hotmail.com
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