Muchas gracias muy bueno el tutorial todo funciona muy bien, quisiera ponerlo en un ejecutable podrias ayudarme en eso por favor o hacer un tutorial de eso gracias de antemano????
Buenas jc jimenez tenemos una inquietudes 1.- que representa deltaX 2.-Por que la condicion del while es que la norma de delta tiene que ser mayor al producto de la toleracion por la norma de x0
el parametro de entrada x0 debe ser un vector columna, se usa el ' para otener la transpuesta y convertirlo a un vector renglon y se agrega el valor 0 como la norma de la primera iteracion. Mas abajo se va incrementando la tabla de las iteraciones con el vector x0 nuevo y la norma correspondiente.
buen día, muchísimas gracias por tu ayuda brindada. solo tengo una pregunta y una sugerencia: sugerencia: seria bueno que en la condición en el ciclo while fuese así norm(deltaX)>=norm(x0)*tol %por si el punto x0=[0;0;0;...;0]. mi pregunta es: como le hago para que las expresiones numéricas matlab me las de evaluadas? por ejemplo tengo este sistema de ecuaciones: A=[3*x-cos(y*z)-0.5;4*x^2-625*y^2+2*y-1;exp(-x*y)+20*z+((10*pi)/3)-1]; al querer solucionar por el metodo de newton raphson con x0=[0;0;0]. me da como respuesta: sol = (3*(194376*2^(1/2)*exp(1/4) - 797440*exp(1/4) + 204344*6^(1/2)*exp(1/4) + 5605*2^(1/2) - 5605*6^(1/2) - 8280*pi*2^(1/2)*exp(1/4) + 8280*pi*6^(1/2)*exp(1/4)))/(4*(1794240*exp(1/4) + 1881*2^(1/2) - 1881*6^(1/2) - 160*pi*2^(1/2)*exp(1/4) + 160*pi*6^(1/2)*exp(1/4))) + 1/2 (3*(1248*2^(1/2)*exp(1/4) - 601280*exp(1/4) + 1312*6^(1/2)*exp(1/4) - 589*2^(1/2) + 589*6^(1/2)))/(4*(1794240*exp(1/4) + 1881*2^(1/2) - 1881*6^(1/2) - 160*pi*2^(1/2)*exp(1/4) + 160*pi*6^(1/2)*exp(1/4))) + 1/2 (358848*exp(1/4) - 589*pi*2^(1/2) + 589*pi*6^(1/2) + 15048*2^(1/2) + 15048*6^(1/2) - 32*pi*2^(1/2)*exp(1/4) + 32*pi*6^(1/2)*exp(1/4) - 463752)/(4*(1794240*exp(1/4) + 1881*2^(1/2) - 1881*6^(1/2) - 160*pi*2^(1/2)*exp(1/4) + 160*pi*6^(1/2)*exp(1/4))) - pi/6 en vez de sol= 0.500166686911466 0.250803638439239 -0.517387427392491 la configuración la tengo en long g muchas gracias
Excelente video, Disculpe al ejecutar el programa me marca: ??? function [sol,iter,jac]=newtonsi(f,x0,tol,c) | Error: Function definitions are not permitted at the prompt or in scripts. ??? Input argument "f" is undefined. Error in ==> newtonsi at 15 jac = jacobian(f); Si pudiera ayudarme se lo agradecería , saludos
muy buen video solo tengo una duda al crear la funcion en el editor por ejemplo en iter =[x0'0] me marca como error y a la hora de llamarlo para resolver las ecuaciones me marca esos errores donde lleva el ' por que
Que tal, si no es mucha molestia podrías enseñar como hiciste la ventana para mostrar los datos porque la verdad no se como se hace y se me complica algo Matlab. Gracias
hola! trato de usar tu programa para una sistema de dos ecuaciones no lineales, sin embargo me aparecen estos errores "sym/cat>catMany" de los cuales no encuentro la forma de eliminarlos. Me podrías sugerir algo?
Tienes 2 opciones:1) registrar el toolbox en File/set path/Add folder... "seleccionar la carpeta donde se encuentra symbolic ...matlab\...\toolbox\symbolic. 2) la otra opcion es que generes las funciones .m con la definicion de las funciones y otra para las derivadas del Jacobiano, luego en lugar de llamar la funcion subs tendras que llamar tu funcion con los valores de las variables para que te devuelva el resultado como una matriz, tal como lo haria la funcion subs. Saludos!
Para poder utilizar el Toolbox Simbolic (Que por default puede venir desactivado) solo ve en la ventana de resultados al menu FILE>>SET PATH>>SELECCIONAS LA CARPETA QUE DIGA SYMBOLIC>>SAVE. luego en el cuerpo del programa solo declaras con la palabra "syms"
Buen dia, lo que sucede es que al darle correr al programa me sale el siguiente error:Not enough input arguments. Error in newhonmulti (line 3) jac=jacobian(f); y no se a que se deba muchas gracias
hola amigo tengo un problemita con la linea 15 del codigo al correrlo me dice que la f es indefinido que es lo que puedo hacer para corrgirlo?? espero me puedas ayudar
Buenas tardes, Gracias por compartir tu conocimiento con nosotros... Una pregunta es que en mi matlab 2013a el programa se queda iterando y se bloquea el programa... y no sale ningún resultado de sol, iter, jac que pudo haber pasado. Agregue al toolbox mi carpeta y tampoco. Gracias
gola profe, una duda me sale esto [sol,iter,jac]=newtonsi(A,x0,0.00001,100) Warning: System is rank deficient. Solution is not unique. estoy usando la version 2014
Tengo un problema, no se por qué matlab no me deja hacer esta operación deltax=dfx0\(-fx0), los dos datos son de tipo sym y como que permite esa operación en ese tipo de datos, alguien sabe como se soluciona???
Una duda lo corri y hace las interacciones pero me pone esto: Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 4.872065e-17.
Esto se debe a que las ecuaciones son muy parecidas, entonces el punto de intersección se da en un rango amplio. Esto se entiende por una matriz singular, donde por errores de redondeo la solución puede variar. Imagina dos ecuaciones con dos incógnitas, la grafica de estas dos funciones son dos curvas que casi se tocan en un rango amplio, por lo tanto no es fácil determinar el punto exacto de intersección.
esta es la parte donde resuelve el sistema, al tratar de resolverlo encuentra que es singular y no puede seguir, puedes probar con otro método, por ejemplo, jacobi o gauss seidel, que son métodos iterativos, te puedes apoyar en el video tutorial que subi para estos métodos.
hola estoy utilizando tu algoritmo pero lo estoy corriendo en la version 2014a con las funciones de entrada que utilizas en el video. resulta que asi le coloque 5 iteraciones el programa se queda resolviendo el sistema, sabes otro metodo para resolver el sistema sin usar el \. gracias
José A. Catarino la debes colocar después de la linea donde obtienes deltaX en tu código. esto en caso de que sigas tal cual el código presentado en este vídeo
buenas tardes, disculpe al ejecutar el programa me marca esto: Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 1.707940e-016. > In newtonsi at 22 el programa da un resultado erróneo, si pudiera ayudarme se lo agradecería saludos
En la Universidad de La Frontera, el profesor Uribe no deja usar variables simbólicas, porque el computador se le pega... y eso que tiene un MACBOOK PRO. :C
Brother me salvaste la vida, estaba que me rompía la cabeza y nada. Funciona a la perfección muchas gracias por la explicación.
que dios te bediga mucho a ti y a tu familia , un abrazo desde cuba
Gracias!! Nos ha salvado la vida a muchos :p
Gracias, muy bien explicado todo, me funciono a la perfección!!!
Muchas gracias muy bueno el tutorial todo funciona muy bien, quisiera ponerlo en un ejecutable podrias ayudarme en eso por favor o hacer un tutorial de eso gracias de antemano????
Buenas jc jimenez tenemos una inquietudes
1.- que representa deltaX
2.-Por que la condicion del while es que la norma de delta tiene que ser mayor al producto de la toleracion por la norma de x0
Excelente Vídeo, Gracias, por favor, ¿Cuál es el libro de referencia que utiliza en el vídeo?.
Saludos
el parametro de entrada x0 debe ser un vector columna, se usa el ' para otener la transpuesta y convertirlo a un vector renglon y se agrega el valor 0 como la norma de la primera iteracion. Mas abajo se va incrementando la tabla de las iteraciones con el vector x0 nuevo y la norma correspondiente.
buen día, muchísimas gracias por tu ayuda brindada.
solo tengo una pregunta y una sugerencia:
sugerencia: seria bueno que en la condición en el ciclo while fuese así norm(deltaX)>=norm(x0)*tol %por si el punto x0=[0;0;0;...;0].
mi pregunta es: como le hago para que las expresiones numéricas matlab me las de evaluadas? por ejemplo tengo este sistema de ecuaciones:
A=[3*x-cos(y*z)-0.5;4*x^2-625*y^2+2*y-1;exp(-x*y)+20*z+((10*pi)/3)-1]; al querer solucionar por el metodo de newton raphson con x0=[0;0;0].
me da como respuesta:
sol =
(3*(194376*2^(1/2)*exp(1/4) - 797440*exp(1/4) + 204344*6^(1/2)*exp(1/4) + 5605*2^(1/2) - 5605*6^(1/2) - 8280*pi*2^(1/2)*exp(1/4) + 8280*pi*6^(1/2)*exp(1/4)))/(4*(1794240*exp(1/4) + 1881*2^(1/2) - 1881*6^(1/2) - 160*pi*2^(1/2)*exp(1/4) + 160*pi*6^(1/2)*exp(1/4))) + 1/2
(3*(1248*2^(1/2)*exp(1/4) - 601280*exp(1/4) + 1312*6^(1/2)*exp(1/4) - 589*2^(1/2) + 589*6^(1/2)))/(4*(1794240*exp(1/4) + 1881*2^(1/2) - 1881*6^(1/2) - 160*pi*2^(1/2)*exp(1/4) + 160*pi*6^(1/2)*exp(1/4))) + 1/2
(358848*exp(1/4) - 589*pi*2^(1/2) + 589*pi*6^(1/2) + 15048*2^(1/2) + 15048*6^(1/2) - 32*pi*2^(1/2)*exp(1/4) + 32*pi*6^(1/2)*exp(1/4) - 463752)/(4*(1794240*exp(1/4) + 1881*2^(1/2) - 1881*6^(1/2) - 160*pi*2^(1/2)*exp(1/4) + 160*pi*6^(1/2)*exp(1/4))) - pi/6
en vez de
sol=
0.500166686911466
0.250803638439239
-0.517387427392491
la configuración la tengo en long g
muchas gracias
gracias por la ayuda! saludos
Excelente video, Disculpe al ejecutar el programa me marca:
??? function [sol,iter,jac]=newtonsi(f,x0,tol,c)
|
Error: Function definitions are not permitted at the prompt or in scripts.
??? Input argument "f" is undefined.
Error in ==> newtonsi at 15
jac = jacobian(f);
Si pudiera ayudarme se lo agradecería , saludos
Gracias!!!!! Me sirvio arto ^^!
Harta velga tal vez.
muy buen video solo tengo una duda al crear la funcion en el editor por ejemplo en iter =[x0'0] me marca como error y a la hora de llamarlo para resolver las ecuaciones me marca esos errores donde lleva el ' por que
Que tal, si no es mucha molestia podrías enseñar como hiciste la ventana para mostrar los datos porque la verdad no se como se hace y se me complica algo Matlab. Gracias
hola! trato de usar tu programa para una sistema de dos ecuaciones no lineales, sin embargo me aparecen estos errores "sym/cat>catMany" de los cuales no encuentro la forma de eliminarlos. Me podrías sugerir algo?
Tienes 2 opciones:1) registrar el toolbox en File/set path/Add folder... "seleccionar la carpeta donde se encuentra symbolic ...matlab\...\toolbox\symbolic. 2) la otra opcion es que generes las funciones .m con la definicion de las funciones y otra para las derivadas del Jacobiano, luego en lugar de llamar la funcion subs tendras que llamar tu funcion con los valores de las variables para que te devuelva el resultado como una matriz, tal como lo haria la funcion subs. Saludos!
Muchas gracias!
Para poder utilizar el Toolbox Simbolic (Que por default puede venir desactivado) solo ve en la ventana de resultados al menu FILE>>SET PATH>>SELECCIONAS LA CARPETA QUE DIGA SYMBOLIC>>SAVE.
luego en el cuerpo del programa solo declaras con la palabra "syms"
tengo un grave problema, las funciones trigonométricas como sin(A), si remplazo A=5 me sale sin(5) y no el numero resultante. ¿como hago con eso?
Buen dia, lo que sucede es que al darle correr al programa me sale el siguiente error:Not enough input arguments.
Error in newhonmulti (line 3)
jac=jacobian(f);
y no se a que se deba muchas gracias
hola usando tu algoritmo en el matlab 2015b me ocurreun error el cual dice que mi variable newtonsi no esta definida y esta igual que en el video
hola amigo tengo un problemita con la linea 15 del codigo al correrlo me dice que la f es indefinido que es lo que puedo hacer para corrgirlo?? espero me puedas ayudar
Buenas tardes, Gracias por compartir tu conocimiento con nosotros...
Una pregunta es que en mi matlab 2013a el programa se queda iterando y se bloquea el programa... y no sale ningún resultado de sol, iter, jac que pudo haber pasado. Agregue al toolbox mi carpeta y tampoco.
Gracias
funciona con la version 2013?
como hago para tener el symbolyc en matlab 2009a
gola profe, una duda me sale esto
[sol,iter,jac]=newtonsi(A,x0,0.00001,100)
Warning: System is rank deficient. Solution is not unique.
estoy usando la version 2014
Tengo un problema, no se por qué matlab no me deja hacer esta operación deltax=dfx0\(-fx0), los dos datos son de tipo sym y como que permite esa operación en ese tipo de datos, alguien sabe como se soluciona???
hola no podrias enviarme a mi correo el programa desarrollado, digo si es que aun lo tienes guardado, me seria de gran ayuda...
¿Puedes subir el código? porfa
Una duda lo corri y hace las interacciones pero me pone esto: Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 4.872065e-17.
Esto se debe a que las ecuaciones son muy parecidas, entonces el punto de intersección se da en un rango amplio. Esto se entiende por una matriz singular, donde por errores de redondeo la solución puede variar. Imagina dos ecuaciones con dos incógnitas, la grafica de estas dos funciones son dos curvas que casi se tocan en un rango amplio, por lo tanto no es fácil determinar el punto exacto de intersección.
pero este error lo produce en la linea de este codigo
deltaX= dfx0 \ ( -fx0);
no se si se deba a la diagonal inversa por que marca errore ahi.
esta es la parte donde resuelve el sistema, al tratar de resolverlo encuentra que es singular y no puede seguir, puedes probar con otro método, por ejemplo, jacobi o gauss seidel, que son métodos iterativos, te puedes apoyar en el video tutorial que subi para estos métodos.
+Jose Enrique Rodriguez Miramar
Pregunta: que punto de entrada ocupaste?
hola estoy utilizando tu algoritmo pero lo estoy corriendo en la version 2014a con las funciones de entrada que utilizas en el video. resulta que asi le coloque 5 iteraciones el programa se queda resolviendo el sistema, sabes otro metodo para resolver el sistema sin usar el \. gracias
Ya lo resolvi en las iteraciones recomiendo utilizar el comando sym2poly para convertir deltaX a numero y no dejarlo en formato simbolico.
amigo como resolviste el problema con las iteracciones, tengo el mimo problema
jaime andres yate gomez Es correcto al agregarle esta corrección el codigo ahorra tiempo computacional y realiza las operaciones de una forma correcta
jaime andres yate gomez en que parte lo colocas'?
José A. Catarino la debes colocar después de la linea donde obtienes deltaX en tu código. esto en caso de que sigas tal cual el código presentado en este vídeo
no habria manera de que me pasara el programa?
buenas tardes, disculpe al ejecutar el programa me marca esto:
Warning: Matrix is close to singular or badly
scaled.
Results may be inaccurate. RCOND =
1.707940e-016.
> In newtonsi at 22
el programa da un resultado erróneo, si pudiera ayudarme se lo agradecería saludos
Y como se si tengo el symbolic toolbox?!!! estoy fregado, cuando lo corro me dice Error in MuPAD command: Invalid operands y unos errores abajo.
En la Universidad de La Frontera, el profesor Uribe no deja usar variables simbólicas, porque el computador se le pega... y eso que tiene un MACBOOK PRO. :C
jaajja xDD
hice todo al momento de correr la función el MATLAB se queda estático y se cuelga
Me prodrias pasar el .mfile?
Alguien sabe como hago que deje de iterar?
Presiones Crtl+C y se detiene el programa.