Saltar al contenido

Ayuda para resolver sistemas de ecuaciones con condicionales


arturo osorio

Recommended Posts

publicado

Hola, soy estudiante de ingeniería civil y novato en excel, por favor que alguien me ayude, necesito hacer un trabajo para la universidad que consiste en esto:

Se tienen 5 valores de entrada b, h, f'c, fy, M. Se necesita que entregue 4 valores de salida Kd, fs, fc, As. Para resolver esto se tienen 3 diferentes relaciones, estas son:

I) fc/(47000*Kd*(fc^(0,5)) = fs/(2,1*10^(6)*(d-Kd))

II) fc*Kd*b/2 = fs*As

III)  fc*Kd*(h-5-(kd/3)*b/2 = M

Además de esto se tienen valores máximos para fs y fc, fy/2 y f'c*0,4 respectivamente. Como se busca optimizar se impone que fs o fc sean iguales a su valor maximo y ahi tengo una cuarta ecuación, se puede imponer esto en cualquiera de los 2 pero al resolver las 4 ecuaciones debo verificar que el f que no use no exceda su valor maximo, si esto ocurre debo repetir el procedimiento pero usando el otro f igual a su valor maximo. Cuando se hace a mano, en general primero uso la ecuación 4, después 3, despues 1 y al final 2.

Como hago esto?, todo tipo de ayuda sirve, como se hacen las condicionales o como resolver los valores incognitos?. De antemano muchas gracias.

publicado

Hola @arturo osorio

Puedes desarrollar el ejercicio con datos en duros en una planilla Excel considerando:

  • Referencia de la nomenclatura fc? kd? ... 
  • Dar valores a los nomenclatura
  • Instructivo o pasos aplicables para dar con el resultado, entiendo que sabes resolverlo con lápiz y papel pero lo que necesitas también es hacerlo en Excel.

De esta manera para las personas que no cuente con conocimientos de ingeniería pero si de Excel podamos ayudarte

Saludos

publicado

Voy a explicarlo más a fondo, pero si hace muy largo pueden ver el ejemplo y ver la aritmética utilizada solamente.

Lo que está haciendo es que se tiene una viga de hormigón armado( hormigón y acero) la que tiene una sección transversal. Esta viga puede estar siendo flexionada por algún tipo de fuerza (el valor de esta flexión es M), lo que incide en la sección transversal de la viga ( de ancho b y alto h)  y va a tener una zona que va a estar siendo alargada (aguantada por el acero, ya que el hormigón no es capaz de resistir alargamiento) y otra comprimida (hormigón). Estas 2 zonas van a estar limitadas por un eje neutro donde no hay ni alargamiento ni compresión, la distancia medida de arriba hacia abajo, hasta el eje neutro es kd, la cuál se debe calcular.

f'c y fy son valores sacados de tablas que al meterlos a una pequeña formula te indican lo máximo que el hormigón (compresión) y el acero (alargamiento) pueden aguantar respectivamente, dependiendo el tipo de acero o hormigón que sean. Se requiere calcular el valor que en la situación dada está resistiendo el hormigón a compresión (fc) y el acero al alargamiento (fs), estos a su vez también dependen del área del hormigón (conocida, se saben los valores de b y h) y la del acero (As, se debe calcular). Por lo que al final tenemos 5 valores conocidos que se deben ingresar, pero también tenemos 4 valores desconocidos (Kd, fs, fc, As) por lo que se requiere de 4 ecuaciones para poder ser resueltas. Como se habla de estructuras estáticas, la viga no se mueve ni gira y por equilibrio de fuerzas se llegaran a las ecuaciones 2 y 3, pero a su vez la sección de la viga se deforma de forma elástica y lineal, por lo que se puede hacer relación de triángulos para tener otra ecuación, la 1.

Por ultimo, como se busca maximizar la resistencia, se impondrá que fc o fs sean iguales a su resistencia máxima posible, ejemplo digo que fc=resistencia máxima (f'c*0,4), con esto resuelvo las otras 3 ecuaciones y habré calculado un valor para fs, sin embargo si el valor calculado de fs es mayor a su resistencia máxima, debo repetir el procedimiento pero esta vez imponiendo que fs sea igual a su resistencia máxima(fy/2), resolver las otras 3 ecuaciones y verificar que fc sea menor que su resistencia máxima.

Ejemplo:

b= 20 , h = 60 , M = 1 millon, f'c = 250, fy = 4200.

1) Suponer que fc = f'c*0,4 =100

2) Voy a la ecuación 3.  

fc*kd*(h-5-(kd/3)*b/2 = M

 100*kd*(60-5-(kd/3)*20/2 = 1000000

=> (1000/3)*(kd^2) - 55000kd + 1000000 = 0

kd= 144,195;  kd= 20,805

Como es una ecuación cuadratica, tendremos 2 soluciones, pero como kd es una distancia dentro de la sección de la viga,  0<kd<h=60

=> kd = 20, 805

3) Ecuación 1

fc/(47000*kd*(fc^(0,5)) = fs/(2,1*10^(6)*(d-kd)); olvide mencionar que d= h -5

100/(47000*20,8*(100^(0,5)) = fs/(2,1*10^(6)*(55-20,8))

=> fs= 734,37

4) Verificar que fs < fy/2

fy/2= 2100>734, 47, como el valor es menor a la resistencia maxima proseguimos a calcular As, pero en el caso que fs hubiera sido mayor a 2100, vuelvo al paso 1 pero suponiendo que fs=resistencia maxima = fy/2 y repetir procedimiento verificando al final si fc<fc*0,4 en caso que de nuevo falle, la viga estaría mal diseñada (b y h) y se acaba el problema.

5) Ecuación 2

fc*Kd*b/2 = fs*As

100*20,8*20/2=734,37*As

=> As = 28,33

Espero ahora si, se haya entendido

 

 

 

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      188
    • Comentarios
      98
    • Revisiones
      29

    Más información sobre "Cambios en el Control Horario"
    Última descarga
    Por pegones1

    4    1

  • Crear macros Excel

  • Mensajes

    • Buenos días  @LeandroA espero estes bien Tengo un caso idéntico al planteado en la siguiente pregunta: Sin embargo, a diferencia de quien planteo originalmente la pregunta al correr el código no obtengo ningún resultado podrían ayudarme a resolver este inconveniente y que al hacer click en el Botón Guardar (CommandButton3) del Formulario RCS (frmrcs) el archivo pdf quede configurado con orientación vertical, márgenes superior, inferior, derecho e izquierdo = 1 y en página tamaño carta. Si acaso influye uso Microsoft Excel LTSC MSO (versión 2209 Compilación16.0.1.15629.20200) de 64 bits Mucho le sabre agradecer la ayuda que me pueda dar  RCS PRUEBA - copia.xlsm
    • @JSDJSDCon gusto mi estimado Para la opción 1: Sub Surtirhastadondealcanse() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 4 Dim filaFin As Integer: filaFin = 7 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Else solicitudes(i) = 0 End If surtido(i) = "POR FALTA STOCK" Next i ' Surtir de acuerdo al inventario disponible For i = 1 To numClientes If solicitudes(i) > 0 Then If inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) ElseIf inventario > 0 Then surtido(i) = inventario totalSurtido = totalSurtido + inventario inventario = 0 Else surtido(i) = "POR FALTA STOCK" End If End If Next i ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = "POR FALTA STOCK" Then .Value = surtido(i) .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Para la opción 2:   Sub surtirenpartesiguales() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 13 Dim filaFin As Integer: filaFin = 16 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 Dim totalPedido As Double: totalPedido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) totalPedido = totalPedido + solicitudes(i) Else solicitudes(i) = 0 End If surtido(i) = 0 Next i ' Si hay suficiente inventario, surtir lo que el cliente pide If inventario >= totalPedido Then For i = 1 To numClientes If solicitudes(i) > 0 And inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) End If Next i Else ' Reparto base igualitario Dim baseSurtido As Long baseSurtido = Int(inventario / numClientes) For i = 1 To numClientes If solicitudes(i) > 0 Then If solicitudes(i) <= baseSurtido Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) Else surtido(i) = baseSurtido inventario = inventario - baseSurtido totalSurtido = totalSurtido + baseSurtido End If End If Next i ' Repartir sobrante restante uno por uno, respetando lo pedido Do While inventario > 0 For i = 1 To numClientes If surtido(i) < solicitudes(i) Then surtido(i) = surtido(i) + 1 totalSurtido = totalSurtido + 1 inventario = inventario - 1 If inventario = 0 Then Exit For End If Next i Loop End If ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = 0 Then .Value = "POR FALTA STOCK" .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Saludos, Diego
    • Buenos dias.  Estoy trabajando en una hoja para poder llevar un control de un pequeño almacén.  Tengo un pedido con varias líneas y "lotes" y necesito sacar las ubicaciones que coincidan con la referencia y lote que pone en el pedido. El problema viene cuando tengo la misma referencia y mismo lote en ubicaciones diferentes y necesito sacar la información en columnas diferentes. No se si  me he explicado bien, pero creo que con el ejemplo adjunto se entiende mejor. Agradecería mucho si me pudieran ayudar  Libro1.xlsx
    • Exelente solución mil gracias 
    • Podrías compartir tu solucion
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.