Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download

All published worksheets from http://sagenb.org

Views: 168756
Image: ubuntu2004
# Exemplos Numpy Arrays
# Resolvendo duas Incógnitas com duas Equações Lineares from numpy import * from numpy.linalg import solve # 3*x0-1*x1 = 4 # 2*x0-3*x1 = -2 # Equação na forma ax=b a = array([[3,-1], [2,-3]]) b = array([4, -2]) x = solve(a, b) x
array([ 2., 2.])
dot(a, x) # Verificando o resultado encontrado (b=a*x)
array([ 4., -2.])
# Resolvendo duas Incógnitas com duas Equações Lineares (2) from numpy import * from numpy.linalg import solve # 1*x0-3*x1 = -4 # 2*x0-6*x1 = -8 # Como as equações acima são L.D. não será possível resolver o sistema, pois ele terá múltiplas soluções: a = array([[1,-3], [2,-6]]) b = array([-4, -8]) x = solve(a, b)
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/sage/sagenb/sage_notebook/worksheets/neumara/2/code/14.py", line 16, in <module> exec compile(ur'x = solve(a, b)' + '\n', '', 'single') File "", line 1, in <module> File "/home/sage/sage_install/sage/local/lib/python2.6/site-packages/numpy/linalg/linalg.py", line 254, in solve raise LinAlgError, 'Singular matrix' numpy.linalg.linalg.LinAlgError: Singular matrix
# Resolvendo três Incógnitas com três Equações Lineares from numpy import * from numpy.linalg import solve from numpy.linalg import inv # 3*x0-3*x1+7*x2 = 2 # 4*x0-6*x1-1*x2 = -4 #-5*x0+1*x1+4*x2 = 5 a = array([[3, -3, 7], [4,-6,-1], [-5,1,4]]) b = array([2, -4, 5]) x = solve(a, b) x
array([-0.47247706, 0.25229358, 0.59633028])
dot(a, x) # Verificando a solução (calculando b)
array([ 2., -4., 5.])
# a*x = b # inv(a)*a*x = inv(a)*b # Multiplicando ambos os lados pela inversa de a, para isolar x # I*x = inv(a)*b # Como a multiplicação pela matriz identidade não altera o valor, tem-se: x = inv(a)*b # x = inv(a)*b x = dot(inv(a), b) x
array([-0.47247706, 0.25229358, 0.59633028])
dot(inv(a), a) # Verificando a resposta através do cálculo da matriz identidade
array([[ 1.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 1.00000000e+00, 0.00000000e+00], [ -5.55111512e-17, -4.51028104e-17, 1.00000000e+00]])
# Verifica-se que alguns termos não são exatamente zero, mas estão dentro do limite que pode ser considerado.