Matlab - Problema para derivar función handle

 
Vista:

Problema para derivar función handle

Publicado por Ester de la Torre (6 intervenciones) el 27/10/2019 15:29:30
Estimados hace tiempo recibí del foro ayuda a la fora de ingresar una función mediante input y luego convertirla en handle.
Ahora mi problema surge cuando quiero generar un programa para aplicar el método de newton raphson y necesito calcular la derivada para ir aplicandola en la iteración

Ejemplo 1

1
2
3
4
5
6
7
8
9
function prueba
fprintf('Método de Newton Raphson 1 variable \n')
f=input('Ingrese la expresión de la función f entre apóstrofes, \n f=');
f=str2func(strcat('@(x) ',f));%conviertre el string en función handle
a=f(2)
der=diff(f)
der(2)
 
end

Mensaje de Matlab:

Error using diff
Function 'diff' is not supported for class 'function_handle'.

Error in prueba (line 6)
der=diff(f)


Ejemplo 2

1
2
3
4
5
6
7
8
9
10
function prueba
fprintf('Método de Newton Raphson 1 variable \n')
syms x
f=input('Ingrese la expresión de la función f entre apóstrofes, \n f=');
f=str2func(strcat('@(x) ',f));%conviertre el string en función handle
a=f(2)
der=diff(f,x)
der(2)
 
end

Método de Newton Raphson 1 variable
Ingrese la expresión de la función f entre apóstrofes,
f='x.^2-3'

a =

1


der =

2*x

Error using mupadmex
Error in MuPAD command: Index exceeds matrix dimensions.

Error in sym/subsref (line 687)
B = mupadmex('symobj::subsref',A.s,inds{:});

Error in prueba (line 12)
der(2)

>>

Gracias

Saludos Cordiales
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: 8.149
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Problema para derivar función handle

Publicado por JOSE JEREMIAS CABALLERO (5624 intervenciones) el 27/10/2019 17:15:03
1
2
3
4
5
6
7
8
9
10
function leer_funcion
fprintf('Método de Newton Raphson 1 variable \n')
fun=input('Ingrese la expresión de la función f entre apóstrofes, \n f=');
f=str2func(strcat('@(x) ',fun));%conviertre el string en función handle
a=f(2)
u=str2sym(fun)
der=diff(u)
Der=str2func(strcat('@(x) ',char(der)));%conviertre el string en función handle
Der(2)
end


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
>> leer_funcion
Método de Newton Raphson 1 variable
Ingrese la expresión de la función f entre apóstrofes,
 f='x^2+5*x'
a =
    14
 
 
u =
x^2 + 5*x
 
 
der =
2*x + 5
 
 
ans =
     9


Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab
Servicio de Asesoría Online en 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: 8.149
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Problema para derivar función handle

Publicado por JOSE JEREMIAS CABALLERO (5624 intervenciones) el 27/10/2019 17:27:13
1
2
3
4
5
6
7
8
9
function leer_funcion1
fprintf('Método de Newton Raphson 1 variable \n')
syms x
f=input('Ingrese la expresión de la función f entre apóstrofes, \n f=');
f=str2func(strcat('@(x) ',f));%convierte el string en función handle
a=f(2)
der(x)=diff(f,x)
der(10)
end


1
2
3
4
5
6
7
8
9
10
11
12
>> leer_funcion1
Método de Newton Raphson 1 variable
Ingrese la expresión de la función f entre apóstrofes,
 f='x^2+4*x'
a =
    12
 
der(x) =
 2*x + 4
 
ans =
 24


Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab
Servicio de Asesoría Online en 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: 8.149
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Problema para derivar función handle

Publicado por JOSE JEREMIAS CABALLERO (5624 intervenciones) el 27/10/2019 17:35:12
1
2
3
4
5
6
7
8
function leer_funcion2
fprintf('Método de Newton Raphson 1 variable \n')
syms x
f(x)=input('Ingrese la expresión de la función f(x)=');
a=f(2)
der(x)=diff(f)
b=der(10)
end


1
2
3
4
5
6
7
8
9
10
11
>> leer_funcion2
Método de Newton Raphson 1 variable
Ingrese la expresión de la función f(x)=x^2+4*x
a =
12
 
der(x) =
2*x + 4
 
b =
24

Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab
Servicio de Asesoría Online en 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