Matlab - Resolver ecuacion tipo A=x*(ln(a/x))^b usando "vpasolve"

 
Vista:
sin imagen de perfil
Val: 45
Ha aumentado su posición en 2 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Resolver ecuacion tipo A=x*(ln(a/x))^b usando "vpasolve"

Publicado por André (23 intervenciones) el 05/07/2020 10:07:12
Hola, quiero resolver la siguiente ecuación:


ej_iteracion


Como pueden observar, es un poco compleja su resolución, pero casi tengo las solución, el problema que tengo es con la iteración.

El script se debe detener cuando X=4, es decir debe existir un descenso desde 10 a 4, para efectos practicos, quiero que se detenga a los 9,95 (para resolver el problema netamente de programación)

MI objetivo es averiguar cuantos pasos (Valor de N) debo realizar para llegar a 9,95 (para efectos practicos)

Esto tengo en mi script:

clc
clear all

F=500;
A=7.98e5;
b=1.25;
a=2/sqrt(3);
% Paso 1
x0=10;
syms x1
x_1= vpasolve(F == A*x0*(a*log(x0/x1))^b, x1)
% Paso 2
syms x2
x_2= vpasolve(F == A*x0*(a*log(x_1/x2))^b, x2)

Como pueden ver, se puede resolver, pero cuando intento realizar los loop con "for" y "while" todo se me va pique.

Tambien me di cuenta que solo para resolver esas dos ecuaciones que pueden ver en mi script (x_1 y x_2), el PC se toma un tiempo prudente, me imagino lo que pasará cuando tenga que descender de 10 a 4.

Como dato, este es un problema mas grande que encontró como obstaculo este problema matematico


Gracias de antemano por su respuesta
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

Resolver ecuacion tipo A=x*(ln(a/x))^b usando "vpasolve"

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 05/07/2020 19:19:37
¿Cual es la ecuación matemática que desea resolver?. Ese punto no es claro.

1
Resolver la ecuación A=x*(ln(a/x))^b
[

1
Resolver la ecuación F =A*x0*(a*log(x0/x1))^b)


¿Podría poner la ecuación que desea resolver en notación matemática, sin usar 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
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

Resolver ecuacion tipo A=x*(ln(a/x))^b usando "vpasolve"

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 05/07/2020 19:44:09
No se puede asegurar que el X llegue a tomar el valor exacto de 4, porque es una iteración de valores que son reales; lo que si se puede hacer es que el valor de X sea el valor más próximo a X pero que sea menor a 4, es decir Xn<=4. Como por ejemplo: X=3.9991.
O desea un valor Xn>=4, pero el más próximo a 4 como por ejemplo: Xn=4.0006
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
Val: 45
Ha aumentado su posición en 2 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Resolver ecuacion tipo A=x*(ln(a/x))^b usando "vpasolve"

Publicado por André (23 intervenciones) el 05/07/2020 19:59:38
Si, eso es cierto, en estricto rigor se debe detener para Xn<=4.


Por ejemplo, el algoritmo se debe detener para Xn=9,981


Si resuelvo esto a "mano" (entiendase de forma no automatica), es script seria esto:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
clc
clear all
 
F=500;
A=7.98e5;
b=1.25;
a=2/sqrt(3);
% Paso 1
x0=10;
syms x1
x_1= vpasolve(F == A*x0*(a*log(x0/x1))^b, x1)
% Paso 2
syms x2
x_2= vpasolve(F == A*x_1*(a*log(x_1/x2))^b, x2)
% Paso 3
syms x3
x_3= vpasolve(F == A*x_2*(a*log(x_2/x3))^b, x3)
% Paso 4
syms x4
x_4= vpasolve(F == A*x_3*(a*log(x_3/x4))^b, x4)
% Paso 5
syms x5
x_5= vpasolve(F == A*x_4*(a*log(x_4/x5))^b, x5)


Quiero hacer eso mismo, pero que se detenga para el numero Xn que yo desee, pero con ciclos for y while, pero no se me ocurre y lo que avance me arrojaba error Matlab


*La primera imagen es la explicación mas general del problema, pero este mensaje resume de forma practica lo que quiero lograr
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

Resolver ecuacion tipo A=x*(ln(a/x))^b usando "vpasolve"

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 05/07/2020 20:02:43
Necesita iterar 2438 veces, en un tiempo de Elapsed time is 328.237619 seconds. Estoy buscando la forma bajar el tiempo de ejecución.
Tus variables simbólicas tiene que definir de esta forma
1
x=sym('x_%d',[1,5000]);
para que puedar usar un ciclo iterativo.
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
Val: 45
Ha aumentado su posición en 2 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Resolver ecuacion tipo A=x*(ln(a/x))^b usando "vpasolve"

Publicado por André (23 intervenciones) el 05/07/2020 21:55:20
Gracias, me ayudo su respuesta, tengo un error que desconzco cual es, no soy muy habil con los ciclos iterativos.

Primero, si no tomamos en cuenta que se debe detener, para 5 pasos la solución deberia ser:

1
x_n=[9.9962 9.9924 9.9887 9.9849 9.9812] %numeros truncados

Pero cuando implemento mi codigo no obtengo esa respuesta, mire:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
clc
clear all
 
F=500;
A=7.98e5;
b=1.25;
a=2/sqrt(3);
x0=10;
N=5; %paso N
x_n=sym('x_%d',[1,N]);
xn=sym('x%d',[1,N]);
 
for i=1:N
    x_n(i)= vpasolve(F == A*x0*(a*log(x0/xn(i)))^b, xn(i));
    x_n(i+1)= vpasolve(F == A*x_n(i)*(a*log(x_n(i)/xn(i+1)))^b, xn(i+1))
end
 
x_n=
[ 9.9962414295674830987061900883257, 9.9962414295674830987061900883257, 9.9962414295674830987061900883257, 9.9962414295674830987061900883257, 9.9962414295674830987061900883257]

que estoy haciendo mal?
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

Resolver ecuacion tipo A=x*(ln(a/x))^b usando "vpasolve"

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 05/07/2020 22:06:50
x_5 son respuestas de la ecuación y por ende no debe declarar simbólica al inicio.
1
2
3
syms x1
x_1= vpasolve(F == A*x0*(a*log(x0/x1))^b, x1)
% Paso 2
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

Resolver ecuacion tipo A=x*(ln(a/x))^b usando "vpasolve"

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 06/07/2020 02:03:57
1
2
3
4
5
6
7
8
9
10
11
12
clear all
F=500;
A=7.98e5;
b=1.25;
a=2/sqrt(3);
x0=10;
N=5; %paso N
xn=sym('x%d',[1,N]);
x_n(1)= vpasolve(F == A*x0*(a*log(x0/xn(1)))^b, xn(1));
for i=1:N-1
x_n(i+1)= vpasolve(F == A*x_n(i)*(a*log(x_n(i)/xn(i+1)))^b, xn(i+1))
end

Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab
Servicio de Asesoría Online en Matlab
[email protected]


http://matlabcaballero.blogspot.com
https://codigoscaballero.blogspot.com/
https://algoritmoscaballero.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
1
Comentar
sin imagen de perfil
Val: 45
Ha aumentado su posición en 2 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Resolver ecuacion tipo A=x*(ln(a/x))^b usando "vpasolve"

Publicado por André (23 intervenciones) el 06/07/2020 06:34:06
Quedó perfecto mi código!....Don JOSE JEREMIAS, muchas gracias, usted como siempre tan atento ayudando con nuestros problemas. Quizá ya lo sabe, pero igual se lo hago saber, el conocimiento que usted entrega se ramifica a través de los que ayuda, y estos a su vez luego de un tiempo se convertirán en profesionales y serán un aporte a su sociedad, recuerde: en ese aporte que yo haré, también estará presente el suyo.


Buenas noches.
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