Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
O help (ajuda) é uma maneira de conseguir ajuda caso você saiba exatamente o
tópico a respeito do qual necessita de informações. Existem pelo menos duas formas de
acessá-lo:
1ª Na aba Help (ou Ajuda), conforme ilustração abaixo;
>?plot;
Alguns comandos do MAPLE são de uso específico, por isso são agrupados em pacotes
(packages). Para ativar um pacote do maple, utiliza-se o comando: with (nome do
pacote), conforme o exemplo:
>with(linalg);
>restart;
O MAPLE aceita a troca de linhas dentro de um mesmo comando, para tal utiliza-se as
teclas SHIFT e ENTER simultaneamente na hora em que se deseja trocar de linha.
Ao final de cada comando pode-se utilizar ponto e vírgula (;) ou dois pontos (:). A
utilização do ponto e vírgula tornará visível ao usuário o resultado do comando utilizado,
no caso de utilizar dois pontos a visualização será ocultada. Exemplo:
>A=Matrix([[1,2,3],[4,5,6],[7,8,9]):
>A=Matrix([[1,2,3],[4,5,6],[7,8,9]);
>restart;
>assume(n,integer);
>cos(n*Pi);
( -1 )n~
>cos((2*n-1)*Pi);
-1
>cos(2*n*Pi);
1
Dado um número complexo, podemos encontrar sua parte real e imaginária digitando os
seguintes comandos:
>Re(2+7*I);
>Im(2+7*I);
Outro comando, que é bastante utilizado, é o solve, através do qual se pode encontrar
soluções de equações ou de sistemas de equações. Veja o exemplo:
>solve(x^2–5*x+6, x);
Exercício:
1. Utilize o comando solve para encontrar a solução do sistema de equações abaixo e
depois comente a solução encontrada.
1.4 FUNÇÕES
Uma maneira para definirmos uma função no MAPLE é usarmos o operador seta (->, isto
é, sinal de menos seguido do sinal de maior). Por exemplo:
>f:=x->x^3+3;
>f(2);
>g(x):=x^2+2*x+3;
>g(3);
>solve (g(x), x);
>g:=x->x^2+2*x+3;
>g(3);
Observe que da primeira forma como a função g(x) foi definida acima, somente é
possível encontrar valores de x para os quais , através do uso do
comando solve. Porém, se pedirmos para o MAPLE calcular o valor da função g(x) em
algum dos pontos do domínio, em 3 por exemplo, obteremos como resposta
simplesmente g(3).
Abaixo, apresentamos uma breve lista da sintaxe de algumas funções matemáticas no
MAPLE (lembre-se que o MAPLE é escrito em inglês):
funções trigonométricas: sin(x), cos(x), tan(x), cot(x), sec(x), csc(x);
funções trigonométricas inversas: arcsin(x), arccos(x), arctan(x), arccot(x),
arcsec(x), arccsc(x);
função exponencial de base e: exp(x);
função logarítmica de base e: ln(x);
função logarítmica de base a, sendo a>0 qualquer: log[a](x);
funções hiperbólicas: sinh(x), cosh(x), tanh(x), sech(x), csch(x), coth(x);
funções hiperbólicas inversas: arcsinh(x), arccosh(x), arctanh(x), arcsech(x),
arccsch(x), arccotgh(x).
Para acessar informações sobre essas e outras funções no MAPLE, utiliza-se o comando
“?inifcn”.
É possível definirmos também funções “por partes” através do comando “piecewise”. Veja
um exemplo de uma função assim definida:
>plot(alpha,x=-2..2,thickness=4);
1.5 SOMATÓRIOS
1.6 PRODUTÓRIO
1.8 DERIVADAS
Exercícios:
1. Calcule os resultados de cada uma das expressões abaixo:
a) ∑
b)
c)
CAPÍTULO 2. ÁLGEBRA LINEAR
>restart:
>with(LinearAlgebra):
>A:=Matrix(2,3,[1,2,3,4,5,6]);
>B:=Matrix(3,2,[[a,3],[5,f]]);
>C:=Matrix([[x,y],[z,w]]);
>v:=Vector(3,[a,b,c]);
>restart:
>with(linalg):
>A:=matrix(2,3,[1,2,3,4,5,6]);
>v:=vector(3,[a,b,c]);
>restart:
>with(LinearAlgebra):
>N:=Matrix(2,4);
>ZeroMatrix(3);
>ZeroVector(2);
>Iden:=IdentityMatrix(4);
>restart:
>with(linalg):
>N:=matrix(2,4,0);
>G:=Matrix(4,4,shape=identity);
>restart:
>with(LinearAlgebra):
>A:=Matrix(2,2,[[1,2],[3,4]]);
>B:=Matrix(2,2,[[-5,6],[7,-8]]);
>a:=Vector(2,[[1],[-1]]);
>b:=Vector(2,[[2],[-3]]);
>C:=A+B;
>F:=A+(-B);
>a+b;
>a+(-b);
>G:=Multiply(A,B);
>H:=Multiply(A,a);
DETERMINANTE
>Determinant(B);
TRAÇO DA MATRIZ
>Trace(B);
>Transpose(B);
MATRIZ INVERSA
>K:=MatrixInverse(B);
Vamos verificar se esta é realmente a matriz inversa de B:
>Multiply(B,K);
>Multiply(K,B);
>L:=Matrix(2,2,[[2,3],[4,6]]);
>MatrixInverse(L);
Error, (in LinearAlgebra:-LA_Main:-MatrixInverse) singular
matrix
Neste caso, o MAPLE acusa que a matriz C é singular, ou seja, seu determinante é zero, o
que leva a matriz a não ser invertível. De fato:
>Determinant(L);
>R:=Matrix(3,3,[[5,2,7],[-3,10,2],[0,-1,-7]]);
>DeleteColumn(R,2);
>DeleteRow(R,[1,2]);
Vamos agora trabalhar com matrizes cujas entradas são funções de uma variável:
>restart:
>with(LinearAlgebra):
>A:=Matrix(2,2,[[x^2,3],[5,cos(x)]]);
>subs(x=0,A);
>f:=x^3+1;
>subs(x=3,f);
>Map(diff,A,x);
>Map(int,A,x);
Dada uma matriz A, o posto da matriz pode ser calculado utilizando o comando Rank(A),
no pacote LinearAlgebra. Vejamos alguns exemplos:
>restart:
>with(LinearAlgebra):
>B:=Matrix(3,3,[3,-2,5,13,-3,-4,10,7,9]);
>Rank(B);
>C:=Matrix(2,2,[1,2,4,8]);
>Rank(C);
Vamos agora apresentar comandos que forneçam produto escalar, produto vetorial,
norma e ângulo entre dois vetores. Dados dois vetores, , vejamos os comandos
relativos a estas operações:
>with(LinearAlgebra):
>a:=Vector(3,[1,2,3]);
>b:=Vector(3,[-1,2,-1]);
PRODUTO ESCALAR
>DotProduct(a,b);
PRODUTO VETORIAL
>CrossProduct(a,b);
>VectorNorm(a,2);
>VectorNorm(b,2);
O ângulo entre dois vetores a e b pode ser encontrado a partir do produto interno da
seguinte maneira:
| || |
O MAPLE possui um comando específico para calcular o ângulo entre dois vetores a,b:
>theta:=VectorAngle(a,b);
>restart:
>with(LinearAlgebra):
>A:=Matrix(3,3,[[2,0,0],[-4,3,0],[-1,1,1]]);
>Determinant(A-lambda*IdentityMatrix(3));
>p(lambda):=CharacteristicPolynomial(A,lambda);
>solve(p(lambda)=0);
>Eigenvalues(A);
>Eigenvalues(A)[1];
>Eigenvalues(A)[2];
>Eigenvalues(A)[3];
2.4.2 AUTOVETORES
>(v,e):=Eigenvectors(A);
Exercício:
1. Verifique que as soluções encontradas anteriormente satisfazem, de fato, .
>v1:=DeleteColumn(e,[2,3]);
>Multiply(A,v1);
>v2:=DeleteColumn(e,[1,3]);
>Multiply(A,v2);
>v3:=DeleteColumn(e,[1,2]);
>Multiply(A,v3);
Observe que , e .
2.5 NULLSPACE DE UMA MATRIZ A
Por definição, Nullspace é o subespaço gerado pelos vetores que são solução de ,
onde é um vetor.
>restart:
>with(LinearAlgebra):
>A:=Matrix(2,2,[[2,4],[5,10]]);
>NullSpace(A);
>B:=Matrix(3,3,[[2,2,3],[6,6,9],[3,3,6]]);
>NullSpace(B);
>restart:
>with(LinearAlgebra):
>vv:=Vector(4,a);
>v[1]:=Vector(4,[[1],[2],[3],[4]]):
>v[2]:=Vector(4,[[3],[-2],[4],[-7]]):
>v[3]:=Vector(4,[[1],[2],[9],[3]]):
>ord:=GramSchmidt([v[1],v[2],v[3]]);
>s:=GramSchmidt({v[1],v[2],v[3]},normalized);
Exercício:
1. Aplique os comandos necessários para calcular a norma de um vetor e o produto
interno para verificar se, no exemplo anterior, os vetores encontrados são unitários e
ortogonais entre si.
>DotProduct(s[1],s[1]);
>DotProduct(s[2],s[2]);
>DotProduct(s[3],s[3]);
Daí, concluímos que os vetores obtidos são unitários.
>DotProduct(s[1],s[2]);
>DotProduct(s[1],s[3]);
>DotProduct(s[2],s[3]);
Onde os são escalares distintos. Então possui uma representação matricial diagonal
por blocos, onde cada elemento diagonal é um bloco de Jordan . Para cada ,
o bloco correspondente possui as seguintes propriedades:
(i) Existe ao menos um de ordem ; todos os outros são de ordem .
(ii) A soma das ordens dos é .
(iii) A quantidade dos é a multiplicidade geométrica de .
(iv) A quantidade dos blocos de uma ordem qualquer possível é unicamente
determinada por .
Observe o exemplo:
> restart:
> with(LinearAlgebra):
> T:=Matrix(2,2,[3,1,2,2]);
> p(x):=factor(CharacteristicPolynomial(T,x));
>m(x):=factor(MinimalPolynomial(T,x));
>J:=JordanForm(T);
Exercícios:
1. Verifique utilizando o comando Eigenvalues que no exemplo anterior os autovalores da
matriz T são os elementos da diagonal da matriz J.
>Eigenvectors(T);
2. Verifique se a matriz T, que tem como linhas os vetores (3, 1, -1), (2, 2, -1) e (2, 2, 0),
é diagonalizável calculando os polinômios mínimo e característico da matriz do operador.
Em seguida, calcule a forma canônica de Jordan de T.
>restart:
>with(LinearAlgebra):
>T:=Matrix(3,3,[3,1,-1,2,2,-1,2,2,0]);
>p(x):=factor(CharacteristicPolynomial(T,x));
>m(x):=factor(MinimalPolynomial(T,x));
>J:=JordanForm(T);
3. Dada a matriz T cujas linhas são os vetores (1, 1, 0), (–1, 3, 0) e (–1, 1, 2), calcule os
polinômios característico e mínimo e conclua se a matriz é diagonalizável. Depois,
calcule a Forma Canônica de Jordan.
>restart:
>with(LinearAlgebra):
>T:=Matrix(3,3,[1,1,0,-1,3,0,-1,1,2]);
>p(x):=factor(CharacteristicPolynomial(T,x));
>m(x):=factor(MinimalPolynomial(T,x));
>J:=JordanForm(T);
> restart:
>with(LinearAlgebra):
> J:=Matrix(2,3,[5,4,3,2,1,0]);
> GaussianElimination(J);
> K:=Matrix(2,2,[3,4,5,6]);
> GaussianElimination(K);
2.9 RESOLUÇÃO DE SISTEMAS
Modelando situações reais podemos nos deparar com diferentes tipos de sistemas. Aqui,
serão abordados alguns métodos para resolução de sistemas lineares. Por exemplo, vamos
descobrir quais são os dois números em que o dobro do maior somado com o triplo do
menor resulta 16, e o maior deles somado com o quíntuplo do menor dá 1.
Para resolver esse problema escrevemos cada afirmação como uma equação matemática.
Assim se chamarmos de o número maior, o número menor, temos o seguinte
sistema de equações:
[ ] [ ] [ ]
sendo
[ ] [ ], [ ]
Sabemos que o sistema tem uma única solução se o determinante da matriz for
diferente de zero. Vejamos:
>restart:
>with(LinearAlgebra):
>A:=Matrix([[2,3],[1,5]]);
>b:=Vector([[16],[1]]);
>Determinant(A);
Como sabe-se que a matriz é inversível, desta forma podemos calcular:
>x:=Multiply(MatrixInverse(A),b);
>LinearSolve(A,b);
2.9.1 FATORAÇÃO LU
>(P,L,U):=LUDecomposition(A,method='GaussianElimination');
A matriz P, chamada matriz de permutação, determina o pivoteamento realizado. Agora,
vamos resolver os sistemas determinados pela fatoração:
>Pb:=Multiply(P,b);
>y:=LinearSolve(L,Pb);
>x:=LinearSolve(U,y);
Como a matriz permutação altera as linhas do sistema, a mesma deve ser multiplicada
pelo vetor a fim de realizar a mesma permutação neste vetor. Como no exemplo
anterior a matriz de permutação é a identidade as linhas do vetor não serão alteradas,
mas é importante prestar atenção a este detalhe, pois P=I não é um caso geral.
>A:=Matrix(3,3,[2,1,1,1,3,1,1,1,4]);
>G:=LUDecomposition(A,method='Cholesky');
>Gt:=Transpose(G);
>Multiply(G,Gt);
CAPÍTULO 3. EQUAÇÕES DIFERENCIAIS ORDINÁRIAS
Para declarar uma EDO precisamos identificar a ordem de cada derivada presente na
equação. Por exemplo, se quisermos declarar a derivada de ordem de uma função
no MAPLE, escrevemos:
>diff(y(t),t$n);
dn
y( t )
dtn
>edo:=diff(y(t),t$2)-5*y(t)=2*cos(t);
d
2
edo := 2 y( t ) 5 y( t )2 cos ( t )
dt
> ci := y(0)=1,D(y)(1)=(0);
ci := y( 0 )1, D( y )( 1 )0
Em geral, o comando para resolver uma EDO é o dsolve. Agora resolvendo o Problema
de Valor Inicial acima citado:
> with(DEtools):
> edo:=diff(y(t),t,t)-diff(y(t),t)=y(t);
d2
edo := 2 y( t ) y( t ) y( t )
d
dt dt
> ci:=y(0)=1,D(y)(1)=(0);
ci := y( 0 )1, D( y )( 1 )0
> dsolve({edo,ci},y(t));
5 ( 5 1 ) t
2 1/2 2
2e e
y( t )
5 5 5
1/2 2 1/2 2 2 1/2
3e e 5 2 e
5 ( 5 1 ) t
1/2 2 2
2e e
5 5 5
1/2 2 2 1/2 2 1/2
2 e 3 e e 5
Utilizando o comando dsolve obtemos uma solução para a equação diferencial, porém
este comando não identifica o método utilizado. Para isso utiliza-se o comando infolevel.
O valor identificado no comando infolevel varia nos níveis:
- Nível 2,3: informações gerais, incluindo a técnica ou algoritmo usado.
- Nível 4,5: informações mais detalhadas sobre como o problema está sendo resolvido.
> with(DEtools):
> edo:=diff(y(t),t)-5*y(t)=2*cos(t):
> infolevel[dsolve]:=4:
> dsolve(edo,y(t));
5 1 (5 t)
y( t ) cos( t ) sin( t )e _C1
13 13
> with(DEtools):
> edo:=diff(y(x),x)=(3*x^2+4*x+2)/(2*(1-y(x))):
> infolevel[dsolve]:=4:
> dsolve(edo,y(x));
Para resolvermos as equações por fator integrante usamos o comando dsolve, mas se
desejarmos saber qual é o fator integrante na Equação Diferencial, usamos o comando
intfactor.
Exemplo:
> with(DEtools):
> edo:=diff(y(t),t)+3*t^2*y(t)=0;
edo := y( t ) 3 t 2 y( t )0
d
dt
> dsolve(edo,y(t));
( t3 )
y( t )e _C1
> intfactor(edo);
( t3 )
e
Exemplo:
> with(DEtools):
> edo:=diff(y(t),t)=3*t^4/(y(t));
d 3 t4
edo := y( t )
dt y( t )
> separablesol(edo,y(t));
30 t 5150 _C1 30 t 5150 _C1
{ y( t ) , y( t ) }
5 5
Exemplo:
> with(DEtools):
> edo:= diff(y(x),x$1)=(x^2+x*y(x)+y(x)^2)/x^2;
d x2x y( x )y( x )2
edo := y( x )
dx x2
> genhomosol(edo,y(x));
{ y( x )tan( ln( x )_C1 ) x }
Exemplo:
> with(DEtools):
> edo:=diff(y(x),x$1)= 2*exp(2*x)+4*y(x)-3;
d ( 2 x)
edo := y( x )2 e 4 y( x )3
dx
> exactsol(edo,y(x));
2 3 4
{ y( x )( e x ) _C1 ( e x ) }
4
Exemplo:
> with(DEtools):
> edo:=x^4* diff(y(x),x)+y(x)^3=x*y(x);
edo := x4 y( x ) y( x )3x y( x )
d
x
d
> bernoullisol(edo,y(x));
1
1
x2 x2
42 e 1
erf x4 e
_C1 x x
x ,
y( x ) 1 1
x2 x2
2e 1
erf x2 e _C1 x
x
1
1
x2 x2
42 e 1
erf x4 e
_C1 x x
x
y( x )
1
1
x2 x2
2e
erf x2 e
1
_C1 x
x
Para plotar o campo de direções de Edo utilizamos o comando dfieldplot. Vamos através
de um exemplo construir o campo de direções.
Exemplo (Boice 2006): Seja uma população de presas dada pela equação diferencial
> with(DEtools):
> edo:=diff(p(t),t)=0.5*p(t)-450;
d
edo := p( t )0.5 p( t )450
dt
> dfieldplot(edo,{p(t)},t=-
3..3,p=800..1000,color=magenta,title=`Campo de direções da
equação diferencial`);
Vejamos outros exemplos:
> with(DEtools):
> edo:=diff(y(t),t)+(2*y(t))=+4*(exp(3*t));
edo := y( t ) 2 y( t )4 e
d (3 t)
dt
> dfieldplot(edo,{y(t)},t=-4..4,y=-4..4,color=blue,title=`Campo
de direções da equação diferencial`);
Exemplo:
> DEplot(edo,y(t),t=-3..3,[[y(-1)=-1]],y=-3..3);
Exercício: Plote o campo de direções da
> with(DEtools):
> edo:=diff(y(x),x)=(3*x+y(x))/(2*(exp(x))+y(x));
d 3 xy( x )
edo := y( x ) x
dx 2 e y( x )
> dfieldplot(edo,{y(x)},x=-5..5,y=-
5..5,color=magenta,dirgrid=[50,50],title=`Campo de direções da
equação diferencial`);
> DEplot(edo,y(x),x=-7..7,[[y(0)=-1]],colour=magenta,
linecolor=[blue], y=-5..5);
3.3 PLANOS DE FASE
O plano de fase será construído com a utilização do comando phaseportrait, no qual são
explicitadas as condições iniciais que desejamos plotar as soluções, como segue:
> phaseportrait(diff(y(x),x)=y(x)-x,y(x),x=-1..1,
[[y(0)=0],[y(0)=1],[y(0)=-1]],colour=magenta,
linecolor=[black,blue,navy]);
> phaseportrait(Pi*diff(y(x),x)=5*y(x)-x^2-1,y(x),x=-3..3,
[[y(0)=0]],y=-3..3,colour=navy,linecolor=cyan,stepsize=5);
Exercício: Plote o plano de fase do EDO:
̇
com as condições iniciais: . Utilize o Título “Plano de
FAse”, como cor das soluções defina, azul, preto e vermelho, e como cor do campo de
direções defina verde:
> with(DEtools):
> edo:=diff(y(x),x)=-y(x)-x^2;
d
edo := y( x )y( x )x2
dx
> phaseportrait(D(y)(x)=-y(x)-x^2,y(x),x=-1..2.5,
[[y(0)=0],[y(0)=1],[y(0)=-1]],title=`Plano de
fase`,colour=green,linecolor=[blue,black,red]);
CAPÍTULO 4. PROGRAMAÇÃO
Neste capítulo procura-se apresentar alguns dos comandos básicos para programação, e
alguns exemplos de programas simples.
O comando for é uma estrutura de programação que permite realizar iterações, “loop”.
Este comando é dado da seguinte forma:
for i from a to b do
comando a ser realizado
od;
Sendo:
i: variável do loop;
a: valor inicial;
b: valor final.
n1 := 2
n2 := 4
n3 := 6
n4 := 8
n5 := 10
n6 := 12
n7 := 14
n8 := 16
n9 := 18
n10 := 20
Exercício: Utilizando o comando para obter os alguns números pares, obtenha agora os
números ímpares com :
Exemplo: Dada uma matriz (2x2), queremos somar 1 em cada uma de suas
coordenadas utilizando o comando for.
> A:=Matrix(2,2,[a,b,c,d]);
A :=
a b
c d
> for i from 1 to 2 do
for j from 1 to 2 do
A[i,j]:=A[i,j]+1
od;
od;
print(A);
a2 b2
c2 d2
4.1.2 COMANDO: IF
Exemplo:
> x[1]:=0;
x1 := 0
> if x[1]<=3 then n:=2 fi;
n := 2
O próximo exemplo é simples, mas posteriormente nos dará a ideia de como definir uma
função.
> x:=3;
x := 3
> if x<=2 then f:=x+2;
else f:=x;
fi;
f := 3
> restart:with(LinearAlgebra):
> A:=Matrix(2,2,[2,4,-1,9]);
A :=
2 4
-1 9
> B:=Matrix(2,2,a);
B :=
a( 1, 1 ) a( 1, 2 )
a( 2, 1 ) a( 2, 2 )
> for i from 1 to 2 do
for j from 1 to 2 do
if A[i,j]<=0 then
B[i,j]:=0;
else
B[i,j]:=A[i,j];
fi;
od;
od;
print(B);
2 4
0 9
4.1.3 COMANDO: WHILE
Com o comando while permite também criarmos uma espécie de “loop”. Para este
comando utilizamos a seguinte estrutura.
while do b od;
onde:
: condição;
b: comando a ser executado.
> s:=0;
s := 0
> while s<=15 do
s:=s+1
od;
s := 1
s := 2
s := 3
s := 4
s := 5
s := 6
s := 7
s := 8
s := 9
s := 10
s := 11
s := 12
s := 13
s := 14
s := 15
s := 16
> modulo:=proc(x)
if x<=0 then
Mod(x):=-x
else
Mod(x):=x
fi;
end:
> modulo(2);
2
> modulo(-4);
4
> aritmetica:=proc(v1,v2,v3)
(v1+v2+v3)/3
end:
> aritmetica(2,3,4);
3
> aritmetica(10,5,16);
31
3
> geometrica:=proc(v1,v2,v3,v4)
evalf(v1*v2*v3*v4)^(1/4)
end:
> geometrica(2,3,4,5);
3.309750920
> geometrica(1,8,4,16);
4.756828460
> soma:=proc(n)
local s,i;
s:=0;
for i from 1 to n do
s:=s+i
od;
end:
> soma(5);
15
> soma(340);
57970
Neste caso o comando local declara as variáveis que serão utilizadas no interior do
programa.
> f:=proc(x)
if x<-2 then x
else
if -2<=x and x<0 then x+1
else x^2
fi;
fi;
end:
> f(-5);
-5
> f(0);
0
Exemplo 6: Criar um programa que permita calcular o n-ésimo termo da sequência de
Fibonacci dado pela recursivamente por:
> SeqFibonacci:=proc(n,integer)
if n=0 then 0
else
if n=1 then 1
else SeqFibonacci(n-1)+SeqFibonacci(n-2)
fi;
fi;
end:
> SeqFibonacci(4);
3
> SeqFibonacci(11);
89
> with(LinearAlgebra):
> transpostaconjugada:=proc(A,m,n)
local At, i,j;
At:=matrix(n,m,a);
for i from 1 to n do
for j from 1 to m do
At[i,j]:=conjugate(A[j,i])
od;
od;
print(At);
end:
> B:=Matrix([ [I,2],[3,4] ]);
B :=
I 2
3 4
> transpostaconjugada(B,2,2);
I 3
2 4
Exemplo 8: Dadas duas matrizes e de ordem , criar um procedimento que
realize a soma destas matrizes.
> with(LinearAlgebra):
> Soma:=proc(A,B,m,n)
local M, i,j;
M:=Matrix(m,n,a);
for i from 1 to m do
for j from 1 to n do
M[i,j]:=A[i,j]+B[i,j]
od;
od;
print(M);
end:
> m:=2:
n:=3;
n := 3
> A:=Matrix(m,n,[[1,2,0],[0,2,1]]);
A :=
1 2 0
0 2 1
> B:=Matrix(m,n,[[1,1,1],[5,2,0]]);
B :=
1 1 1
5 2 0
> Soma(A,B,m,n);
2 3 1
5 4 1
BIBLIOGRAFIA