• Lunes 23 de Diciembre de 2024, 13:06

Autor Tema:  Duda al evaluar una función  (Leído 2054 veces)

warishuku

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Duda al evaluar una función
« en: Miércoles 15 de Abril de 2009, 05:39 »
0
Hola que tal, antes que nada tengo que admitir que no se mucho de matlab, y me surgió un problema al momento de querer evaluar una función, tengo una función con 2 variables (x, y) a las cuales les quiero dar un valor en específico a cada una de ellas, por ejemplo:

function w=prueba(x, y)
w=(x.^2)+(x.*y)-(10)

En el programa que estoy tratando de desarrollar tengo que invocar a la función "prueba" con los valores de "x" e "y" que yo indiqué, intenté usar feval pero al parecer nada más se utilizarlo con una sola variable, y no se como hacerle para invocar a una función dándole valores a 2 o más variables.

Les agradecería si me pudieran indicar algun comando del cual no estoy al tanto o de una manera para poder invocar a una funcióin con varias variables dandole valores a dichas variables.

De antemano muchas gracias!

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Duda al evaluar una función
« Respuesta #1 en: Jueves 16 de Abril de 2009, 07:23 »
0
¿Podrías aclarar un poco mejor el problema? Una función se "invoca" simplemente con su nombre y colocando los parámetros adecuados.
La imaginación es el límite.
Hardware & Software | Mexchip

warishuku

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Duda al evaluar una función
« Respuesta #2 en: Jueves 16 de Abril de 2009, 08:52 »
0
Hola que tal, gracias por responder.

Mira el problema que presenté aquí ya lo pude solucionar afortunadamente, pero me surgió otro al tratar de realizar un programa que efectuara el método de Newton-Raphson para sistemas de ecuaciones no linealas, el codigo es:

function [Raiz, Iteraciones] = Newton_Rapson_Sistemas(Gx, Gx1, x, y)
It = 1;
It_limit = 30;
Tol = 0.001;
X = sym('x');
Y = sym('y');
Uxy = feval(Gx, X, Y);
Vxy = feval(Gx1, X, Y);
dUdx = diff(Uxy, X);
dUdy = diff(Uxy, Y);
dVdx = diff(Vxy, X);
dVdy = diff(Vxy, Y);
for q = It : It_limit
    dU_dx = dUdx(x,y)
end (Este "end" es improvisado para ir probando el programa cada vez que agrego un comando, el programa no está terminado)

Al correrlo me da el siguiente error:

??? Subscript indices must either be real positive integers or logicals.

Error in ==> Newton_Rapson_Sistemas at 14
    dUdx(x,y)

El error al parecer es porque los valores que yo ingreso son x=1.5 y=3.5, y me pide que sean enteros, pero lo que yo deseo que suceda es que a la variable dUdx se le sustituyan los valores de "x" e "y", la variable dUdx contiene lo siguiente:

dUdx = 2*x+y

Por lo tanto lo que yo espero es que dUdx = 6.5.

Espero haberme explicado bien al respecto, si necesitan que aclare algo con gusto lo haré.

Saludos y muchas gracias!

allisap

  • Miembro MUY activo
  • ***
  • Mensajes: 259
  • Nacionalidad: mx
    • Ver Perfil
Re: Duda al evaluar una función
« Respuesta #3 en: Sábado 18 de Abril de 2009, 00:35 »
0
saludos

mira creo que lo que pasa es que realmente no estas entendiendo lo que hace tu programa

en la linea donde dices

Uxy = feval(Gx, X, Y);

Uxy debe ser una matriz de 1*1 o de 1*n (dependiendo de que parametro sean X y Y Vectores o valores unicos) porque evaluas Gx en X y Y (aunque no defines Gx)

despues calculas la ecuaciones de diferencias de X-esimo orden ? con

dUdx = diff(Uxy, X);  

lo cual otra vez te dara una matriz de 1*1 o de 1*n dependiendo de si usaste valores o vectores

pero luego dices que la variable contiene  dUdx=2*x+y

eso no es cierto, arriba la definiste y es el resultado de una operacion de ecuaciones de diferencias,
y, suponiendo que te de un vector, al decir dU_dx = dUdx(x,y)
lo que dices que es dU_dx es igual al valor de la matriz dUdx en el elemento x, y,
por eso los indices deben ser positivos y enteros, son indices de la matriz no parametros de la funcion para poder hacer  2*x+y