
iteraciones en matlab
Publicado por Fernando (15 intervenciones) el 31/01/2015 01:51:13
Buenas noches;
Tengo un problemilla, espero que alguien pueda ayudarme. La cuestion es la siguiente tengo que calcular dos valores, s y Zt mediante iteraciones hasta que la diferencia entre dos valores consecutivos de s sea menor que el error que estime o se realicen 40 iteraciones como maximo. Solo puedo tomar como solucion los numeros reales positivos.
Zt = sqrt (A/B) y s = ( R2/ (sqrt (C)-R1)) para n>=3000
Zt = sqrt (D/E) y s = ( R2/ (sqrt (F)-R1)) para n<3000
He hecho esta función pero no me salen las soluciones correctas.
Muchas gracias
Tengo un problemilla, espero que alguien pueda ayudarme. La cuestion es la siguiente tengo que calcular dos valores, s y Zt mediante iteraciones hasta que la diferencia entre dos valores consecutivos de s sea menor que el error que estime o se realicen 40 iteraciones como maximo. Solo puedo tomar como solucion los numeros reales positivos.
Zt = sqrt (A/B) y s = ( R2/ (sqrt (C)-R1)) para n>=3000
Zt = sqrt (D/E) y s = ( R2/ (sqrt (F)-R1)) para n<3000
He hecho esta función pero no me salen las soluciones correctas.
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
46
47
48
49
50
51
52
53
54
function [s, Zt] = FERNANDO (error, n, nsinc, T, s_aprox, Zt_aprox)
p = 1;
Vf = 219.4;
R2 = 0.1598;
R1 = 0.09773;
l = 0.00022959;
r = 0.22789;
pi = 3.1416;
s_anterior = 10;
s_rec = s_aprox;
Zt_rec = Zt_aprox;
cont = 1;
A = 3*60*R2*((Vf)^2);
while ((abs(s_anterior - s_rec)>error) && (cont<40))
s_anterior = s_rec;
Zt_anterior = Zt_rec;
if n >= 3000
B = 2*pi*s_anterior*T*(n/(1-s_anterior));
if B>0
C = ((Zt_anterior)^2) - ((2 * pi * l * nsinc * p /60)^2);
if ((C>0) && ((sqrt(C) - R1)>0))
Zt_rec = sqrt (A/B);
s_rec = R2 / (sqrt(C) - R1);
else
s_rec = s_anterior;
Zt_rec = Zt_anterior;
end
else
s_rec = s_anterior;
Zt_rec = Zt_anterior;
end
else
D = (3 * R2 * 60 * (((n * p)/(1-s_anterior))/(60 * r ))^2);
E = 2*pi*s_anterior*T*(n/(1-s_anterior));
if(D/E)>0
F = ((Zt_anterior)^2) - ((2 * pi * l * nsinc * p /60)^2);
if ((F>0) && ((sqrt(F) - R1)>0))
Zt_rec = sqrt (D/E);
s_rec = R2 / (sqrt(F) - R1);
else
s_rec = s_anterior;
Zt_rec = Zt_anterior;
end
else
s_rec = s_anterior;
Zt_rec = Zt_anterior;
end
end
cont = cont+1;
end
Zt = Zt_rec;
s = s_rec;
Muchas gracias
Valora esta pregunta


0