Matlab - error al ejecutar el teta-metodo

 
Vista:
sin imagen de perfil

error al ejecutar el teta-metodo

Publicado por Onesimo (4 intervenciones) el 08/12/2013 01:09:41
1. function[u, tiempo]= theta_metodo(theta, delta_x, delta_t, T_f,u_0)
2. J=1/delta_x;
3. N=1/delta_t;
4. nu=delta_t*T_f/(delta_x*delta_x);
Estas son las primeras lineas de mi programa y al ejecutarlo me da el error:
??? Input argument "delta_x" is undefined.

Error in ==> theta_metodo at 2
J=1/delta_x;
Lo que no logro identificar el error. Me puede por favor ayudar???
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
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

error al ejecutar el teta-metodo

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 08/12/2013 13:35:08
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function[u, tiempo]= theta_metodo(theta, delta_x, delta_t, T_f,u_0)
if nargin <1
    theta=0.6
    delta_x=3;
    delta_t=0.8;
    T_f=3;
    u_0=12;
end
 
J=1/delta_x;
N=1/delta_t;
u=J/N;
 
nu=delta_t*T_f/(delta_x*delta_x);
tiempo=nu*delta_t;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
>> [u, tiempo]= theta_metodo(3,4,5,6)
 
u =
 
    1.2500
 
 
tiempo =
 
    9.3750
 
>> [u, tiempo]= theta_metodo
 
theta =
 
    0.6000
 
 
u =
 
    0.2667
 
 
tiempo =
 
    0.2133
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
sin imagen de perfil

error al ejecutar el teta-metodo

Publicado por Alcides (4 intervenciones) el 08/12/2013 17:57:51
Asi es como le estoy ejecutando:

function[u, tiempo]= theta_metodo(theta, delta_x, delta_t, T_f,u_0)
N=1/delta_t;
J=1/delta_x;
nu=delta_t*T_f/(delta_x*delta_x);


u=u_0(2:J); %Por ahora omitimos las condiciones de contorno de Dirichlet

e=ones(J-1,1);
ed=e*(1+2*theta*nu);
eu=e*(-theta*nu);
el=eu;
A=spdiags([el ed eu], -1:1, J-1,J-1);

ed=e*(1-2*(1-theta)*nu);
eu=e*((1-theta)*nu);
el=eu;
B=spdiags([el ed eu], -1:1, J-1,J-1);

tic;
for i=1:N
u=A\(B*u);
end

%Imponemos las condiciones de contorno.
u=[0; u; 0];
tiempo=toc;
end

El problema me pide para ejecutarlo con T=0.6 teta=0,1/2 e 1; nu=1/2, 1/2 e 5; mu=1/40, 1/4 respectivamente.
En realidad soy nuevo con MATLAB, no he aprendido en la carrera porque en mi Pais no se da y solamente lo encontre en el master y a veces tardo entender las cosas. Estare muy agradecido por vuestra ayuda.
Por ahora el error que me esta dando es:
??? Input argument "delta_t" is undefined.

Error in ==> theta_metodo at 2
N=1/delta_t;

Atentamente,
A. Onesimo
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
sin imagen de perfil

error al ejecutar el teta-metodo

Publicado por Alcides (4 intervenciones) el 08/12/2013 18:58:16
Para ser más claro con mi pregunta he decidido ponerte el problema que estoy intentando resolver, tal cual lo encontré:
Consideremos la ecuacion del calor
ut=uxx, (x,t)&#1013;(0,1)x(0,T)
u(x,0) = u(1,t)=0, t>0
u(x,0)=u0(x), 0&#8804;x&#8804;1

Com condicion inicial
u0(x)=x(1 - x)

Vamos a obtener aproximaciones a la solucion utilizando el teta-método con teta=0 (método explicito), teta=1/2 (método de Crank-Nicolson) y teta=1 (método implícito). Escogemos tiempo final T=0.6 y consideremos mallados uniformes en la variable x com espaciado &#8710;x y en la variable t com espaciado &#8710;t. Llamemos J al número de nodos en la variable x y N al número de nodos en la variable t. Denotemos por
nu=&#8710;t/(&#8710;x)^2, mu=&#8710;t/&#8710;x
• Realice un gráfico en escala doblemente logarítmica representando J frente al error en norma infinito en tiempo T=0.6 com los 3 metodos para los valores:
&#1256;=0, &#1141;=1/2, &#1141;=1/6
&#1256;=1/2, &#1141;=1/2, µ=1/40
&#1256;=1, &#1141;=5, µ=1/4

• Realice un gráfico en escala doblemente logarítmica representando el tiempo de CPU necessário para obtener cada una de las aproximaciones frente al error en norma infinito en tiempo T=0.6 para los mismos valores del apartado anterior.
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 JERMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

error al ejecutar el teta-metodo

Publicado por JOSE JERMIAS CABALLERO (5917 intervenciones) el 08/12/2013 20:49:34
Bueno es programación nivel intermedio en Matlab. Deberías empezar por ejemplos mas sencillos para que veas como función archivos function, tu programa es tipo function en matlab
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
sin imagen de perfil

error al ejecutar el teta-metodo

Publicado por Alcides (4 intervenciones) el 08/12/2013 22:24:39
Si desafortunadamente es lo que estamos estudiando, si tener aprendido antes lo más basico. Mientras tanto estoy estudiando el basico desde los apuntes de tu blog "aprenda matlab 7.0". Por lo tanto si usted me da una aclaración sobre esta práctica sería muy agradecida.
Alcides
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 Dave
Val: 497
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

error al ejecutar el teta-metodo

Publicado por Dave (1094 intervenciones) el 11/12/2013 12:23:47
Hola Onesimo;

Me da la impresión que el error que obtienes es porque estas tratando de ejecutar directamente la función, en vez de usar o llamar a la función desde un script.

Espero que sea de alguna ayuda.

Saludos
Dave Correa
[email protected]
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