Matlab - consulta con ecuaciones y variables dependientes de otra funcion

   
Vista:

consulta con ecuaciones y variables dependientes de otra funcion

Publicado por Camilo García camilo.garcia.g@gmail.com (52 intervenciones) el 26/10/2011 06:20:05
Estimados señores:

Junto con saludarlos, les presento la siguiente duda:

tengo que encontrar la solucion a una ecuacion, pero la variable a encontrar depende de otra funcion.

En primera instancia se me ocurrio trabajar la variable como una syms, pero el programa me deja un error.

les dejo el codigo para ver si pueden ayudarme en mi problema.

Si les sirve de algo tengo la resolución de este problema en mathcadV14. Si les sirve de apoyo dejenme su correo y se los envio.

les dejo el codigo que intente realizar a ver si me pueden apoyar. De antemano muchas gracias, Saludos

programa principal

%% problema con flexión pura.
b=30;
h=30;
fc=300;
fy=4200;
Es=2100000;
r=4;
d=[r
h-r];
as=[2
2];
P1=0;

syms cfp

for i=1:2
es(i,1)=findes(cfp,d(i,1));
fs(i,1)=findfs(findes(cfp,d(1,1),fy,Es);
end

cf=fsolve(0.85*fc*cfp*b+as(1,1)*(h/2-d(1,1))*fs(1,1)+as(2,1)*(h/2-d(2,1))*fs(2,1)-P1,1)

funcion findes


function [es] = findes(cc,dd)
es = 0.003*(cc-dd)/(cc);
end

funcion findfs

function [es] = findfs(ep,fy,Es)

if ep>=fy/Es
es=fy
elseif ep>=-fy/Es && ep<=fy/Es
es=ep*Es
elseif ep<=-fy/Es
es=-fy
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

consulta con ecuaciones y variables dependientes de otra funcion

Publicado por Camilo García camilo.garcia.g@gmail.com (52 intervenciones) el 26/10/2011 06:46:28
la variable que debp encontrar es cfp, creo que en la consulta no habia especificado eso.

saludos
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

consulta con ecuaciones y variables dependientes de otra funcion

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3441 intervenciones) el 26/10/2011 14:16:30
Hola Camilo.
Me gustaria ver el enunciado matematico del problema.
Porque sinceramente no entiendo la logica de tu programa.
Envialo ami correo y ademas del mathcad.

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

consulta con ecuaciones y variables dependientes de otra funcion

Publicado por Camilo García camilo.garcia.g@gmail.com (52 intervenciones) el 26/10/2011 15:39:24
Estimado Jose:

Mira: no me es muy simple de explicar, pero lo voy a intentar:

El problema en cuestion es encontrar el punto la flexión pura de una columna.

Pero el problema depende de otras sub-funciones, las cuales dependen del lugar donde se encuentre la variable.

La forma que puede desarrollarse, pero no se si en matlab se puede hacer eso ( en math-cad si se puede por que lo hice), fue plantear un valor inicial y luego dada la ecuación principal y las subfunciones, que encontrara el valor de esta incognita iterando.

tengo el desarrollo de esto en math-cad, si es que te sirve de guia.


Saludos
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

consulta con ecuaciones y variables dependientes de otra funcion

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3441 intervenciones) el 26/10/2011 15:42:48
Si en otro programa esta hecho.
Entonces se podrá hacer en matlab.
la ideas es saber matlab.

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

consulta con ecuaciones y variables dependientes de otra funcion

Publicado por Camilo García camilo.garcia.g@gmail.com (52 intervenciones) el 26/10/2011 15:57:47
Jose:

esa es la idea.

a ver, puede enviarte el desarrollo de esto a mano via correo ( por que la pagina no se puede subir fotos).

Saludos
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

consulta con ecuaciones y variables dependientes de otra funcion

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3441 intervenciones) el 26/10/2011 16:01:12
ok.
enviame a mi correo.
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

consulta con ecuaciones y variables dependientes de otra funcion

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3441 intervenciones) el 27/10/2011 17:40:04
hola Camilo.
en lo que haz desarrollado manualmente tu problemas tengo dudas, algunas de las partes del desarrollo no estan claros.
Bueno aqui te mando segun yo entiendo el desarrollo de tu problema.

%==========================
function puntodeinflexion
clc
fy=4200;
b1=0.85;
Es=2.1*10^6;
fc=300;
b=20;
d0=6;
d1=34;
d=[d0 d1];
as=[6.03 6.03];
cf=[1 2 3 4 5 6 5.5 5.9 5.94 5.937 ];
for i=1:length(cf)
es1(i) = findes(cf(i),d(1));
es2(i) = findes(cf(i),d(2));
fs1(i) = findfs(es1(i),fy,Es);
fs2(i) = findfs(es2(i),fy,Es);
S(i)=0.85*fc*b1*cf(i)*b+fs1(i)*as(1)+fs2(i)*as(2);
a=solve([num2str(0.85),'*',num2str(fc),'*',num2str(b1),'*','cf','*',num2str(b),'+',num2str(fs1(i)),'*',num2str(as(1)),'+',...
num2str(fs2(i)),'*',num2str(as(2)),'=0'],'cf');
A(i)=double(a);
end

for i=1:length(cf)
fprintf('%6.3f %10.6f %12.6f %12.6f %12.6f %13.6f %13.6f \n',cf(i), es1(i),es2(i),fs1(i),fs2(i),S(i),A(i))
end

function es = findes(cc,dd)
es = 0.003*(cc-dd)/(cc);

function fs=findfs(ep,fy,Es)
if ep>=fy/Es
fs=fy;
elseif ep>=-fy/Es && ep<=fy/Es
fs=ep*Es;
elseif ep<=-fy/Es
fs=-fy;
end

%============================

EJECUCION


>> puntodeinflexion
1.000 -0.015000 -0.099000 -4200.000000 -4200.000000 -46317.000000 11.684429
2.000 -0.006000 -0.048000 -4200.000000 -4200.000000 -41982.000000 11.684429
3.000 -0.003000 -0.031000 -4200.000000 -4200.000000 -37647.000000 11.684429
4.000 -0.001500 -0.022500 -3150.000000 -4200.000000 -26980.500000 10.223875
5.000 -0.000600 -0.017400 -1260.000000 -4200.000000 -11248.800000 7.594879
6.000 0.000000 -0.014000 0.000000 -4200.000000 684.000000 5.842215
5.500 -0.000273 -0.015545 -572.727273 -4200.000000 -4937.045455 6.638880
5.900 -0.000051 -0.014288 -106.779661 -4200.000000 -393.381356 5.990745
5.940 -0.000030 -0.014172 -63.636364 -4200.000000 40.172727 5.930733
5.937 -0.000032 -0.014180 -66.851945 -4200.000000 7.777769 5.935206


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

consulta con ecuaciones y variables dependientes de otra funcion

Publicado por Camilo García camilo.garcia.g@gmail.com (52 intervenciones) el 27/10/2011 17:54:54
Estimado Jose:

Agradezco tu ayuda y disposicion a resolver el problema que te planteo. Si bien comprendo el desarrollo que haces, no es exactamente lo que busco. Deseo que planteando un punto inicial para cfp llegue a la solucion que resuelva el sistema, vale decir que el programa solo plantee soluciones posibles hasta que llegue a una solucion optima, no planear las iteraciones cfp0=1, cfp1=2 ... hasta cfp=5.937.

se me ocurrio plantear un bucle dando una tolerancia especifica para calcular esta ecuacion y cuando llegue a un optimo planteado, que pare el bucle.

te enviare el codigo si es que logro solucionar esto.

saludos y 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

consulta con ecuaciones y variables dependientes de otra funcion

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3441 intervenciones) el 27/10/2011 18:04:04
Yo comprendo eso, de tu solucion que me haz mandado a mi correo.

Por lo tanto el problema esta resuelto. Debistes de haber sido mas preciso en tu desarrolo manual de tu ejercicio.
El problema esta resuelto.
Ahora adaptalo a lo que deseas

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

consulta con ecuaciones y variables dependientes de otra funcion

Publicado por Camilo García camilo.garcia.g@gmail.com (52 intervenciones) el 27/10/2011 19:04:45
Estimado jose:

Adjunto lo que saque al limpio de lo que me enviaste:

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
%% Calculo de ecuacion
 
% propiedades mecanicas
 
fy=4200;
b1=0.85;
Es=2.1*10^6;
fc=300;
 
% propiedades geometricas de seccion
 
h=40;
b=20;
r=6;
d=[r
    h-r];
as=[6.03
    6.03];
maxiter=h*100;
% Problema de flexion pura
 
err=20;
cfp=3;
for n=1:maxiter
es1(n) = findes(cfp,d(1,1));
es2(n) = findes(cfp,d(2,1));
fs1(n) = findfs(es1(n),fy,Es);
fs2(n) = findfs(es2(n),fy,Es);
p(n)=0.85*fc*b1*cfp*b+fs1(n)*as(1,1)+fs2(n)*as(2,1);
if abs(p(n))<=err
    break;
end
cfp=cfp+1/1000;
end
cfp


Jose: a tu opinión: no existe alguna función o alguna forma de hacer este calculo menos extenso?.

si bien el programa lo calcula rapido, me imagino que existe forma de optimizar este algoritmo.

saludos
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

consulta con ecuaciones y variables dependientes de otra funcion

Publicado por Camilo García camilo.garci.g@gmail.com (1 intervención) el 28/10/2011 10:29:05
Estimado jose:

si bien el problema esta resuelto en para esos parametros, si cambio los parametros el problema.

al tener mi incognita dependiendo de otras variables del problema (funcion findes.m, funcion findfs.m)

puedo aplicar la funcion fzero para resolver esto???

si puedo aplicarlo, me puedes explicar como lo realizo?

saludos
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

consulta con ecuaciones y variables dependientes de otra funcion

Publicado por camilo camilo.garcia.g@gmail.com (52 intervenciones) el 28/10/2011 10:30:23
Me falto completar una oración. si cambio los parametros del problema, este me da una solucion errada.
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