Matlab - iteraciones en matlab

   
Vista:

iteraciones en matlab

Publicado por Juan juaanllee@gmail.com (6 intervenciones) el 26/04/2011 18:45:04
hola chicos/as tengo un pequeño problema, supongo típico de novato. La cuestion es que tengo muchos valores para 2 variables y quiero saber las diferentes soluciones, yo lo intento haciendo esto:

tengo para la variable z1 estos valores 13,14,15,16,17,18,19,20
y para la m 1,1.25,1.5,2,2.5,3,4,5

pues bien lo que quiero saber son las correspondientes soluciones para esta ecuacion

Dr=m*z1, para ello hago lo siguiente:

for m=[1,1.25,1.5,2,2.5,3,4,5]
for z1=[13 14 15 16 17 18 19 20]
Dr1=m+1*z1+1;

end
end



con lo que obtengo un unico resultado, supongo que es porque va sumando uno encima del otro, yo lo que quiero es para el valor m=1 y z1=13, cual es el valor de Dr1? lo mismo con m=1.25 y z1=14 otra vez el valor de Dr1, y asi sucesivamente.

Muchas gracias por vuestra atencion
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

iteraciones en matlab

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3440 intervenciones) el 27/04/2011 04:36:41
HOLA JUAN.

Arregle tu programa a lo que quieres
%==============================
clear
m=[1,1.25,1.5,2,2.5,3,4,5];
z1=[13 14 15 16 17 18 19 20];
n=length(m); % tamaño del vector m
Dr=zeros(1,n);
for i=1:n
Dr(i)=m(i)*z1(i);
end
display(Dr);
%==============================

%EJECUCION EN LA VENTANA DE COMANDOS
>> iteraciones
Dr =
13.0000 17.5000 22.5000 32.0000 42.5000 54.0000 76.0000 100.0000


Saludos.
JOSE JEREMIAS CABALLERO
ASESOR DE PROYECTOS CON MATLAB
PROFESOR DE METODOS NUMERICOS CON MATLAB
PROGRAMADOR 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

iteraciones en matlab

Publicado por Juan (6 intervenciones) el 27/04/2011 16:30:15
Muchas gracias Jose, gracias a tu ayuda pude completar el programa y deducir algunas cositas interesantes que aprendí gracias a lo que me escribiste.
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

iteraciones en matlab

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3440 intervenciones) el 27/04/2011 16:34:20
HOLA JUAN.
Me alegra que completastes tu programa.


Saludos.
JOSE JEREMIAS CABALLERO
ASESOR DE PROYECTOS CON MATLAB
PROFESOR DE METODOS NUMERICOS CON MATLAB
PROGRAMADOR 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

iteraciones en octave

Publicado por irlanda (3 intervenciones) el 13/01/2012 14:37:21
hola necestito ayuda... tengo que entregar un trabajo de Calculo numerico y no se como terminarlo. para esto ocupo Octave y estas don las funciones



function[E]=func(X0,l1,l2,g)
S1= cos(X0)/((sin(X0))^2);
S2=cos(pi-g-X0)/((sin(pi()-g-X0))^2);
E=l1*S1-l2*S2;
endfunction

esta llama a la anterior para correr el programa

function Tarea2
l1=input('ingrese el valor de l1');
l2=input('ingrese el valor de l2');
g=input('ingrese el valor de gama');
h=input('ingrese el h');
format long
a=pi/4;
do
f=a+h;
l=a-h;
s=a;
x=func(f,l1,l2,g);
y=func(l,l1,l2,g);
derivada=(x-y)/(2*h);
alf=a-func(a,l1,l2,g)/derivada;
erro=abs(alf-s)
a=alf
until (abs(alf-s)<10^-15)
L=l1/sin(alf)+l2/sin(pi-g-alf)

endfunction


el problema es que quiero almacenar los tatos de a en un vector y contarlos para que me entregue el numero de iteraciones.. no se si se podra ..pero he tratado y no me resulta... ademas quiero que me entregue una grafica... y si no tengo lo anterior creo yo que no lo puedo hacer... necesito su ayuda... :(.
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

iteraciones en octave

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3440 intervenciones) el 13/01/2012 15:38:55
hola Irlanda.

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
function tarea2caballero
l1=input('ingrese el valor de l1:');
l2=input('ingrese el valor de l2:');
g=input('ingrese el valor de gama:');
h=input('ingrese el h:');
format long
a(1)=pi/4;
k=1;
%do
while 1
f=a(k)+h;
l=a(k)-h;
s=a(k);
x=func(f,l1,l2,g);
y=func(l,l1,l2,g);
derivada=(x-y)/(2*h);
alf=a(k)-func(a(k),l1,l2,g)/derivada;
erro=abs(alf-s);
k=k+1;
a(k)=alf;
if abs(alf-s)<10^-15
    iteraciones=k;
    display(iteraciones)
    break;
end
end
L=l1/sin(alf)+l2/sin(pi-g-alf)
 
 
function E=func(X0,l1,l2,g)
S1= cos(X0)/((sin(X0))^2);
S2=cos(pi-g-X0)/((sin(pi()-g-X0))^2);
E=l1*S1-l2*S2;
 
EJECUCION
>> tarea2caballero
ingrese el valor de l1:2
ingrese el valor de l2:3
ingrese el valor de gama:4
ingrese el h:2
iteraciones =
      109621
 
L =
   1.099752309764761



Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Profesor de Metodos Numericos con Matlab
Programador en Matlab
jjcc94@hotmail.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

iteraciones en octave

Publicado por irlanda (3 intervenciones) el 13/01/2012 16:31:34
Hola: Gracias jejej te pasaste, mientras te esperaba habia puesto un contador antes del do until para que me contara las iteraciones... jeje igual lo tuyo me sirve mas... pero hay algo que no puedo compreder aun jeje... me siento tan extra pidiendo y ocupando tu tiempo... pasa que debo entregar un grafico mostrando como se comporta el error con respecto a las iteraciones y nose como llamar al plot??? saluds
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

iteraciones en octave

Publicado por irlanda (3 intervenciones) el 13/01/2012 16:47:05
function MORA_2
l1=input('ingresar l1');
l2=input('ingresar l2');
g=input('ingresar gama');
h=input('ingresar h');
format long
a=pi/4;
disp("iteracion")

cont=0
do
f=a+h;
l=a-h;
s=a;
x=func_mora(f,l1,l2,g);
y=func_mora(l,l1,l2,g);
derivada=(x-y)/(2*h);
alf=a-func_mora(a,l1,l2,g)/derivada;
erro=abs(alf-s)
a=alf
cont=cont+1

until (abs(alf-s)<10^-15)
disp("longitud de la barra")
L=l1/sin(alf)+l2/sin(pi-g-alf)

!!!!! r=linspace(cont,a,s)
plot(erro,a)!!!!! esto es lo que no entiendo!!!!!

title('Derivacion Numérica')
xlabel('a')
ylabel('erro')
grid on
endfunction


function[E]=func_mora(X0,l1,l2,g)
S1= cos(X0)/((sin(X0))^2);
S2=cos(pi-g-X0)/((sin(pi()-g-X0))^2);
E=l1*S1-l2*S2;
endfunction
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 ANTONIO

iteraciones en octave

Publicado por JOSE ANTONIO jolarara@hotmail.com (1 intervención) el 02/03/2013 06:58:55
Hola...Necesito ayuda con un programa que tengo que entregar en la universidad sobre un separador trifasico-flash multicomponentes tengo tres programas que he desarrollado para tal fin pero tengo un problema y es que el programa debe tener 3 ciclos internos es decir que tiene que variar 3 variables:

clc;
clear all;
format long
%tic
T=346.78;
F = 100; %input( 'flujo de alimentacion en moles: ');
V = 30; % input('cantidad de moles en el flujo de vapor: ');
L = 30; % input('cantidad de moles en el flujo de liquido: ');
S=(F-(V+L));
a=[0.2 0.3 0.5];
%k=unifac(T);
KV=[1.2 1 1];
KS=[1 1.1 1];
xo=[V;L]/F;
XR=[0.2;0.4;0.4];
xo1=[V;L]*(1/(7*F));
x1=[V;L]/(F);


syms x y
n=length(a);
fun1=0;fun2=0; % funcion de rachford rice para tres fases
for i=1:1:n
fun1=fun1+(a(i)*(KV(i)-1))/(1+(KV(i)-1)*x+(KS(i)-1)*y);
fun2=fun2+(a(i)*(KS(i)-1))/(1+(KV(i)-1)*x+(KS(i)-1)*y);
end
f=[fun1;fun2];

suma1=0;suma2=0;suma3=0;suma4=0; % sistema no lineals o jacobiano especial para la %solucion de programa
for i=1:1:n
suma1=suma1+(a(i)/(1+(KS(i)-1)*x+(KV(i)-1)*x))*(diff(((a(i)*KV(i))/(XR(i)*(1+(KS(i)-1)*y+(KV(i)-1)*x))),x)-((KV(i)-1)/(1+(KS(i)-1)*x+(KV(i)-1)*x))*((KV(i)-1)+x*(diff(((a(i)*KV(i))/(XR(i)*(1+(KS(i)-1)*y+(KV(i)-1)*x))),x))+y*(diff(((a(i)*KV(i))/(XR(i)*(1+(KS(i)-1)*y+(KV(i)-1)*x))),x))));
suma2=suma2+(a(i)/(1+(KS(i)-1)*y+(KV(i)-1)*y))*(diff(((a(i)*KS(i))/(XR(i)*(1+(KS(i)-1)*y+(KV(i)-1)*x))),x)-((KS(i)-1)/(1+(KS(i)-1)*y+(KV(i)-1)*y))*((KS(i)-1)+x*(diff(((a(i)*KS(i))/(XR(i)*(1+(KS(i)-1)*y+(KV(i)-1)*x))),x))+y*(diff(((a(i)*KS(i))/(XR(i)*(1+(KS(i)-1)*y+(KV(i)-1)*x))),x))));
suma3=suma3+(a(i)/(1+(KS(i)-1)*x+(KV(i)-1)*x))*(diff(((a(i)*KV(i))/(XR(i)*(1+(KS(i)-1)*y+(KV(i)-1)*x))),y)-((KV(i)-1)/(1+(KS(i)-1)*x+(KV(i)-1)*x))*((KV(i)-1)+x*(diff(((a(i)*KV(i))/(XR(i)*(1+(KS(i)-1)*y+(KV(i)-1)*x))),y))+y*(diff(((a(i)*KV(i))/(XR(i)*(1+(KS(i)-1)*y+(KV(i)-1)*x))),y))));
suma4=suma4+(a(i)/(1+(KS(i)-1)*y+(KV(i)-1)*y))*(diff(((a(i)*KS(i))/(XR(i)*(1+(KS(i)-1)*y+(KV(i)-1)*x))),y)-((KS(i)-1)/(1+(KS(i)-1)*y+(KV(i)-1)*y))*((KS(i)-1)+x*(diff(((a(i)*KS(i))/(XR(i)*(1+(KS(i)-1)*y+(KV(i)-1)*x))),y))+y*(diff(((a(i)*KS(i))/(XR(i)*(1+(KS(i)-1)*y+(KV(i)-1)*x))),y))));
end
J=[suma1,suma2;suma3,suma4];

fpri=J;
epsilon=(1.e-12)*ones(2,1);
maxi=5000;
iter = 1;
f=inline(f);
jf=inline(fpri);
E1=norm(f(xo1(1),xo1(2)),2);
E2=norm(f(xo(1),xo(2)),2);
error=E1/E2;
EROR=abs((xo-x1)./x1);


while EROR>=epsilon
if error>=1;
lamb=1;
else
lamb=((((1+6*error)^(0.5))-1)/3*error);
end
B=f(xo(1),xo(2));
A=jf(xo(1),xo(2));
X=GJPivParEsc(A,B); % Gaus Jordan con pivoteo parcial y rescalado de columna
x1=xo-lamb.*X;
fx1=f(x1(1),x1(2));
E2=norm((fx1),2);
error=E2/E1;
EROR=abs((xo-x1)./xo);


fprintf(' Iter %2d raiz x1=(%14.9f, %14.9f) xo=(%14.9f, %14.9f) f(x)=(%14.9f, %14.9f)\n',....
iter,x1(1),x1(2),xo(1),xo(2),fx1(1),fx1(2));
if iter > maxi
fprintf(' Nº max de iter se excedido \n');
return;
end

xo=x1;
E2=E1;
iter=iter+1;
end
%toc

El programa corre pero lo que yo necesito es que tomo unas KV Y KS (que vienen de otras funciones que ya programe) iniciales luego que entre al while las recalcule y las multiplique con otros valores que calcula otro programa...
He leído muchos sus foros y me han servido de mucho gracias a ustedes y a mathworks tengo lo que tengo hasta ahora pero necesito ayuda para poder continuar con mi trabajo....
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

iteraciones en octave

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3440 intervenciones) el 02/03/2013 13:48:35
Cual es tu primer programa, cual es tu segundo programa y cual es tu tercer programa?.
Si esos programas estan arriba, entonces especificade de que linea hasa que linea son cada uno de los programas que mencionas.


Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com

http://matlabcaballero.blogspot.com


http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
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

iteraciones en matlab

Publicado por iiteraciones matlab (1 intervención) el 11/03/2013 23:37:03
necesito programa para iterar
P=1;
F=2*P; A=.003; E=210e9;
L1=1.5;
L2=1; L3=L1;
K1 = QuadraticBarElementStiffness(E,A,L1)
K2 = QuadraticBarElementStiffness(E,A,L2)
K3 = QuadraticBarElementStiffness(E,A,L3)
KG=zeros(7,7)
KG=QuadraticBarAssemble(KG,K1,1,3,4)
KG=QuadraticBarAssemble(KG,K2,3,5,6)
KG=QuadraticBarAssemble(KG,K3,5,2,7)
KG4=KG(3:7,3:7)
f=[F;0;P;0;0]
DES=inv(KG4)*f
DT=[0;0;DES]
R=KG*DT
U134=[0;DES(1:2)];
S1= QuadraticBarElementStresses(K1, U134, A)
U356=[DES(1:1);DES(3:4)];
S2= QuadraticBarElementStresses(K2, U356, A)
U527=[DES(3:3);0;DES(5:5)];
S3= QuadraticBarElementStresses(K3, U527, A)

se requiere calcular el valor de P, tal que S1,S2,S3 alguna sea menor o igual que 250e6
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

iteraciones en octave

Publicado por Andrea (1 intervención) el 11/06/2013 08:03:46
como puedo hacer un algoritmo iterativo en matlab y en c++ , es para aplicarlo a un circuito thevenin con diodo, el metodo de newton raphson!
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