Ayuda evaluar funcion multivariable
Publicado por Diego (1 intervención) el 05/12/2011 05:34:36
Buenas noches a todos, dejenme presentales el problema que me tiene trabado.
explico un poquito de que se trata: Debo entregar un proyecto en el cual tengo que resolver un sistema de 3 ecuaciones con 3 incognitas en matlab, aplicando el metodo del disparo. estoy utilizando el metodo de runge kutta de 2do orden. el programa se supone que comienza con valores iniciales, y luego comienza a iterar en el ciclo for hasta que llega a un valor limite; con lo que escribi se supone que los valores de cada componente del vector Z es guardado en una tabla, de modo que se pueda tener la solucion de las ecuaciones de forma discreta.
el codigo fuente del programa es el siguiente:
a=0;
b=2*pi;
n=100;
t=(b-a)/n;
w=523.599;
L=0.0381;
Rc=0.0986;
R=0.09352;
%mu=2020;
c=Rc-R;
e=0.0034548;
h=0;
z1=0;
z2=0;
z3=c+e;
Z=[z1;z2;z3];
X(1,1)=h;
X(2,1)=z1;
X(3,1)=z2;
X(4,1)=z3;
f=inline('[z2;(3*0.0034548*sin(h)*z2/z3)-(6*523.599*0.008746*2020*0.0034548*sin(h)*z2/z3);-0.0034548*sin(h)]');
for i=1:n-1;
k1=f(h,z2,z3); %AQUI
k2=f(h+t,z2+t*k1,z3+t*k1); %AQUI
Z=Z+(t/2)*(k1+k2);
h=a+i*t;
X(1,i+1)=h;
X(2,i+1)=Z(1);
X(3,i+1)=Z(2);
X(4,i+1)=Z(3);
end
A(:,1)=X(1,:);
A(:,2)=X(2,:);
A(:,3)=X(3,:);
A(:,4)=X(4,:);
ahora planteo el problema: tanto en k1 como en k2 quisiera que le pudiera decir "k1=f(h,Z)", siendo h el paso, y Z un vector columna dado por Z=[z1,z2,z3]; es decir, quisiera poder evaluar la funcion f arriba definida tanto en la h como en los valores que componen al vector Z, pero aun no lo logro. lo que mas o menos quisiera es que en los lugares donde escribi %AQUI pudiera escribirlos asi:
k1=f(h,Z); %AQUI
k2=f(h+t,Z+t*k1); %AQUI
quisiera poder escribir las k asi mas o menos de modo que la funcion f se pudiera evaluar en las componentes de Z automaticamente. de verdad agradeceria cualquier ayuda. gracias!!
explico un poquito de que se trata: Debo entregar un proyecto en el cual tengo que resolver un sistema de 3 ecuaciones con 3 incognitas en matlab, aplicando el metodo del disparo. estoy utilizando el metodo de runge kutta de 2do orden. el programa se supone que comienza con valores iniciales, y luego comienza a iterar en el ciclo for hasta que llega a un valor limite; con lo que escribi se supone que los valores de cada componente del vector Z es guardado en una tabla, de modo que se pueda tener la solucion de las ecuaciones de forma discreta.
el codigo fuente del programa es el siguiente:
a=0;
b=2*pi;
n=100;
t=(b-a)/n;
w=523.599;
L=0.0381;
Rc=0.0986;
R=0.09352;
%mu=2020;
c=Rc-R;
e=0.0034548;
h=0;
z1=0;
z2=0;
z3=c+e;
Z=[z1;z2;z3];
X(1,1)=h;
X(2,1)=z1;
X(3,1)=z2;
X(4,1)=z3;
f=inline('[z2;(3*0.0034548*sin(h)*z2/z3)-(6*523.599*0.008746*2020*0.0034548*sin(h)*z2/z3);-0.0034548*sin(h)]');
for i=1:n-1;
k1=f(h,z2,z3); %AQUI
k2=f(h+t,z2+t*k1,z3+t*k1); %AQUI
Z=Z+(t/2)*(k1+k2);
h=a+i*t;
X(1,i+1)=h;
X(2,i+1)=Z(1);
X(3,i+1)=Z(2);
X(4,i+1)=Z(3);
end
A(:,1)=X(1,:);
A(:,2)=X(2,:);
A(:,3)=X(3,:);
A(:,4)=X(4,:);
ahora planteo el problema: tanto en k1 como en k2 quisiera que le pudiera decir "k1=f(h,Z)", siendo h el paso, y Z un vector columna dado por Z=[z1,z2,z3]; es decir, quisiera poder evaluar la funcion f arriba definida tanto en la h como en los valores que componen al vector Z, pero aun no lo logro. lo que mas o menos quisiera es que en los lugares donde escribi %AQUI pudiera escribirlos asi:
k1=f(h,Z); %AQUI
k2=f(h+t,Z+t*k1); %AQUI
quisiera poder escribir las k asi mas o menos de modo que la funcion f se pudiera evaluar en las componentes de Z automaticamente. de verdad agradeceria cualquier ayuda. gracias!!
Valora esta pregunta
0