Вы находитесь на странице: 1из 22

Departamento de Ingeniera Civil

Programa de Maestra en Ingeniera Ssmica y Estructuras

Aplicaciones Tecnolgicas
MIS 501

Profesor:
Norberto J. Rojas M.

Asignacin No. 2
Introduccin a la programacin en Matlab

Por

Ing. Oliver Mario Agurto Mogolln


Matrcula # 1067376

Fecha de entrega
RESUMEN
En el presente informe se presenta, la solucin a los tres problemas correspondientes a la
asignacin 02. En esta asignacin se muestra el uso de comandos que permiten discriminar un
valor segn un rango preestablecido, esto es si pertenece a un conjunto de datos se proceder de
acuerdo a un conjunto de instrucciones. Asimismo se presentan las salidas consistentes con Matlab
de acuerdo a las instrucciones requeridas. En el problema 01 se realiza un programa que calcula el
valor del factor b1. Se recuerda que este factor se utiliza para calcular la profundidad del bloque
equivalente de esfuerzos del hormign en compresin segn Whitney. Este factor es funcin de la
resistencia en compresin del concreto. En el problema 02 se le realiza un programa en que el usuario
pueda seleccionar un tamao de barra y el programa entrega el dimetro y el rea de la barra. En el
problema 03 se hace un programa que calcule la capacidad nominal en flexin de una viga simplemente
reforzada.

1
TABLA DE CONTENIDO
RESUMEN..................................................................................................................................... 1

1. INTRODUCCION ................................................................................................................. 3

2. OBJETIVO GENERAL ........................................................................................................ 3

3. OBJETIVOS ESPECIFICOS ............................................................................................... 3

4. DESCRIPCION DEL PROBLEMA .................................................................................... 3

5. MARCO TEORICO .............................................................................................................. 5

6. ESTRATEGIAS DE SOLUCION ........................................................................................ 5

1) SEUDOCODIGO ................................................................................................................. 5

2) DIAGRAMA DE FLUJO .................................................................................................... 7

7. PROGRAMA DE MATLAB .............................................................................................. 10

8. VALIDACION DEL PROGRAMA ................................................................................... 10

9. CONCLUSIONES ............................................................................................................... 16

10. REFERENCIAS CITADAS ............................................................................................ 16

ANEXO A: ................................................................................................................................... 16

2
1. INTRODUCCION
En esta asignacin se muestra el uso de comandos que permiten discriminar un valor segn un
rango preestablecido, esto es si pertenece a un conjunto de datos se proceder de acuerdo a un
conjunto de instrucciones. Asimismo se presentan las salidas consistentes con Matlab de acuerdo
a las instrucciones requeridas.

2. OBJETIVO GENERAL
Aplicar los comandos de MATLAB aprendidos durante la clase en la solucin de problemas.

3. OBJETIVOS ESPECIFICOS
Incluir los objetivos especficos de la asignacin:

a. Aplicar los comandos que permiten entrada de datos en Matlab resolviendo los
ejercicios de la asignacin 02.
b. Realizar clculos diversos en Matlab usando los comandos y la sintaxis apropiados.
c. Obtener salidas consistentes con el lenguaje de programacin Matlab.

4. DESCRIPCION DEL PROBLEMA


En esta asignacin se resolvern los tres problemas de la asignacin 02 adjunta.

3
4
5. MARCO TEORICO
Las frmulas a usar para solucionar los problemas de la asignacin 02 vienen dadas en la
misma descripcin de los problemas. Tambin se ha utilizado la teora dada por el profesor del
curso.

6. ESTRATEGIAS DE SOLUCION
1) SEUDOCODIGO
Problema 01.-

1. Ingresar el valor de fc (kg/cm2).


2. Si fc est entre 175 y 280 entonces b1=0.85
3. Si fc>280 entonces b1=0.85-0.05(fc-280)/70>=0.65
4. Si fc <175 entonces imprimir mensaje invalidando entrada.
5. Repetir el proceso.

Problema 02.-

1. Ingresar el nmero de barra: n.


2. Si n es vlido entonces
Calcular y mostrar dimetro de barra en in, cm, y mm.
Calcular y mostrar rea de barra en in2, cm2, y mm2.
3. Limpiar pantalla para nuevo el proceso.

Problema 03.-

1. Ingresar el nmero de barra: n y el nmero de estribo:m.


2. Si n y m son vlidos entonces
Calcular y mostrar dimetro de barra y estribo en in, cm, y mm.
Calcular y mostrar rea de barra y estribo en in2, cm2, y mm2.
3. Ingresar los parmetros:
fy: en kg/cm2
fy: en kg/cm2
r: (recubrimiento) en cm

5
b: (base) en cm
h: (altura) en cm
num: cantidad de barras a usar
4. Calcular los parmetros siguientes:
d: (peralte efectivo) en cm;
a: (profundidad del bloque equivalente a compresin) en cm
As: (rea de acero) en cm2;
b1: (factor del bloque equivalente a compresin segn whiney);
ro: (cuanta);
romin1: (cuanta mnima);
rob: (cuanta);
romax: (cuanta mxima)
5. Decisin
Si ro >=romin1 y ro<=romax calcule MN (Momento nominal)

MN=As*fy*(d-a/2);

Si ro<rm ro>romax, no se debe calcular MN.

6
2) DIAGRAMA DE FLUJO
La secuencia que se usar es concordante con los seudocdigos especificados en 6.1.

Problema 01.-

Inicio

fc

V
175<=f c<=280 b1=0.85

b1

V b1=0.85-0.05(f c-280)/70>=0.65
f c>280

V
f c<175 Reingrese f c fin

7
Problema 02.-

Inicio

fin

8
Problema 03.-

Inicio

n, m

d, de

d, de

A, Ae

A, Ae
f y: en kg/cm2

fy: en kg/cm2

r: (recubrimiento) en cm

b: (base) en cm

h: (altura) en cm

num: cantidad de barras a usar


MN no se puede
calcular

d: (peralte efectivo) en cm;


a: (profundidad del bloque equivalente a F
compresin) en cm
As: (rea de acero) en cm2;
b1: (factor del bloque equivalente a compresin ro >=romin1 y ro<=romax
segn whiney);

ro: (cuanta);
romin1: (cuanta mnima);
rob: (cuanta); V

romax: (cuanta mxima)

MN=As*fy*(d-a/2)

fin

9
7. PROGRAMA DE MATLAB
Incluir los comandos que utiliz para elaborar el programa. Lo puede hacer en forma de lista. No
es necesario describir completamente como se utiliza el comando. Debe incluir el programa como
un anexo.

1. Asignacin de variables
a. str2num
b. get
c. handles
d. edit
e. string
2. Estructuras de Seleccin
a. if- end
b. switch case-otherwise-end
3. Presentacin de resultados en pantalla
a. set
b. handles
4. Otros comandos
a. pushbutton
b. function
c. clc

8. VALIDACION DEL PROGRAMA


Debe incluir un ejemplo de validacin de sus resultados, que confirmen que el programa resuelve
de forma correcta el problema.

Problema 01.-

Ejemplo 01.-

10
Ejemplo 02.-

Ejemplo 03.-

11
Ejemplo 04.-

Problema 02.-

Ejemplo 01.-

12
Ejemplo 02.-

13
Problema 03.-

Ejemplo 01.-

14
Ejemplo 02.-

15
9. CONCLUSIONES
1. Los programas creados generan salidas consistentes con los comandos de Matlab y
la teora propuesta.
2. Fue posible programar los conceptos del anlisis estructural en Matlab debido a la
variedad de comandos propios que posee este software.

10. REFERENCIAS CITADAS


1. Apuntes de clase del profesor del curso
2. www.mathworks.com

ANEXO A:
Problema 01.-

function varargout = Beta1(varargin)

gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Beta1_OpeningFcn, ...
'gui_OutputFcn', @Beta1_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end

function Beta1_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject;

guidata(hObject, handles);

function varargout = Beta1_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

function edit1_Callback(hObject, eventdata, handles)

16
function edit1_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'),


get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit2_Callback(hObject, eventdata, handles)

function edit2_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'),


get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function pushbutton1_Callback(hObject, eventdata, handles)

fpc=str2num(get(handles.edit1,'string'));

if (fpc>=175 && fpc<=280)


B1=0.85;
set(handles.edit2,'string',B1);
end
if (fpc>280)
Beta1=0.85-0.05*(fpc-280)/70;
if Beta1>=0.65
B1=Beta1;
end
if Beta1<0.65
B1=0.65;
end
set(handles.edit2,'string',B1);
end
if fpc<175
set(handles.edit2,'string','No es concreto estrucutural, reingrese
fpc>150');
pause(2);
end

function pushbutton2_Callback(hObject, eventdata, handles)

set(handles.edit1,'string','');
set(handles.edit2,'string','');

Problema 02.-

function varargout = Booton(varargin)


gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Booton_OpeningFcn, ...
'gui_OutputFcn', @Booton_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})

17
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end

function Booton_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject;

guidata(hObject, handles);

function varargout = Booton_OutputFcn(hObject, eventdata, handles)


varargout{1} = handles.output;

function edit1_Callback(hObject, eventdata, handles)


function edit1_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function pushbutton1_Callback(hObject, eventdata, handles)
n=str2num(get(handles.edit1,'string'));
if n<=8
d=n/8;
end
if (n>8)
switch n
case {9}
d=1.128;
case {10}
d=1.27;
case {11}
d=1.41;
case {14}
d=1.693;
case {18}
d=2.257;
case {19}
d=2.337;
otherwise
d=0;
end
end
if d==0
set(handles.edit3,'string','Barra no existe');
pause(1);
pushbutton4_Callback(hObject, eventdata, handles)
end
if (d~=0)
set(handles.edit3,'string',d);
set(handles.edit4,'string',2.54*d);
set(handles.edit5,'string',25.4*d);
end

18
function edit3_Callback(hObject, eventdata, handles)
function edit3_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'),


get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit4_Callback(hObject, eventdata, handles)

function edit4_CreateFcn(hObject, eventdata, handles)


if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit5_Callback(hObject, eventdata, handles)

function edit5_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'),


get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function pushbutton2_Callback(hObject, eventdata, handles)

n=str2num(get(handles.edit1,'string'));
if n<=8
d=n/8;
end
if (n>8)
switch n
case {9}
d=1.128;
case {10}
d=1.27;
case {11}
d=1.41;
case {14}
d=1.693;
case {18}
d=2.257;
case {19}
d=2.337;
otherwise
d=0;
end
end
if (d~=0)
A1=pi*d^2/4;
d2=2.54*d;A2=pi*d2^2/4;
d3=25.4*d;A3=pi*d3^2/4;
set(handles.edit6,'string',A1);
set(handles.edit7,'string',A2);
set(handles.edit8,'string',A3);
end

function edit6_Callback(hObject, eventdata, handles)

19
function edit6_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'),


get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit7_Callback(hObject, eventdata, handles)


function edit7_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit8_Callback(hObject, eventdata, handles)

function edit8_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'),


get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function pushbutton4_Callback(hObject, eventdata, handles)

set(handles.edit1,'string','');
set(handles.edit3,'string','');
set(handles.edit4,'string','');
set(handles.edit5,'string','');
set(handles.edit6,'string','');
set(handles.edit7,'string','');
set(handles.edit8,'string','');

Problema 03.-

function varargout = Beta1(varargin)

gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Beta1_OpeningFcn, ...
'gui_OutputFcn', @Beta1_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end

function Beta1_OpeningFcn(hObject, eventdata, handles, varargin)

20
handles.output = hObject;

guidata(hObject, handles);

function varargout = Beta1_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

function edit1_Callback(hObject, eventdata, handles)

function edit1_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'),


get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit2_Callback(hObject, eventdata, handles)

function edit2_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'),


get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function pushbutton1_Callback(hObject, eventdata, handles)

fpc=str2num(get(handles.edit1,'string'));

if (fpc>=175 && fpc<=280)


B1=0.85;
set(handles.edit2,'string',B1);
end
if (fpc>280)
Beta1=0.85-0.05*(fpc-280)/70;
if Beta1>=0.65
B1=Beta1;
end
if Beta1<0.65
B1=0.65;
end
set(handles.edit2,'string',B1);
end
if fpc<175
set(handles.edit2,'string','No es concreto estrucutural, reingrese
fpc>150');
pause(2);
end

function pushbutton2_Callback(hObject, eventdata, handles)

set(handles.edit1,'string','');
set(handles.edit2,'string','');

21

Вам также может понравиться