Matlab - AYUDA URGENTE

 
Vista:

AYUDA URGENTE

Publicado por María (5 intervenciones) el 19/02/2017 20:51:54
Hola que tal, tengo el siguiente programa en matlab que me calcula cuatro funciones a partir de definir cada una función independiente que corresponde a su serie de Taylor, el caso es que en este programa que adjunto me calcula el error y me pide tanto el orden n como el valor de x y ahi todo bien.

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
disp('Según la función ingrese:');
disp('sen para sen(x)');
disp('cos para cos(x)');
disp('tan para tan(x)');
disp('log para logaritmo(x)');
p= input('ingrese la función: ');
switch p
    case 'sen'
        n=input('ingrese el orden n: ');
        x=input('ingrese valor x: ');
        [y] =sen_taylor(n,x)
        error=sin(x)-y
 
      case 'cos'
        n=input('ingrese el orden n: ');
        x=input('ingrese valor x: ');
        [y] =cos_taylor(n,x)
        error=cos(x)-y
 
    case 'tan'
        n=input('ingrese el orden n: ');
        x=input('ingrese valor x: ');
        [y] =tan_taylor(n,x)
        error=tan(x)-y
 
    case 'log'
        n=input('ingrese el orden n: ');
        x=input('ingrese valor x: ');
        [y] =log_taylor(n,x)
        error=log(x)-y
end

Después considere utilizar el while para que me repitiera el ciclo pero con una función diferente solo que ahora este solo me pregunta el orden y el valor de x más no con cual función lo quiero realizar y se repite indefinidamente la misma pregunta del orden y valor de x, ¿Qué me recomendarían hacer? es que no entiendo muy bien que condicional usar para que me deje continuar sin que me pida lo que me esta pidiendo y según me recomendó alguien me dice que sale mejor usar el for, solo no se como

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
disp('Según la función ingrese:');
disp('sen para seno(x)');
disp('cos para coseno(x)');
disp('tan para tangente(x)');
disp('log para logaritmo(x)');
p= input('ingrese nombre de la función: ');
while p=='sen'|p=='cos'|p=='tan'|p=='log'
 
switch p
    case 'sen'
        n=input('ingrese el orden n: ');
        x=input('ingrese valor x: ');
        [y] =sen_taylor(n,x)
        error=sin(x)-y
 
    case 'cos'
        n=input('ingrese el orden n: ');
        x=input('ingrese valor x: ');
        [y] =cos_taylor(n,x)
        error=cos(x)-y
 
    case 'tan'
        n=input('ingrese el orden n: ');
        x=input('ingrese valor x: ');
        [y] =tan_taylor(n,x)
        error=tan(x)-y
 
    case 'log'
        n=input('ingrese el orden n: ');
        x=input('ingrese valor x: ');
        [y] =log_taylor(n,x)
        error=log(x)-y
end
end
---
Estos son los programas para cada función:

Seno:
1
2
3
4
5
6
7
8
function  [y] =sen_taylor(n,x)
s=zeros(size(x));
for i=0:n-1
    f=(-1).^i*x.^(2*i+1)/factorial(2*i+1);
   s=f+s;
end
 y=s;
end

Coseno:

1
2
3
4
5
6
7
8
function  [y] =cos_taylor(n,x)
s=zeros(size(x));
for i=0:n
    f=(-1)^i *(x.^(2*i)/factorial (2*i));
    s=f+s;
end
y=s;
end

Tangente:

1
2
3
4
5
function  [y] =tan_taylor(n,x)
m=sen_taylor(n,x);
k=cos_taylor(n,x);
y=m/k;
end

Logaritmo:

1
2
3
4
5
6
7
8
function  [y] =log_taylor(n,x)
s=zeros(size(x));
for i=1:n-1
     f=((-1)^(i+1) *(x-1).^(i))/i;
     s=f+s;
end
y=s;
end
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

AYUDA URGENTE

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 19/02/2017 21:38:50
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
function orden_error_taylor
while 1
fprintf('\n\n' )
disp('Según la función ingrese:');
disp('sin para sen(x)');
disp('cos para cos(x)');
disp('tan para tan(x)');
disp('log para logaritmo(x)');
disp('salir  SALIR')
p= input('ingrese la función: ','s');
switch p
case 'sin'
n=input('ingrese el orden n: ');
x=input('ingrese valor x: ');
y =sen_taylor(n,x)
error=sin(x)-y
 
case 'cos'
n=input('ingrese el orden n: ');
x=input('ingrese valor x: ');
y =cos_taylor(n,x)
error=cos(x)-y
 
case 'tan'
n=input('ingrese el orden n: ');
x=input('ingrese valor x: ');
y =tan_taylor(n,x)
error=tan(x)-y
 
case 'log'
n=input('ingrese el orden n: ');
x=input('ingrese valor x: ');
y=log_taylor(n,x)
error=log(x)-y
 
 case 'SALIR'
        break;
end
 
end
 
end
 
function y=sen_taylor(n,x)
s=zeros(size(x));
for i=0:n-1
f=(-1).^i*x.^(2*i+1)/factorial(2*i+1);
s=f+s;
end
y=s;
end
 
function y=cos_taylor(n,x)
s=zeros(size(x));
for i=0:n
f=(-1)^i *(x.^(2*i)/factorial (2*i));
s=f+s;
end
y=s;
end
 
function y =tan_taylor(n,x)
m=sen_taylor(n,x);
k=cos_taylor(n,x);
y=m/k;
end
 
function y =log_taylor(n,x)
s=zeros(size(x));
for i=1:n-1
f=((-1)^(i+1) *(x-1).^(i))/i;
s=f+s;
end
y=s;
end

guardar con nombre de archivo orden_error_taylor.m


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
>> orden_error_taylor
 
Según la función ingrese:
sin para sen(x)
cos para cos(x)
tan para tan(x)
log para logaritmo(x)
salir  SALIR
ingrese la función: sin
ingrese el orden n: 5
ingrese valor x: 7
y =
    6898/183
error =
   -1000/27
 
 
Según la función ingrese:
sin para sen(x)
cos para cos(x)
tan para tan(x)
log para logaritmo(x)
salir  SALIR
ingrese la función: cos
ingrese el orden n: 6
ingrese valor x: 8
y =
    8831/225
error =
   -2797/71
 
 
Según la función ingrese:
sin para sen(x)
cos para cos(x)
tan para tan(x)
log para logaritmo(x)
salir  SALIR
ingrese la función: SALIR
>>


Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab


http://matlabcaballero.blogspot.com
https://www.facebook.com/matlabcaballero/
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
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

AYUDA URGENTE

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 19/02/2017 22:01:44
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
55
56
57
58
59
60
61
62
63
64
65
function orden_error_taylor
    while 1
        fprintf('\n\n' )
        disp('Según la función ingrese:');
        disp('sin para sen(x)');
        disp('cos para cos(x)');
        disp('tan para tan(x)');
        disp('log para logaritmo(x)');
        disp('salir  SALIR')
        p= input('ingrese la función: ','s');
        switch p
            case 'sin'
                n=input('ingrese el orden n: ');
                x=input('ingrese valor x: ');
                y =sen_taylor(n,x)
                error=sin(x)-y
 
            case 'cos'
                n=input('ingrese el orden n: ');
                x=input('ingrese valor x: ');
                y =cos_taylor(n,x)
                error=cos(x)-y
 
            case 'tan'
                n=input('ingrese el orden n: ');
                x=input('ingrese valor x: ');
                y =tan_taylor(n,x)
                error=tan(x)-y
 
            case 'log'
                n=input('ingrese el orden n: ');
                x=input('ingrese valor x: ');
                y=log_taylor(n,x)
                error=log(x)-y
 
             case 'SALIR'
                    break;
            end
        end
end
 
function y=sen_taylor(n,x)
y=0;
for i=0:n-1
    y=y+(-1)^i*x^(2*i+1)/factorial(2*i+1);
end
end
 
function y=cos_taylor(n,x)
y=0;
for i=0:n
    y=y+(-1)^i *x^(2*i)/factorial (2*i);
end
end
 
function y =tan_taylor(n,x)
y=sen_taylor(n,x)/cos_taylor(n,x);
end
 
function y =log_taylor(n,x)
y=0;
for i=1:n-1
    y=y+((-1)^(i+1) *(x-1)^i)/i;
end
end

Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab


http://matlabcaballero.blogspot.com
https://www.facebook.com/matlabcaballero/
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

AYUDA URGENTE

Publicado por María (5 intervenciones) el 19/02/2017 22:03:32
No comprendo muy bien tú código me podrías explicar que hiciste o que le cambiaste al mío, gracias!
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
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

AYUDA URGENTE

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 19/02/2017 22:08:40
El código es de ud. solo agregué segun tu pregunta e hice algunos filtros para optimizar el código.
copia todo el código anterior en un solo archivo en matlab y guárdelo con el nombre de orden_error_taylor y ejecutelo y hace lo que ud. preguntó.

Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab


http://matlabcaballero.blogspot.com
https://www.facebook.com/matlabcaballero/
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

AYUDA URGENTE

Publicado por María (5 intervenciones) el 19/02/2017 22:19:11
La cosa es que noto que usted junto en un solo código todo en lo que yo tengo divido como en 5 programas, cuando las funciones que puse al final de seno, coseno, y así, van en archivos .m aparte cada uno
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar

AYUDA URGENTE

Publicado por María (5 intervenciones) el 19/02/2017 22:30:57
Omite mi respuesta anterior error mío por no ponerme a detallar lo que hiciste, mi cuestión nueva es que en lo que tengo que hacer me piden que el usuario podrá especificar la el grado de la aproximación del polinomio usado para su cálculo (mostrando en este caso el error de cálculo final) (el cual ya esta en mi codigo), la otra cosa que me piden es que pueda el usuario dar el error admisible para su cálculo (visualizando el grado del polinomio que optimiza este cálculo con el error especificado). ( Y eso si no se como hallarlo, me ayudarias?)
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