2 - TIPOS-DE-DADOS

502 days ago by jmarcellopereira

TIPOS DE DADOS

jmarcellopereira@ufpi.edu.br

 
       

STRING

Strings são seqüências de caracteres, sejam eles letras, números, espaços, caracteres especiais, e etc., e assim como os tipos numéricos vistos anteriormente, strings também são imutáveis. Strings podem ser delimitadas por aspas simples, duplas ou triplas.

string1 = "sagemath" string2 = 'sagemath' string3 = '''sagemath''' string1 ; string2 ; string3 
       


Strings podem ser unidas (concatenadas) utilizando o operador de adição concatenação ( + ).

string4 = 'sage ' + "MATH" string4 
       

Assim como listas e tuplas, strings também são sequências, portanto, podemos utilizar as mesmas funcionalidades de indexação e fatiamento destes elementos.

# fatiamento show(string4) string4.split('sage') ; string4.split('ge') 
       


# Caixa alta e caixa baixa show(string4) string4.upper() ; string4.lower() 
       


# troca de caixa entre as strings string4.swapcase() 
       
# elemento a partir do parametro indice passado como valor string4[0] ; string4[1] ; string4[2] ; string4[3] 
       



CONSTANTES

pi; e 
       
pi
e
pi
e

VARIÁVEIS

O Python é uma linguagem de tipagem dinâmica, dessa form uma variável possui um valor associado enquanto durar o processamento e pode variar em tempo e execução. Para associar o valor a uma variável, basta utiliza "=". Para eliminar o valor de uma variável, use reset() para todas as variáveis ou reset("var1,var2...") para variáveis específicas.

x = 5 y = 10.1 z = 1/2 
       
x ; y ; z 
       
5
10.1000000000000
1/2
5
10.1000000000000
1/2
# OU print(x, y, z) 
       
(5, 10.1000000000000, 1/2)
(5, 10.1000000000000, 1/2)
x + y + z 
       
15.6000000000000
15.6000000000000

Verificar o tipo da variável criada

type(x) ; type(y) ; type(z) 
       
<type 'sage.rings.integer.Integer'>
<type 'sage.rings.real_mpfr.RealLiteral'>
<type 'sage.rings.rational.Rational'>
<type 'sage.rings.integer.Integer'>
<type 'sage.rings.real_mpfr.RealLiteral'>
<type 'sage.rings.rational.Rational'>

Verficar se um o valor de uma variável é primo

x.is_prime() 
       
True
True

Impressão de valores de variáveis com print e show semelhante ao fprint do MatLab

%d   Inteiro
%f   Ponto flutuante
%s   String
%r   Racionais
%e   Notação exponencial. Imprime o número em notação científica
%%   Porcentagem. Multiplica o número por 100 e exibe no formato 'f' seguido de um sinal de porcentage

 

 

 

 

 

 

var = 10 print('valor de var é: %d' % var) 
       
valor de var é: 10
valor de var é: 10
var1 = 2/3 var2 = 0.3 var3 = 'texto' print('valor de var1, var2 e var3 são: %r , %f e %s' % (var1,var2,var3)) 
       
valor de var1, var2 e var3 são: 2/3 , 0.300000 e texto
valor de var1, var2 e var3 são: 2/3 , 0.300000 e texto

Variáveis criadas

 
       
Traceback (click to the left of this block for traceback)
...
NameError: name 'variable' is not defined
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "_sage_input_162.py", line 10, in <module>
    exec compile(u'open("___code___.py","w").write("# -*- coding: utf-8 -*-\\n" + _support_.preparse_worksheet_cell(base64.b64decode("dmFyaWFibGU="),globals())+"\\n"); execfile(os.path.abspath("___code___.py"))
  File "", line 1, in <module>
    
  File "/tmp/tmpdAokf8/___code___.py", line 2, in <module>
    exec compile(u'variable
  File "", line 1, in <module>
    
NameError: name 'variable' is not defined

ATENÇÃO! "==" siginifica IGUAL e não uma atribução! Dessa forma x==5 realiza um teste lógico perguntando se o valor da variável X é igual a 5. Se correto imprime true.

x == 5 
       
True
True

Resetar variáveis

Para resetar apenas uma variável reset('variável')

var = 10 
       
var + 2 
       
12
12
reset('var') 
       

Qualquer operação com a variável var ocorrerá erro

var + 2 
       
Traceback (click to the left of this block for traceback)
...
TypeError: unsupported operand parent(s) for '+': '<type
'builtin_function_or_method'>' and 'Integer Ring'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "_sage_input_16.py", line 10, in <module>
    exec compile(u'open("___code___.py","w").write("# -*- coding: utf-8 -*-\\n" + _support_.preparse_worksheet_cell(base64.b64decode("dmFyICsgMg=="),globals())+"\\n"); execfile(os.path.abspath("___code___.py"))
  File "", line 1, in <module>
    
  File "/tmp/tmpSg0fzy/___code___.py", line 3, in <module>
    exec compile(u'var + _sage_const_2 
  File "", line 1, in <module>
    
  File "sage/structure/element.pyx", line 1644, in sage.structure.element.RingElement.__add__ (/home/jmarcellopereira/SageMath/src/build/cythonized/sage/structure/element.c:15785)
  File "sage/structure/coerce.pyx", line 1069, in sage.structure.coerce.CoercionModel_cache_maps.bin_op (/home/jmarcellopereira/SageMath/src/build/cythonized/sage/structure/coerce.c:9736)
TypeError: unsupported operand parent(s) for '+': '<type 'builtin_function_or_method'>' and 'Integer Ring'

Trabalhando com variáveis

1. Exemplo:  Calculo da equação do espaço S(m) = S0+ V*t

# Sendo S0 em metros (m),V em metros por segundo(m/s) e t em segundos (s) S0 = 2 V = 4 t = 10 
       
S = S0 +V*t show("O valor do espaço final é: ",S,"m") 
       

2. Exemplo:

 
       

LISTAS

Método Parâmetros Descrição
append item Acrescenta um novo item no final da lista
insert posição, item Insere um novo item na posição dada
pop nenhum Remove e returno o último item
pop posição Remove e retorna o item da posição.
sort nenhum Ordena a lista
reverse nenhum Ordena a lista em ordem reversa
index item Retorna a posição da primeira ocorrência do item
count item Retorna o número de ocorrências do item
remove item Remove a primeira ocorrência do item

Criação de Listas

Tipos de listas

a = [] # lista vazia b = [1,'sage','math'] # lista heterogênea c = [1,['a','b'],10] # lista aninhada a ; b ; c 
       


Quantidade de elementos de uma lista ou tamanho da lista

len(a) ; len(b) ; len(c) 
       


Acesso e alteração de elementos de uma lista

# acessando o elemento 2 de cada lista. A lista "a" não pode, é vazia b[1] ; c[1] 
       

# alterando o valor do elemento 1 das listas b e c print(b) ; print(c) # antes b[1] = 55 c[1] = 55 b ; c # depois 
       
[1, 'sage', 'math']
[1, ['a', 'b'], 10]

[1, 'sage', 'math']
[1, ['a', 'b'], 10]

Adicionar e remover elementos de uma lista

# adicionando o elemento 10 ao final da lista. Append só coloca um único elemento ao final do vetor a.append(10) a 
       
# adiciona mais de um elemento ao final da lista a.extend([-10,-100]) a 
       
# retirando elemento do final da lista a.pop() a 
       
# inserir um elemento em uma posição específica a.insert(1,500) a 
       
# retirar elemento específico. a.remove(500) a 
       

Busca de elementos e ordenação em uma lista

# retorna o numero de ocorrência da quantidade de vezes que aparece o valor na lista a.count(10) 
       
# Devolve a posição do primeiro valor procurado. Se não existir ocorre erro a.index(-10) 
       
# procura um item na lista e devolve true se existir e false se nao 1000 in a ; 10 in a 
       

# Inverte a ordem dos elementos na lista (sem gerar uma nova lista). a.reverse() a 
       
a.sort() a 
       
# valor máximo da lista max(a) 
       
# valor minimo min(a) 
       
# soma dos elementos de uma lista show(a) sum(a) 
       

# formando pares ordenados show(a) show(b) zip(a,b) 
       


Elementos aletórios

import random aa = [1,2,3,4,5,6,7,8,9] 
       
# elemento aleatório show(random.choice(aa)) 
       
# escolhendo aleatoriamente 5 elementos da lista (random.sample(aa, 5)) 
       

Aplicar os elementos da lista à uma função

dados = [10,20,30,40] 
       
map(lambda x: x^2, dados) 
       
 
       

Fatiamento e concatenação de listas

lista = [1,2,3,4,5,6] 
       
lista[1:3] 
       
[2, 3]
[2, 3]
lista[:4] 
       
[1, 2, 3, 4]
[1, 2, 3, 4]
lista[3:] 
       
[4, 5, 6]
[4, 5, 6]
# Também podemos remover elementos de uma lista atribuindo a lista vazia a eles lista[1:3] = [] lista 
       
[1, 4, 5, 6]
[1, 4, 5, 6]
# concatenação L = ['mecanica','eletrica','computacao'] W = [1001,1002,1003 ] W + L 
       
[1001, 1002, 1003, 'mecanica', 'eletrica', 'computacao']
[1001, 1002, 1003, 'mecanica', 'eletrica', 'computacao']

Sequencias

Uma sequencia é uma lista na forma sequencial na forma de numeros inteiros ou decimais (ponto flutuante) dada pelo comando range. Os comandos vistos (append, remove, ...) também valem para range

S = range(10) 
       
type(S) 
       
<type 'list'>
<type 'list'>
range(5,10) 
       
[5, 6, 7, 8, 9]
[5, 6, 7, 8, 9]
range(0,50,10) 
       
[0, 10, 20, 30, 40]
[0, 10, 20, 30, 40]
range(50,0,-10) 
       
[50, 40, 30, 20, 10]
[50, 40, 30, 20, 10]

Listas do tipo sequencia formada por numeros Decimais (ponto flutuante)

srange(0,1,0.25) 
       
[0.000000000000000, 0.250000000000000, 0.500000000000000,
0.750000000000000]
[0.000000000000000, 0.250000000000000, 0.500000000000000, 0.750000000000000]
# Definindo o tipo RDF, SAGE ganha em velocidade de processamento, pois o RDF é optimiado para trabalhar com numeros reais e implementam uma excelente velocidade de processamento SR = srange(0,1,0.25,universe=RDF, include_endpoint=true ) SR 
       
[0.0, 0.25, 0.5, 0.75, 1.0]
[0.0, 0.25, 0.5, 0.75, 1.0]
SR.append(3) SR 
       
[0.0, 0.25, 0.5, 0.75, 1.0, 3]
[0.0, 0.25, 0.5, 0.75, 1.0, 3]
# adicionando a string 'sage' ao final da sequencia SR.append('sage') SR 
       
[0.0, 0.25, 0.5, 0.75, 1.0, 3, 'sage']
[0.0, 0.25, 0.5, 0.75, 1.0, 3, 'sage']
# removendo o termo de valor 3 da sequencia SR.remove(3) SR 
       
[0.0, 0.25, 0.5, 0.75, 1.0, 'sage']
[0.0, 0.25, 0.5, 0.75, 1.0, 'sage']

Sequencia aleatória

import random 
       
# sequencia entre 0 a 100 de 10 elementos random.sample(range(0, 100), 10) 
       

Listas como matrizes, ou melhor, como tabelas

lisTab = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] lisTab 
       
type(lisTab) 
       

Formatação da lista como matriz

 0 [1 ,  2 ,  3]
 1 [4 ,  5 ,  6]
 2 [7 ,  8 ,  9]
    0    1    2

# lista[linha][coluna] lisTab[0][0] ; lisTab[1][0] ; lisTab[2][1]; lisTab[2] 
       



 
       

TUPLAS E SEQUENCIAS

Uma tupla consiste de um número de valores separados por vírgulas. Tuplas ao contrário das listas são imutáveis - uma vez criadas não podem ser modificadas.

t = 12345,'bom dia', 54321, 'bom dia' T = (10,20, 'bom domingo') t ; T 
       
(12345, 'bom dia', 54321, 'bom dia')
(10, 20, 'bom domingo')
(12345, 'bom dia', 54321, 'bom dia')
(10, 20, 'bom domingo')
type(t); type(T) 
       
<type 'tuple'>
<type 'tuple'>
<type 'tuple'>
<type 'tuple'>
t[1] ; T[2] 
       
'bom dia'
'bom domingo'
'bom dia'
'bom domingo'
# não é possível alterar um valor de item em uma tupla t[1] = 0 
       
Traceback (click to the left of this block for traceback)
...
TypeError: 'tuple' object does not support item assignment
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "_sage_input_58.py", line 10, in <module>
    exec compile(u'open("___code___.py","w").write("# -*- coding: utf-8 -*-\\n" + _support_.preparse_worksheet_cell(base64.b64decode("IyBuw6NvIMOpIHBvc3PDrXZlbCBhbHRlcmFyIHVtIHZhbG9yIGRlIGl0ZW0gZW0gdW1hIHR1cGxhCgp0WzFdID0gMA=="),globals())+"\\n"); execfile(os.path.abspath("___code___.py"))
  File "", line 1, in <module>
    
  File "/tmp/tmppS1IQv/___code___.py", line 4, in <module>
    exec compile(u't[_sage_const_1 ] = _sage_const_0 
  File "", line 1, in <module>
    
TypeError: 'tuple' object does not support item assignment
# Associando cada elemento de uma tupla a variáveis x, y, z = T x ; y ; z 
       
10
20
'bom domingo'
10
20
'bom domingo'
# Devolve o número de vezes que o valor x aparece na lista. t.count('bom dia') 
       
2
2
# Devolve a posição do primeiro valor procurado. t.index('bom dia') 
       
1
1

Fatiamento e concatenação de Tuplas

tupla1 = ('a', 'b', 'c', 'd', 'e') tupla2 = (1,2,3,4,5,6,'bola') 
       
TP = tupla[1:3] TP 
       
Traceback (click to the left of this block for traceback)
...
NameError: name 'tupla' is not defined
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "_sage_input_63.py", line 10, in <module>
    exec compile(u'open("___code___.py","w").write("# -*- coding: utf-8 -*-\\n" + _support_.preparse_worksheet_cell(base64.b64decode("VFAgPSB0dXBsYVsxOjNdCgpUUA=="),globals())+"\\n"); execfile(os.path.abspath("___code___.py"))
  File "", line 1, in <module>
    
  File "/tmp/tmpFgCwZL/___code___.py", line 3, in <module>
    TP = tupla[_sage_const_1 :_sage_const_3 ]
NameError: name 'tupla' is not defined
tupla1 + tupla2 
       
('a', 'b', 'c', 'd', 'e', 1, 2, 3, 4, 5, 6, 'bola')
('a', 'b', 'c', 'd', 'e', 1, 2, 3, 4, 5, 6, 'bola')


DICIONÁRIOS

Um dicionário é uma coleção de elementos onde é possível utilizar como índice qualquer tipo imutável, como strings, tuplas e tipos numéricos. O termo normalmente utilizado para descrever essa associação entre índice e elemento é key / value ou chave / valor. Dicionários2 são definidos entre chaves ( { e } ), as keys separadas dos values por dois-pontos ( : ) e os pares de keys e values separados por vírgulas.

forca_peso_A = {'aceleração': 9.8, 'massa': 80, 'não importa':00} forca_peso_B = dict([('aceleração', 9.8), ('massa', 80), ('não importa',00 )]) forca_peso_C = dict(aceleracao=9.8, massa=80, nao_importa=00) show(forca_peso_A) show(forca_peso_B) show(forca_peso_C) 
       


type(forca_peso_A); type(forca_peso_B); type(forca_peso_C) 
       
<type 'dict'>
<type 'dict'>
<type 'dict'>
<type 'dict'>
<type 'dict'>
<type 'dict'>
# itens do dicionário show(forca_peso_A.items()) 
       
# chaves show(forca_peso_A.keys()) 
       
# valores show(forca_peso_A.values()) 
       
# acessando um valor correspondente a um valor forca_peso_A['massa'] 
       
80
80
# atribuíndo as chaves a variáveis a,b,c= forca_peso_A show(a) show(b) show(c) 
       


# atribuíndo os valores das chaves a variáveis 
       
# apagar um elemento do dicinário del forca_peso_A['não importa'] show(forca_peso_A) 
       
Traceback (click to the left of this block for traceback)
...
KeyError: 'n\xc3\xa3o importa'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "_sage_input_164.py", line 10, in <module>
    exec compile(u'open("___code___.py","w").write("# -*- coding: utf-8 -*-\\n" + _support_.preparse_worksheet_cell(base64.b64decode("IyBhcGFnYXIgdW0gZWxlbWVudG8gZG8gZGljaW7DoXJpbwoKZGVsIGZvcmNhX3Blc29fQVsnbsOjbyBpbXBvcnRhJ10KCnNob3coZm9yY2FfcGVzb19BKQ=="),globals())+"\\n"); execfile(os.path.abspath("___code___.py"))
  File "", line 1, in <module>
    
  File "/tmp/tmp2O2pd8/___code___.py", line 4, in <module>
    del forca_peso_A['não importa']
KeyError: 'n\xc3\xa3o importa'
forca_peso_A.get('aceleração'['massa']) 
       
Traceback (click to the left of this block for traceback)
...
TypeError: string indices must be integers, not str
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "_sage_input_165.py", line 10, in <module>
    exec compile(u'open("___code___.py","w").write("# -*- coding: utf-8 -*-\\n" + _support_.preparse_worksheet_cell(base64.b64decode("Zm9yY2FfcGVzb19BLmdldCgnYWNlbGVyYcOnw6NvJ1snbWFzc2EnXSk="),globals())+"\\n"); execfile(os.path.abspath("___code___.py"))
  File "", line 1, in <module>
    
  File "/tmp/tmpGUciFV/___code___.py", line 2, in <module>
    exec compile(u"forca_peso_A.get('acelera\xe7\xe3o'['massa'])" + '\n', '', 'single')
  File "", line 1, in <module>
    
TypeError: string indices must be integers, not str

VETORES E MATRIZES

Listas em Python puro (sem NumPy ou SymPy) não são vetores matemáticos! 

SAGE também utiliza o NumPy e o SymPy para trabalhar com vetores e matrizes, com a diferença que SAGE simplifica a operação, transformando listas em vetores e matrizes utilizano os comandos vector(lista) e matrix(lista)

VETORES E MATRIZES NO PYTHON

import numpy as np # criação de vetores Vc1 = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8]) Vc2 = np.array([9, 8, 7, 6, 5, 4, 3, 2, 1]) # criação de matrizes Ma = np.array([(1,2), (4,5)]) Mb = np.array([(3,6),(7,9)]) 
       
Vc1; Vc2; Ma; Mb 
       



Utilizando "array", podemos utilizar todas as funções do NumPy e SymPy

Vc1 + Vc2 
       
array([9, 9, 9, 9, 9, 9, 9, 9, 9])
array([9, 9, 9, 9, 9, 9, 9, 9, 9])
Ma + Ma 
       
array([[ 2,  4],
       [ 8, 10]])
array([[ 2,  4],
       [ 8, 10]])

VETORES NO SAGE

Matematicamente, Vetores são diferentes dos arrays ou listas.

criação de vetores e acesso a dados em um vetor

# Criando um vetor a = vector([1,2,3]) a 
       
(1, 2, 3)
(1, 2, 3)
type(a) 
       
<type 'sage.modules.vector_integer_dense.Vector_integer_dense'>
<type 'sage.modules.vector_integer_dense.Vector_integer_dense'>
# quantidade de elementos de um vetor ou tamanho do vetor len(a) 
       
3
3
# alterando valor elemento. NAO USE ".SET(INDICE,VALOR)"! se nao existir o indice no vetor, sage entra em parafuso. a[2] = 5 a 
       
(1, 2, 5)
(1, 2, 5)
# valor maximo max(a) 
       
5
5
# valor minimo min(a) 
       
1
1

Representação Gráfica de vetores

2D

v = vector([1, 0]) u = vector([0, 1]) t = vector([-1,-2]) v;u;t 
       
(1, 0)
(0, 1)
(-1, -2)
(1, 0)
(0, 1)
(-1, -2)
plot(v,color="red", figsize = (4,4),gridlines="minor") + plot(u) + plot(t,color="green") 
       

3D

t = vector([1, 0, 0]) r = vector([0,1, 0]) s = vector([0,0, 1]) t;r;s 
       
(1, 0, 0)
(0, 1, 0)
(0, 0, 1)
(1, 0, 0)
(0, 1, 0)
(0, 0, 1)
plot(t,color="red", figsize = (5,6), mesh=true, thickness=3) + plot(r, thickness=3)+ plot(s,color="green",thickness=3) 
       

Vetor a partir de uma lista

L = [1,2,3] Vl = vector(L) Vl 
       
(1, 2, 3)
(1, 2, 3)

Vetor a partir de uma tupla

T = (1,2,3) Vt = vector(T) Vt 
       
(1, 2, 3)
(1, 2, 3)

MATRIZES NO SAGE

criação de matrizes acessando dados em uma matriz

Ma = matrix([[1,2,3],[4,5,6],[7,8,9]]) Ma 
       
type(Ma) 
       
<type 'sage.matrix.matrix_integer_dense.Matrix_integer_dense'>
<type 'sage.matrix.matrix_integer_dense.Matrix_integer_dense'>
# dimensão da matrix (numero de colunas e numero de linhas) Ma.dimensions() 
       
# quantidade de elementos da matriz Ma.height() 
       
9
9
# coluna indice Ma.columns(); Ma.column(1); Ma.column(2) 
       
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
(2, 5, 8)
(3, 6, 9)
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
(2, 5, 8)
(3, 6, 9)
Ma.rows(); Ma.row(1); Ma.row(2) 
       
[(1, 2, 3), (4, 5, 6), (7, 8, 9)]
(4, 5, 6)
(7, 8, 9)
[(1, 2, 3), (4, 5, 6), (7, 8, 9)]
(4, 5, 6)
(7, 8, 9)
 
       
Ma; Ma.row_ 
       
[1 2 3]
[4 5 6]
[7 8 9]
Traceback (click to the left of this block for traceback)
...
AttributeError: 'sage.matrix.matrix_integer_dense.Matrix_integer_dense'
object has no attribute 'row_'
[1 2 3]
[4 5 6]
[7 8 9]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "_sage_input_97.py", line 10, in <module>
    exec compile(u'open("___code___.py","w").write("# -*- coding: utf-8 -*-\\n" + _support_.preparse_worksheet_cell(base64.b64decode("TWE7IE1hLnJvd18="),globals())+"\\n"); execfile(os.path.abspath("___code___.py"))
  File "", line 1, in <module>
    
  File "/tmp/tmpUrXmoo/___code___.py", line 2, in <module>
    exec compile(u'Ma; Ma.row_
  File "", line 1, in <module>
    
  File "sage/structure/element.pyx", line 413, in sage.structure.element.Element.__getattr__ (/home/jmarcellopereira/SageMath/src/build/cythonized/sage/structure/element.c:4531)
  File "sage/structure/misc.pyx", line 259, in sage.structure.misc.getattr_from_other_class (/home/jmarcellopereira/SageMath/src/build/cythonized/sage/structure/misc.c:1771)
AttributeError: 'sage.matrix.matrix_integer_dense.Matrix_integer_dense' object has no attribute 'row_'
M = matrix(5, 5, lambda i, j: i+(j*random())) M 
       
[                0.0  0.5505670825697023   1.218650578313537
0.09492416228043699   3.669633000204046]
[                1.0  1.4454455260583785   2.506503242404574  
2.198973765385697   2.741693715635255]
[                2.0   2.693216575147518   3.471335868551197  
4.522585123956711   4.597240326886244]
[                3.0   3.625855302616555    4.71222034648939 
3.9051098065358216   5.476133766038717]
[                4.0   4.392366188708687   4.928273033449862  
4.503784145677744   7.628732250610032]
[                0.0  0.5505670825697023   1.218650578313537 0.09492416228043699   3.669633000204046]
[                1.0  1.4454455260583785   2.506503242404574   2.198973765385697   2.741693715635255]
[                2.0   2.693216575147518   3.471335868551197   4.522585123956711   4.597240326886244]
[                3.0   3.625855302616555    4.71222034648939  3.9051098065358216   5.476133766038717]
[                4.0   4.392366188708687   4.928273033449862   4.503784145677744   7.628732250610032]
# vetores de maior valor de cada coluna da matriz min(M); max(M) 
       
(0.0, 0.5505670825697023, 1.218650578313537, 0.09492416228043699,
3.669633000204046)
(4.0, 4.392366188708687, 4.928273033449862, 4.503784145677744,
7.628732250610032)
(0.0, 0.5505670825697023, 1.218650578313537, 0.09492416228043699, 3.669633000204046)
(4.0, 4.392366188708687, 4.928273033449862, 4.503784145677744, 7.628732250610032)
# valores maximos e mínimo da matrix min(min(M)); max(max(M)) 
       
0.0
7.628732250610032
0.0
7.628732250610032
plot(M,cmap='Oranges', colorbar=True,vmin=min(min(M)), vmax=ceil(max(max(M))),figsize = (6,5)) 
       
M.plot(cmap='Reds',vmin=min(min(M)), vmax=ceil(max(max(M))), colorbar=true, figsize=(6,5)) 
       
# Criando uma matriz a partir de uma lista L = [[3,4,5], [6, 7, 8], [9, 0, 1]] Ml = matrix(L) Ml ; Ml[0][2] 
       
[3 4 5]
[6 7 8]
[9 0 1]
5
[3 4 5]
[6 7 8]
[9 0 1]
5
# Criando uma matriz a partir de uma tupla T = ((1,2,3),(4,5,6),(7,8,9)) Mt = matrix(T) Mt ; Mt[0][2] 
       
[1 2 3]
[4 5 6]
[7 8 9]
3
[1 2 3]
[4 5 6]
[7 8 9]
3
 
       
3
3

POLINÔMIOS

reset() 
       

Existem três formas de criar anéis de polinômios.

 
       

Esse comando cria um anel de polinômios e diz para o Sage usar a letra ‘x’ para representar a variável indeterminada  quando imprimir na tela. Todavia, isso não define o símbolo x para uso no Sage, logo você não pode usá-lo para definir um polinômio (como x^2 + 1) pertencente a Pol.

Pol1 = PolynomialRing(QQ, 't') Pol1 
       
Univariate Polynomial Ring in t over Rational Field
Univariate Polynomial Ring in t over Rational Field
type(Pol1) 
       
<class
'sage.rings.polynomial.polynomial_ring.PolynomialRing_field_with_categor\
y'>
<class 'sage.rings.polynomial.polynomial_ring.PolynomialRing_field_with_category'>

Segunda forma

Pol2 = QQ['t'] Pol2 
       
Univariate Polynomial Ring in t over Rational Field
Univariate Polynomial Ring in t over Rational Field

Terceira forma

Pol3.<t> = PolynomialRing(QQ) Pol_3.<t> = QQ['t'] Pol3 ; Pol_3 
       
Univariate Polynomial Ring in t over Rational Field
Univariate Polynomial Ring in t over Rational Field
Univariate Polynomial Ring in t over Rational Field
Univariate Polynomial Ring in t over Rational Field
ExPol = 2*t^2 + 3*t + 4 ExPol 
       
2*t^2 + 3*t + 4
2*t^2 + 3*t + 4
ExPol^2 
       
4*t^4 + 12*t^3 + 25*t^2 + 24*t + 16
4*t^4 + 12*t^3 + 25*t^2 + 24*t + 16
ExPol.factor() 
       
(2) * (t^2 + 3/2*t + 2)
(2) * (t^2 + 3/2*t + 2)
 
       

TIPOS DEFINIDOS PELO PROGRAMADOR

 
       

%%% Fim Tipos de Dados %%%