Matlab - Funcion quad2d y función anonymus

   
Vista:

Funcion quad2d y función anonymus

Publicado por Ignacio (1 intervención) el 05/11/2012 11:04:16
Hola!,

mi problema es el siguiente, para poder hacer una integración númerica de una función de la que sólo tengo su valor en unos determinados puntos, lo que hago es primero aproximar dicha función por un polinomio y depués integrar ese polinomio. El grado del polinomio además de ser de dos variables es de grado bastante alto, para que la solución sea buena. Me gustaría poder escribir el polinomio de una manera más sencilla, como multiplicación de vectores, pero he leido que no puedo utilizar la multiplicación de vectores, únicamente la multiplicación elemento a elemento.

Para que os hagais una idea, en el caso de que el polinomio fuera de grado 5 y 5(x e y respectivamente). He tenido que escribir:

S=quad2d(@(x,y) ((x.^5).*(y.^5).*pe(1)+(x.^4).*(y.^5).*pe(2)+(x.^3).*(y.^5).*pe(3)+(x.^2).*(y.^5).*pe(4)+(x.^1).*(y.^5).*pe(5)+(x.^0).*(y.^5).*pe(6)+ (x.^5).*(y.^4).*pe(7)+(x.^4).*(y.^4).*pe(8)+(x.^3).*(y.^4).*pe(9)+(x.^2).*(y.^4).*pe(10)+(x.^1).*(y.^4).*pe(11)+(x.^0).*(y.^4).*pe(12)+ (x.^5).*(y.^3).*pe(13)+(x.^4).*(y.^3).*pe(14)+(x.^3).*(y.^3).*pe(15)+(x.^2).*(y.^3).*pe(16)+(x.^1).*(y.^3).*pe(17)+(x.^0).*(y.^3).*pe(18)+(x.^5).*(y.^2).*pe(19)+(x.^4).*(y.^2).*pe(20)+(x.^3).*(y.^2).*pe(21)+(x.^2).*(y.^2).*pe(22)+(x.^1).*(y.^2).*pe(23)+(x.^0).*(y.^2).*pe(24)+ (x.^5).*(y.^1).*pe(25)+(x.^4).*(y.^1).*pe(26)+(x.^3).*(y.^1).*pe(27)+(x.^2).*(y.^1).*pe(28)+(x.^1).*(y.^1).*pe(29)+(x.^0).*(y.^1).*pe(30)+(x.^5).*(y.^0).*pe(31)+(x.^4).*(y.^0).*pe(32)+(x.^3).*(y.^0).*pe(33)+(x.^2).*(y.^0).*pe(34)+(x.^1).*(y.^0).*pe(35)+(x.^0).*(y.^0).*pe(36));

Tendría que hacer polinomios de 20 y 20 o 30 y 30, sin tener que escribirlos así.

Alguna idea?

Saludos y gracias
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 Dave

Funcion quad2d y función anonymus

Publicado por Dave correa.dave30@gmail.com (934 intervenciones) el 05/11/2012 16:37:02
Hola Ignacio,

Sinceramente no creo que Matlab tenga esa limitación, te sugiero que revises la información sobre el toolbox de Matematica Simbolica de Matlab, estoy seguro que allí encontraras información de mucha utilidad.

Espero que sea de alguna ayuda.

Saludos
Dave Correa
correa.dave30@gmail.com
Servicios de Programación Matlab
http://fismatlab.blogspot.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
Imágen de perfil de JOSE JEREMIAS CABALLERO

Funcion quad2d y función anonymus

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3440 intervenciones) el 06/11/2012 08:26:47
sugerencias: Conocimiento de matlab intermedio(ciclos iterativos), creacion de archivos tipo function, llamados de archivos tipo function, uso de variables globlales. Si tienes esos conocimientos te puede salir el problema.
observaciones: falta informacion sobre el pe.

Efectivamente el codigo se puede hacer para cualquier grado de polinomio.
>> anonimos
S2 =
5.1524e+04

>> anonimos(5)
S2 =
3.8638e+04

>> anonimos(2)
S2 =
5.2278e+04


Para cada ejecucion uso un vector aleatorio, por eso los valores son distintos y cada resultado es independiente del otro.

Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
programador en matlab
Servicios de programacionMatlab
jjcc94@hotmail.com

http://matlabcaballero.blogspot.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