mnspy 0.9.15__tar.gz → 0.9.17__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mnspy-0.9.15 → mnspy-0.9.17}/PKG-INFO +1 -1
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_diferenciales_parciales/mef/marco.py +56 -59
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_diferenciales_parciales/mef/viga.py +57 -79
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ra/303/255ces/bisecci/303/263n.py +9 -11
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ra/303/255ces/brent.py +42 -47
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ra/303/255ces/falsa_posicion.py +10 -12
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ra/303/255ces/muller.py +28 -34
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ra/303/255ces/newton_raphson.py +5 -3
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ra/303/255ces/punto_fijo.py +5 -4
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ra/303/255ces/raices.py +1 -1
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ra/303/255ces/secante.py +8 -7
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy.egg-info/PKG-INFO +1 -1
- {mnspy-0.9.15 → mnspy-0.9.17}/setup.py +1 -1
- {mnspy-0.9.15 → mnspy-0.9.17}/LICENSE +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/README.md +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/__init__.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/derivada/__init__.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/derivada/derivada.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/derivada/derivada_discreta.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/derivada/richardson.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_algebraicas_lineales/__init__.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_algebraicas_lineales/cramer.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_algebraicas_lineales/descomposicion_LU.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_algebraicas_lineales/descomposicion_cholesky.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_algebraicas_lineales/ecuaciones_algebraicas_lineales.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_algebraicas_lineales/gauss.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_algebraicas_lineales/gauss_jordan.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_algebraicas_lineales/gauss_sediel.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_algebraicas_lineales/tridiagonal.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_diferenciales_ordinarias/__init__.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_diferenciales_ordinarias/ecuaciones_diferenciales_ordinarias.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_diferenciales_ordinarias/euler.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_diferenciales_ordinarias/heun.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_diferenciales_ordinarias/punto_medio.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_diferenciales_ordinarias/runge_kutta.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_diferenciales_parciales/__init__.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_diferenciales_parciales/ecuaciones_diferenciales_parciales.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_diferenciales_parciales/liebmann.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_diferenciales_parciales/mdf/__init__.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_diferenciales_parciales/mdf/mdf.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_diferenciales_parciales/mef/__init__.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_diferenciales_parciales/mef/armadura.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_diferenciales_parciales/mef/barra.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_diferenciales_parciales/mef/ensamble.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_diferenciales_parciales/mef/mef.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_diferenciales_parciales/mef/resorte.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_diferenciales_parciales/mef/triangular_cst.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_diferenciales_parciales/mvf/__init__.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_diferenciales_parciales/mvf/mvf.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_diferenciales_parciales/mvf/volumen_finito.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/integrales/__init__.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/integrales/cuadratura_adaptativa.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/integrales/gauss_legendre.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/integrales/integral.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/integrales/romberg.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/integrales/simpson_1_3.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/integrales/simpson_3_8.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/integrales/trapezoidal.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/integrales/trapezoidal_desigual.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/integrales/trapezoidal_desigual_acumulado.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/interpolaci/303/263n/__init__.py" +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/interpolaci/303/263n/inter_Lagrange.py" +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/interpolaci/303/263n/inter_Newton.py" +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/interpolaci/303/263n/inter_spline_cubica.py" +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/interpolaci/303/263n/inter_spline_lineal.py" +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/interpolaci/303/263n/interpolacion.py" +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ra/303/255ces/__init__.py" +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ra/303/255ces/secante_modificada.py" +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ra/303/255ces/wegstein.py" +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy/utilidades.py +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy.egg-info/SOURCES.txt +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy.egg-info/dependency_links.txt +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy.egg-info/requires.txt +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/mnspy.egg-info/top_level.txt +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/pyproject.toml +0 -0
- {mnspy-0.9.15 → mnspy-0.9.17}/setup.cfg +0 -0
|
@@ -215,28 +215,18 @@ class Marco(Elemento):
|
|
|
215
215
|
# Esto se hace aplicando un momento corrector en el nodo i y las fuerzas
|
|
216
216
|
# cortantes correspondientes en ambos nodos para mantener el equilibrio.
|
|
217
217
|
if self._nodo_j.es_rotula:
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
self.
|
|
226
|
-
self.
|
|
227
|
-
self.
|
|
228
|
-
self.
|
|
229
|
-
self.
|
|
230
|
-
self._fuerzas_i_rot[2, 0] -= m_corrector_i
|
|
231
|
-
|
|
232
|
-
self._nodo_j.grados_libertad['x'].fuerza -= -self._s * -v_corrector
|
|
233
|
-
self._fuerzas_j_rot[0, 0] -= -self._s * -v_corrector
|
|
234
|
-
self._nodo_j.grados_libertad['y'].fuerza -= self._c * -v_corrector
|
|
235
|
-
self._fuerzas_j_rot[1, 0] -= self._c * -v_corrector
|
|
236
|
-
|
|
237
|
-
# La fuerza de momento en el nodo j se anula completamente.
|
|
238
|
-
self._nodo_j.grados_libertad['eje_z'].fuerza -= m_fem_j
|
|
239
|
-
self._fuerzas_j_rot[2, 0] -= m_fem_j
|
|
218
|
+
self._nodo_i.grados_libertad['x'].fuerza -= -self._s * (-q * self._L ** 2 / 12) * 3.0 / (2.0 * self._L)
|
|
219
|
+
self._fuerzas_i_rot[0, 0] -= -self._s * (-q * self._L ** 2 / 12) * 3.0 / (2.0 * self._L)
|
|
220
|
+
self._nodo_i.grados_libertad['y'].fuerza -= self._c * (-q * self._L ** 2 / 12) * 3.0 / (2.0 * self._L)
|
|
221
|
+
self._fuerzas_i_rot[1, 0] -= self._c * (-q * self._L ** 2 / 12) * 3.0 / (2.0 * self._L)
|
|
222
|
+
self._nodo_i.grados_libertad['eje_z'].fuerza -= 0.5 * (-q * self._L ** 2 / 12)
|
|
223
|
+
self._fuerzas_i_rot[2, 0] -= 0.5 * (-q * self._L ** 2 / 12)
|
|
224
|
+
self._nodo_j.grados_libertad['x'].fuerza -= -self._s * -(-q * self._L ** 2 / 12) * 3.0 / (2.0 * self._L)
|
|
225
|
+
self._fuerzas_j_rot[0, 0] -= -self._s * -(-q * self._L ** 2 / 12) * 3.0 / (2.0 * self._L)
|
|
226
|
+
self._nodo_j.grados_libertad['y'].fuerza -= self._c * -(-q * self._L ** 2 / 12) * 3.0 / (2.0 * self._L)
|
|
227
|
+
self._fuerzas_j_rot[1, 0] -= self._c * -(-q * self._L ** 2 / 12) * 3.0 / (2.0 * self._L)
|
|
228
|
+
self._nodo_j.grados_libertad['eje_z'].fuerza -= -q * self._L ** 2 / 12
|
|
229
|
+
self._fuerzas_j_rot[2, 0] -= -q * self._L ** 2 / 12
|
|
240
230
|
|
|
241
231
|
def agregar_carga_trapezoidal(self, q_1: float, q_2: float):
|
|
242
232
|
"""Agrega una carga trapezoidalmente distribuida perpendicular al elemento.
|
|
@@ -273,25 +263,31 @@ class Marco(Elemento):
|
|
|
273
263
|
|
|
274
264
|
# Corrección por rótula en el nodo j
|
|
275
265
|
if self._nodo_j.es_rotula:
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
self._nodo_i.grados_libertad['
|
|
282
|
-
|
|
283
|
-
self.
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
self.
|
|
287
|
-
|
|
288
|
-
self.
|
|
289
|
-
self.
|
|
290
|
-
|
|
291
|
-
self._fuerzas_j_rot[
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
self.
|
|
266
|
+
self._nodo_i.grados_libertad['x'].fuerza -= -self._s * (-q_1 * self._L ** 2 / 12 - (
|
|
267
|
+
q_2 - q_1) * self._L ** 2 / 20) * 3.0 / (2.0 * self._L)
|
|
268
|
+
self._fuerzas_i_rot[0, 0] -= -self._s * (
|
|
269
|
+
-q_1 * self._L ** 2 / 12 - (q_2 - q_1) * self._L ** 2 / 20) * 3.0 / (
|
|
270
|
+
2.0 * self._L)
|
|
271
|
+
self._nodo_i.grados_libertad['y'].fuerza -= self._c * (-q_1 * self._L ** 2 / 12 - (
|
|
272
|
+
q_2 - q_1) * self._L ** 2 / 20) * 3.0 / (2.0 * self._L)
|
|
273
|
+
self._fuerzas_i_rot[1, 0] -= self._c * (
|
|
274
|
+
-q_1 * self._L ** 2 / 12 - (q_2 - q_1) * self._L ** 2 / 20) * 3.0 / (
|
|
275
|
+
2.0 * self._L)
|
|
276
|
+
self._nodo_i.grados_libertad['eje_z'].fuerza -= 0.5 * (
|
|
277
|
+
-q_1 * self._L ** 2 / 12 - (q_2 - q_1) * self._L ** 2 / 20)
|
|
278
|
+
self._fuerzas_i_rot[2, 0] -= 0.5 * (-q_1 * self._L ** 2 / 12 - (q_2 - q_1) * self._L ** 2 / 20)
|
|
279
|
+
self._nodo_j.grados_libertad['x'].fuerza -= -self._s * -(
|
|
280
|
+
-q_1 * self._L ** 2 / 12 - (q_2 - q_1) * self._L ** 2 / 20) * 3.0 / (2.0 * self._L)
|
|
281
|
+
self._fuerzas_j_rot[0, 0] -= -self._s * -(
|
|
282
|
+
-q_1 * self._L ** 2 / 12 - (q_2 - q_1) * self._L ** 2 / 20) * 3.0 / (
|
|
283
|
+
2.0 * self._L)
|
|
284
|
+
self._nodo_j.grados_libertad['y'].fuerza -= self._c * -(
|
|
285
|
+
-q_1 * self._L ** 2 / 12 - (q_2 - q_1) * self._L ** 2 / 20) * 3.0 / (2.0 * self._L)
|
|
286
|
+
self._fuerzas_j_rot[1, 0] -= self._c * -(
|
|
287
|
+
-q_1 * self._L ** 2 / 12 - (q_2 - q_1) * self._L ** 2 / 20) * 3.0 / (
|
|
288
|
+
2.0 * self._L)
|
|
289
|
+
self._nodo_j.grados_libertad['eje_z'].fuerza -= -q_1 * self._L ** 2 / 12 - (q_2 - q_1) * self._L ** 2 / 20
|
|
290
|
+
self._fuerzas_j_rot[2, 0] -= -q_1 * self._L ** 2 / 12 - (q_2 - q_1) * self._L ** 2 / 20
|
|
295
291
|
|
|
296
292
|
def agregar_carga_puntual(self, p: float, a: float = None):
|
|
297
293
|
"""Agrega una carga puntual perpendicular al elemento a una distancia 'a'.
|
|
@@ -332,24 +328,25 @@ class Marco(Elemento):
|
|
|
332
328
|
|
|
333
329
|
# Corrección por rótula en el nodo j
|
|
334
330
|
if self._nodo_j.es_rotula:
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
self._nodo_i.grados_libertad['
|
|
340
|
-
|
|
341
|
-
self.
|
|
342
|
-
self.
|
|
343
|
-
self.
|
|
344
|
-
self.
|
|
345
|
-
|
|
346
|
-
self.
|
|
347
|
-
|
|
348
|
-
self._nodo_j.grados_libertad['y'].fuerza -= self._c * -
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
self.
|
|
352
|
-
self.
|
|
331
|
+
self._nodo_i.grados_libertad['x'].fuerza -= -self._s * (
|
|
332
|
+
-p * (self._L - a) * a ** 2 / self._L ** 2) * 3.0 / (
|
|
333
|
+
2.0 * self._L)
|
|
334
|
+
self._fuerzas_i_rot[0, 0] -= -self._s * (-p * (self._L - a) * a ** 2 / self._L ** 2) * 3.0 / (2.0 * self._L)
|
|
335
|
+
self._nodo_i.grados_libertad['y'].fuerza -= self._c * (-p * (self._L - a) * a ** 2 / self._L ** 2) * 3.0 / (
|
|
336
|
+
2.0 * self._L)
|
|
337
|
+
self._fuerzas_i_rot[1, 0] -= self._c * (-p * (self._L - a) * a ** 2 / self._L ** 2) * 3.0 / (2.0 * self._L)
|
|
338
|
+
self._nodo_i.grados_libertad['eje_z'].fuerza -= 0.5 * (-p * (self._L - a) * a ** 2 / self._L ** 2)
|
|
339
|
+
self._fuerzas_i_rot[2, 0] -= 0.5 * (-p * (self._L - a) * a ** 2 / self._L ** 2)
|
|
340
|
+
self._nodo_j.grados_libertad['x'].fuerza -= -self._s * -(
|
|
341
|
+
-p * (self._L - a) * a ** 2 / self._L ** 2) * 3.0 / (2.0 * self._L)
|
|
342
|
+
self._fuerzas_j_rot[0, 0] -= -self._s * -(-p * (self._L - a) * a ** 2 / self._L ** 2) * 3.0 / (
|
|
343
|
+
2.0 * self._L)
|
|
344
|
+
self._nodo_j.grados_libertad['y'].fuerza -= self._c * -(
|
|
345
|
+
-p * (self._L - a) * a ** 2 / self._L ** 2) * 3.0 / (
|
|
346
|
+
2.0 * self._L)
|
|
347
|
+
self._fuerzas_j_rot[1, 0] -= self._c * -(-p * (self._L - a) * a ** 2 / self._L ** 2) * 3.0 / (2.0 * self._L)
|
|
348
|
+
self._nodo_j.grados_libertad['eje_z'].fuerza -= -p * (self._L - a) * a ** 2 / self._L ** 2
|
|
349
|
+
self._fuerzas_j_rot[2, 0] -= -p * (self._L - a) * a ** 2 / self._L ** 2
|
|
353
350
|
|
|
354
351
|
def agregar_momento(self, m: float, a: float = None):
|
|
355
352
|
m *= -1.0
|
|
@@ -163,25 +163,14 @@ class Viga(Elemento):
|
|
|
163
163
|
# Esto se hace aplicando un momento corrector y las fuerzas cortantes
|
|
164
164
|
# correspondientes para mantener el equilibrio.
|
|
165
165
|
if self._nodo_j.es_rotula:
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
# Aplicar correcciones a las fuerzas nodales
|
|
176
|
-
self._nodo_i.grados_libertad['y'].fuerza += v_corrector
|
|
177
|
-
self._fuerzas_i_rot[0, 0] += v_corrector
|
|
178
|
-
self._nodo_i.grados_libertad['eje_z'].fuerza += m_carry_over_i
|
|
179
|
-
self._fuerzas_i_rot[1, 0] += m_carry_over_i
|
|
180
|
-
|
|
181
|
-
self._nodo_j.grados_libertad['y'].fuerza -= v_corrector
|
|
182
|
-
self._fuerzas_j_rot[0, 0] -= v_corrector
|
|
183
|
-
self._nodo_j.grados_libertad['eje_z'].fuerza += m_corrector
|
|
184
|
-
self._fuerzas_j_rot[1, 0] += m_corrector
|
|
166
|
+
self._nodo_i.grados_libertad['y'].fuerza -= (-q * self._L ** 2 / 12) * 3.0 / (2.0 * self._L)
|
|
167
|
+
self._fuerzas_i_rot[0, 0] -= (-q * self._L ** 2 / 12) * 3.0 / (2.0 * self._L)
|
|
168
|
+
self._nodo_i.grados_libertad['eje_z'].fuerza -= 0.5 * (-q * self._L ** 2 / 12)
|
|
169
|
+
self._fuerzas_i_rot[1, 0] -= 0.5 * (-q * self._L ** 2 / 12)
|
|
170
|
+
self._nodo_j.grados_libertad['y'].fuerza -= -(-q * self._L ** 2 / 12) * 3.0 / (2.0 * self._L)
|
|
171
|
+
self._fuerzas_j_rot[0, 0] -= -(-q * self._L ** 2 / 12) * 3.0 / (2.0 * self._L)
|
|
172
|
+
self._nodo_j.grados_libertad['eje_z'].fuerza -= -q * self._L ** 2 / 12
|
|
173
|
+
self._fuerzas_j_rot[1, 0] -= -q * self._L ** 2 / 12
|
|
185
174
|
|
|
186
175
|
def agregar_carga_trapezoidal(self, q_1: float, q_2: float):
|
|
187
176
|
"""Agrega una carga trapezoidalmente distribuida."""
|
|
@@ -199,20 +188,19 @@ class Viga(Elemento):
|
|
|
199
188
|
|
|
200
189
|
# Corrección por rótula en el nodo j
|
|
201
190
|
if self._nodo_j.es_rotula:
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
self._fuerzas_i_rot[
|
|
209
|
-
self.
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
self.
|
|
214
|
-
self.
|
|
215
|
-
self._fuerzas_j_rot[1, 0] += m_corrector
|
|
191
|
+
self._nodo_i.grados_libertad['y'].fuerza -= (-q_1 * self._L ** 2 / 12 - (
|
|
192
|
+
q_2 - q_1) * self._L ** 2 / 20) * 3.0 / (2.0 * self._L)
|
|
193
|
+
self._fuerzas_i_rot[0, 0] -= (-q_1 * self._L ** 2 / 12 - (q_2 - q_1) * self._L ** 2 / 20) * 3.0 / (
|
|
194
|
+
2.0 * self._L)
|
|
195
|
+
self._nodo_i.grados_libertad['eje_z'].fuerza -= 0.5 * (
|
|
196
|
+
-q_1 * self._L ** 2 / 12 - (q_2 - q_1) * self._L ** 2 / 20)
|
|
197
|
+
self._fuerzas_i_rot[1, 0] -= 0.5 * (-q_1 * self._L ** 2 / 12 - (q_2 - q_1) * self._L ** 2 / 20)
|
|
198
|
+
self._nodo_j.grados_libertad['y'].fuerza -= -(
|
|
199
|
+
-q_1 * self._L ** 2 / 12 - (q_2 - q_1) * self._L ** 2 / 20) * 3.0 / (2.0 * self._L)
|
|
200
|
+
self._fuerzas_j_rot[0, 0] -= -(-q_1 * self._L ** 2 / 12 - (q_2 - q_1) * self._L ** 2 / 20) * 3.0 / (
|
|
201
|
+
2.0 * self._L)
|
|
202
|
+
self._nodo_j.grados_libertad['eje_z'].fuerza -= -q_1 * self._L ** 2 / 12 - (q_2 - q_1) * self._L ** 2 / 20
|
|
203
|
+
self._fuerzas_j_rot[1, 0] -= -q_1 * self._L ** 2 / 12 - (q_2 - q_1) * self._L ** 2 / 20
|
|
216
204
|
|
|
217
205
|
def agregar_carga_puntual(self, p: float, a: float = None):
|
|
218
206
|
"""Agrega una carga puntual perpendicular a una distancia 'a'."""
|
|
@@ -232,20 +220,16 @@ class Viga(Elemento):
|
|
|
232
220
|
|
|
233
221
|
# Corrección por rótula en el nodo j
|
|
234
222
|
if self._nodo_j.es_rotula:
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
self.
|
|
241
|
-
|
|
242
|
-
self.
|
|
243
|
-
self.
|
|
244
|
-
|
|
245
|
-
self._nodo_j.grados_libertad['y'].fuerza -= v_corrector
|
|
246
|
-
self._fuerzas_j_rot[0, 0] -= v_corrector
|
|
247
|
-
self._nodo_j.grados_libertad['eje_z'].fuerza += m_corrector
|
|
248
|
-
self._fuerzas_j_rot[1, 0] += m_corrector
|
|
223
|
+
self._nodo_i.grados_libertad['y'].fuerza -= (-p * (self._L - a) * a ** 2 / self._L ** 2) * 3.0 / (
|
|
224
|
+
2.0 * self._L)
|
|
225
|
+
self._fuerzas_i_rot[0, 0] -= (-p * (self._L - a) * a ** 2 / self._L ** 2) * 3.0 / (2.0 * self._L)
|
|
226
|
+
self._nodo_i.grados_libertad['eje_z'].fuerza -= 0.5 * (-p * (self._L - a) * a ** 2 / self._L ** 2)
|
|
227
|
+
self._fuerzas_i_rot[1, 0] -= 0.5 * (-p * (self._L - a) * a ** 2 / self._L ** 2)
|
|
228
|
+
self._nodo_j.grados_libertad['y'].fuerza -= -(-p * (self._L - a) * a ** 2 / self._L ** 2) * 3.0 / (
|
|
229
|
+
2.0 * self._L)
|
|
230
|
+
self._fuerzas_j_rot[0, 0] -= -(-p * (self._L - a) * a ** 2 / self._L ** 2) * 3.0 / (2.0 * self._L)
|
|
231
|
+
self._nodo_j.grados_libertad['eje_z'].fuerza -= -p * (self._L - a) * a ** 2 / self._L ** 2
|
|
232
|
+
self._fuerzas_j_rot[1, 0] -= -p * (self._L - a) * a ** 2 / self._L ** 2
|
|
249
233
|
|
|
250
234
|
def agregar_momento(self, m: float, a: float = None):
|
|
251
235
|
"""Agrega un momento concentrado a una distancia 'a'."""
|
|
@@ -266,20 +250,16 @@ class Viga(Elemento):
|
|
|
266
250
|
|
|
267
251
|
# Corrección por rótula en el nodo j
|
|
268
252
|
if self._nodo_j.es_rotula:
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
self.
|
|
275
|
-
|
|
276
|
-
self.
|
|
277
|
-
self.
|
|
278
|
-
|
|
279
|
-
self._nodo_j.grados_libertad['y'].fuerza -= v_corrector
|
|
280
|
-
self._fuerzas_j_rot[0, 0] -= v_corrector
|
|
281
|
-
self._nodo_j.grados_libertad['eje_z'].fuerza += m_corrector
|
|
282
|
-
self._fuerzas_j_rot[1, 0] += m_corrector
|
|
253
|
+
self._nodo_i.grados_libertad['y'].fuerza -= (m * a * (2 * self._L - 3 * a) / self._L ** 2) * 3.0 / (
|
|
254
|
+
2.0 * self._L)
|
|
255
|
+
self._fuerzas_i_rot[0, 0] -= (m * a * (2 * self._L - 3 * a) / self._L ** 2) * 3.0 / (2.0 * self._L)
|
|
256
|
+
self._nodo_i.grados_libertad['eje_z'].fuerza -= 0.5 * (m * a * (2 * self._L - 3 * a) / self._L ** 2)
|
|
257
|
+
self._fuerzas_i_rot[1, 0] -= 0.5 * (m * a * (2 * self._L - 3 * a) / self._L ** 2)
|
|
258
|
+
self._nodo_j.grados_libertad['y'].fuerza -= -(m * a * (2 * self._L - 3 * a) / self._L ** 2) * 3.0 / (
|
|
259
|
+
2.0 * self._L)
|
|
260
|
+
self._fuerzas_j_rot[0, 0] -= -(m * a * (2 * self._L - 3 * a) / self._L ** 2) * 3.0 / (2.0 * self._L)
|
|
261
|
+
self._nodo_j.grados_libertad['eje_z'].fuerza -= m * a * (2 * self._L - 3 * a) / self._L ** 2
|
|
262
|
+
self._fuerzas_j_rot[1, 0] -= m * a * (2 * self._L - 3 * a) / self._L ** 2
|
|
283
263
|
|
|
284
264
|
def agregar_carga_triangular_descendente(self, q: float):
|
|
285
265
|
"""Agrega una carga triangular con valor máximo en el nodo i."""
|
|
@@ -296,15 +276,14 @@ class Viga(Elemento):
|
|
|
296
276
|
|
|
297
277
|
# Corrección por rótula en el nodo j
|
|
298
278
|
if self._nodo_j.es_rotula:
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
self.
|
|
305
|
-
self.
|
|
306
|
-
self.
|
|
307
|
-
self._fuerzas_i_rot[1, 0] += m_carry_over_i
|
|
279
|
+
self._nodo_i.grados_libertad['y'].fuerza -= (-q * self._L ** 2 / 30) * 3.0 / (2.0 * self._L)
|
|
280
|
+
self._fuerzas_i_rot[0, 0] -= (-q * self._L ** 2 / 30) * 3.0 / (2.0 * self._L)
|
|
281
|
+
self._nodo_i.grados_libertad['eje_z'].fuerza -= 0.5 * (-q * self._L ** 2 / 30)
|
|
282
|
+
self._fuerzas_i_rot[1, 0] -= 0.5 * (-q * self._L ** 2 / 30)
|
|
283
|
+
self._nodo_j.grados_libertad['y'].fuerza -= -(-q * self._L ** 2 / 30) * 3.0 / (2.0 * self._L)
|
|
284
|
+
self._fuerzas_j_rot[0, 0] -= -(-q * self._L ** 2 / 30) * 3.0 / (2.0 * self._L)
|
|
285
|
+
self._nodo_j.grados_libertad['eje_z'].fuerza -= -q * self._L ** 2 / 30
|
|
286
|
+
self._fuerzas_j_rot[1, 0] -= -q * self._L ** 2 / 30
|
|
308
287
|
|
|
309
288
|
def agregar_carga_triangular_ascendente(self, q: float):
|
|
310
289
|
"""Agrega una carga triangular con valor máximo en el nodo j."""
|
|
@@ -321,15 +300,14 @@ class Viga(Elemento):
|
|
|
321
300
|
|
|
322
301
|
# Corrección por rótula en el nodo j
|
|
323
302
|
if self._nodo_j.es_rotula:
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
self.
|
|
330
|
-
self.
|
|
331
|
-
self.
|
|
332
|
-
self._fuerzas_i_rot[1, 0] += m_carry_over_i
|
|
303
|
+
self._nodo_i.grados_libertad['y'].fuerza -= (-q * self._L ** 2 / 20) * 3.0 / (2.0 * self._L)
|
|
304
|
+
self._fuerzas_i_rot[0, 0] -= (-q * self._L ** 2 / 20) * 3.0 / (2.0 * self._L)
|
|
305
|
+
self._nodo_i.grados_libertad['eje_z'].fuerza -= 0.5 * (-q * self._L ** 2 / 20)
|
|
306
|
+
self._fuerzas_i_rot[1, 0] -= 0.5 * (-q * self._L ** 2 / 20)
|
|
307
|
+
self._nodo_j.grados_libertad['y'].fuerza -= -(-q * self._L ** 2 / 20) * 3.0 / (2.0 * self._L)
|
|
308
|
+
self._fuerzas_j_rot[0, 0] -= -(-q * self._L ** 2 / 20) * 3.0 / (2.0 * self._L)
|
|
309
|
+
self._nodo_j.grados_libertad['eje_z'].fuerza -= -q * self._L ** 2 / 20
|
|
310
|
+
self._fuerzas_j_rot[1, 0] -= -q * self._L ** 2 / 20
|
|
333
311
|
|
|
334
312
|
def _obtener_cargas(self) -> dict:
|
|
335
313
|
return self._cargas
|
|
@@ -88,17 +88,15 @@ class Biseccion(Raices):
|
|
|
88
88
|
print("La raíz no está dentro de este rango, pruebe con otro rango de datos")
|
|
89
89
|
sys.exit()
|
|
90
90
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
else:
|
|
101
|
-
self._x_max = self.x
|
|
91
|
+
self.x = (self._x_min + self._x_max) / 2
|
|
92
|
+
if self._fin_iteracion():
|
|
93
|
+
return
|
|
94
|
+
elif np.sign(self._f(self._x_min)) == np.sign(self._f(self.x)):
|
|
95
|
+
self._x_min = self.x
|
|
96
|
+
self._calcular()
|
|
97
|
+
elif np.sign(self._f(self._x_max)) == np.sign(self._f(self.x)):
|
|
98
|
+
self._x_max = self.x
|
|
99
|
+
self._calcular()
|
|
102
100
|
|
|
103
101
|
def graficar(self, mostrar_sol: bool = True, mostrar_iter: bool = True, mostrar_lin_iter: bool = True,
|
|
104
102
|
n_puntos: int = 100):
|
|
@@ -99,53 +99,48 @@ class Brent(Raices):
|
|
|
99
99
|
"signos diferentes")
|
|
100
100
|
sys.exit()
|
|
101
101
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
self.
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
x_a, x_b = x_b, x_a
|
|
145
|
-
y_a, y_b = y_b, y_a
|
|
146
|
-
|
|
147
|
-
self._val = x_a, x_b, x_c
|
|
148
|
-
self._val_f = y_a, y_b, y_c
|
|
102
|
+
x_a, x_b, x_c = self._val
|
|
103
|
+
y_a, y_b, y_c = self._val_f
|
|
104
|
+
x_d = 0
|
|
105
|
+
self._x_min = min([x_a, x_b])
|
|
106
|
+
self._x_max = max([x_a, x_b])
|
|
107
|
+
if len(self._val_f) == len(set(self._val_f)):
|
|
108
|
+
# si los y son diferentes se usa el método de la cuadrática inversa
|
|
109
|
+
self.x = x_a * y_b * y_c / ((y_a - y_b) * (y_a - y_c)) + x_b * y_a * y_c / (
|
|
110
|
+
(y_b - y_a) * (y_b - y_c)) + x_c * y_a * y_b / ((y_c - y_a) * (y_c - y_b))
|
|
111
|
+
else:
|
|
112
|
+
# Se usa el método de la falsa posición
|
|
113
|
+
self.x = (y_a * x_b - y_b * x_a) / (y_a - y_b)
|
|
114
|
+
if (self.x - (3 * x_a + x_b) / 4) * (self.x - x_b) >= 0 or (
|
|
115
|
+
self._biseccion_usada and abs(self.x - x_b) >= abs(x_b - x_c) / 2) or (
|
|
116
|
+
not self._biseccion_usada and abs(self.x - x_b) >= abs(x_c - x_d) / 2):
|
|
117
|
+
self.x = (x_a + x_b) / 2
|
|
118
|
+
self._biseccion_usada = True
|
|
119
|
+
else:
|
|
120
|
+
self._biseccion_usada = False
|
|
121
|
+
y_x = self._f(self.x)
|
|
122
|
+
# x_d = x_c # TODO Revisar el código esta variable porque no se usa
|
|
123
|
+
x_c = x_b
|
|
124
|
+
y_c = y_b
|
|
125
|
+
if np.sign(y_a) == np.sign(y_x):
|
|
126
|
+
x_a = self.x
|
|
127
|
+
y_a = y_x
|
|
128
|
+
else:
|
|
129
|
+
x_b = self.x
|
|
130
|
+
y_b = y_x
|
|
131
|
+
if abs(y_a) < abs(y_b):
|
|
132
|
+
x_t = x_a
|
|
133
|
+
y_t = y_a
|
|
134
|
+
x_a = x_b
|
|
135
|
+
y_a = y_b
|
|
136
|
+
x_b = x_t
|
|
137
|
+
y_b = y_t
|
|
138
|
+
self._val = x_a, x_b, x_c
|
|
139
|
+
self._val_f = y_a, y_b, y_c
|
|
140
|
+
if self._fin_iteracion():
|
|
141
|
+
return
|
|
142
|
+
else:
|
|
143
|
+
self._calcular()
|
|
149
144
|
|
|
150
145
|
def graficar(self, mostrar_sol: bool = True, mostrar_iter: bool = True, mostrar_lin_iter: bool = False,
|
|
151
146
|
n_puntos: int = 100):
|
|
@@ -86,18 +86,16 @@ class FalsaPosicion(Raices):
|
|
|
86
86
|
print("La raíz no está dentro de este rango, pruebe con otro rango de datos")
|
|
87
87
|
sys.exit()
|
|
88
88
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
else:
|
|
100
|
-
self._x_max = self.x
|
|
89
|
+
self.x = self._x_max - (self._f(self._x_max) * (self._x_min - self._x_max)) / (
|
|
90
|
+
self._f(self._x_min) - self._f(self._x_max))
|
|
91
|
+
if self._fin_iteracion():
|
|
92
|
+
return
|
|
93
|
+
elif np.sign(self._f(self._x_min)) == np.sign(self._f(self.x)):
|
|
94
|
+
self._x_min = self.x
|
|
95
|
+
self._calcular()
|
|
96
|
+
elif np.sign(self._f(self._x_max)) == np.sign(self._f(self.x)):
|
|
97
|
+
self._x_max = self.x
|
|
98
|
+
self._calcular()
|
|
101
99
|
|
|
102
100
|
def graficar(self, mostrar_sol: bool = True, mostrar_iter: bool = True, mostrar_lin_iter: bool = True,
|
|
103
101
|
n_puntos: int = 100):
|
|
@@ -88,40 +88,34 @@ class Muller(Raices):
|
|
|
88
88
|
-------
|
|
89
89
|
None
|
|
90
90
|
"""
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
self.
|
|
119
|
-
|
|
120
|
-
if self._fin_iteracion():
|
|
121
|
-
break # Convergencia o máximo de iteraciones alcanzado
|
|
122
|
-
|
|
123
|
-
# Actualizar los puntos para la siguiente iteración
|
|
124
|
-
self._x_0_i, self._x_1_i, self._x_2_i = self._x_1_i, self._x_2_i, self.x
|
|
91
|
+
h_0 = self._x_1_i - self._x_0_i
|
|
92
|
+
h_1 = self._x_2_i - self._x_1_i
|
|
93
|
+
d_0 = (self._f(self._x_1_i) - self._f(self._x_0_i)) / h_0
|
|
94
|
+
d_1 = (self._f(self._x_2_i) - self._f(self._x_1_i)) / h_1
|
|
95
|
+
a = (d_1 - d_0) / (h_1 + h_0)
|
|
96
|
+
b = a * h_1 + d_1
|
|
97
|
+
c = self._f(self._x_2_i)
|
|
98
|
+
# ***
|
|
99
|
+
self._a_2 += [a]
|
|
100
|
+
self._a_1 += [d_0]
|
|
101
|
+
self._a_0 += [self._f(self._x_0_i)]
|
|
102
|
+
self._list_x_0 += [self._x_0_i]
|
|
103
|
+
self._list_x_1 += [self._x_1_i]
|
|
104
|
+
self._list_x_2 += [self._x_2_i]
|
|
105
|
+
# ***
|
|
106
|
+
rad = np.sqrt(b ** 2 - 4 * a * c)
|
|
107
|
+
if abs(b + rad) > abs(b - rad):
|
|
108
|
+
den = b + rad
|
|
109
|
+
else:
|
|
110
|
+
den = b - rad
|
|
111
|
+
self.x = self._x_2_i - 2 * c / den
|
|
112
|
+
if self._fin_iteracion():
|
|
113
|
+
return
|
|
114
|
+
else:
|
|
115
|
+
self._x_0_i = self._x_1_i
|
|
116
|
+
self._x_1_i = self._x_2_i
|
|
117
|
+
self._x_2_i = self.x
|
|
118
|
+
self._calcular()
|
|
125
119
|
|
|
126
120
|
def graficar(self, mostrar_sol: bool = True, mostrar_iter: bool = True, mostrar_lin_iter: bool = True,
|
|
127
121
|
n_puntos: int = 100):
|
|
@@ -117,9 +117,11 @@ class NewtonRaphson(Raices):
|
|
|
117
117
|
-------
|
|
118
118
|
None
|
|
119
119
|
"""
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
120
|
+
self.x -= self._f(self.x) / self._df(self.x)
|
|
121
|
+
if self._fin_iteracion():
|
|
122
|
+
return
|
|
123
|
+
else:
|
|
124
|
+
self._calcular()
|
|
123
125
|
|
|
124
126
|
def graficar(self, mostrar_sol: bool = True, mostrar_iter: bool = True, mostrar_lin_iter: bool = True,
|
|
125
127
|
n_puntos: int = 100):
|
|
@@ -74,10 +74,11 @@ class PuntoFijo(Raices):
|
|
|
74
74
|
-------
|
|
75
75
|
None
|
|
76
76
|
"""
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
77
|
+
self.x += self._f(self.x) - self.x
|
|
78
|
+
if self._fin_iteracion():
|
|
79
|
+
return
|
|
80
|
+
else:
|
|
81
|
+
self._calcular()
|
|
81
82
|
|
|
82
83
|
def graficar(self, mostrar_sol: bool = True, mostrar_iter: bool = True, mostrar_lin_iter: bool = True,
|
|
83
84
|
n_puntos: int = 100):
|
|
@@ -82,7 +82,7 @@ class Raices:
|
|
|
82
82
|
Tipo de error a utilizar para la convergencia:
|
|
83
83
|
- ``'%'``: Error relativo porcentual (por defecto).
|
|
84
84
|
- ``'/'``: Error relativo.
|
|
85
|
-
- ``'n'``: Número de cifras significativas.
|
|
85
|
+
- ``'n'``: Número de cifras significativas. εs = (0.5 * 10^(2-n)) % (Scarborough, 1966)
|
|
86
86
|
"""
|
|
87
87
|
self._f = f
|
|
88
88
|
self._tol = tol
|
|
@@ -80,13 +80,14 @@ class Secante(Raices):
|
|
|
80
80
|
-------
|
|
81
81
|
None
|
|
82
82
|
"""
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
83
|
+
self.x -= (self._f(self._x_1_i) * (self._x_1_i - self._x_0_i)) / (
|
|
84
|
+
self._f(self._x_1_i) - self._f(self._x_0_i))
|
|
85
|
+
self._x_0_i = self._x_1_i
|
|
86
|
+
self._x_1_i = self.x
|
|
87
|
+
if self._fin_iteracion():
|
|
88
|
+
return
|
|
89
|
+
else:
|
|
90
|
+
self._calcular()
|
|
90
91
|
|
|
91
92
|
def graficar(self, mostrar_sol: bool = True, mostrar_iter: bool = True, mostrar_lin_iter: bool = True,
|
|
92
93
|
n_puntos: int = 100):
|
|
@@ -2,7 +2,7 @@ from setuptools import setup
|
|
|
2
2
|
|
|
3
3
|
setup(
|
|
4
4
|
name='mnspy',
|
|
5
|
-
version='0.9.
|
|
5
|
+
version='0.9.17',
|
|
6
6
|
packages=['mnspy', 'mnspy.raíces', 'mnspy.derivada', 'mnspy.integrales', 'mnspy.interpolación',
|
|
7
7
|
'mnspy.ecuaciones_algebraicas_lineales', 'mnspy.ecuaciones_diferenciales_ordinarias',
|
|
8
8
|
'mnspy.ecuaciones_diferenciales_parciales', 'mnspy.ecuaciones_diferenciales_parciales.mdf',
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_algebraicas_lineales/descomposicion_cholesky.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_diferenciales_parciales/mef/triangular_cst.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mnspy-0.9.15 → mnspy-0.9.17}/mnspy/ecuaciones_diferenciales_parciales/mvf/volumen_finito.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|