Introdução ao Scilab
Prof. Santos Alberto Enriquez Remigio
Faculdade de Matemática-Universidade Federal de Uberlândia
Tópicos
Scilab
Operações básicas de calculadora no Scilab Definição de polinômios no Scilab
Definição de vetores e matrizes no Scilab Editor SciNotes do Scilab
Comandos de programação Funções
Scilab
1. Scilab é um ambiente de programação numérica bastante flexível I Gratuito
I É um ambiente poderoso para geração de gráficos bi-dimensionais e tri-dimensionais, inclusive com animação
I Implementa diversas funções para manipulação de matrizes.
I Permite trabalhar com polinômios, sistemas linares e grafos I Permite o acesso a rotinas escritas nas linguagens Fortran e C
Operações básicas com Scilab
1. Declarando variávies reais ou complexas (=): a = 2; b = -1. 2. Operadores com números:
I Soma (+), subtração (-)
I Mutiplicação (*)
I Divisão: / (slash). b/a = b ∗ (a−1)
I Divisão: \ (backslash). b\a= (b−1)a
I Radiciação (sqrt()) I Potenciação (^)
3. Variáveis especiais: I π (%pi), e (%e), i (%i)
Exemplos práticos. Faça os seguintes cálculos na
consola do Scilab
1. Calcule 10π 2. e2 3. O resíduo de 48/11 4. −3 10+ 3 −5 5. √2 +√32 − 4.0234.0236. Dados a = 2, b = −3 e c = 5. Calcule as expressões: 1) c + c − ab
a − b − c 2) a −b
3− a − c
ac − b 7. Calcule o valor de: √2πe
Polinômios no Scilab
Definição dos polinômios. Duas maneiras:
1. Passando os coeficientes do polinômio: NomeVarPolin= poly([a0a1a2 an], ’NomeVarIndepend’, ’coef’);
2. Passando as raízes do polinômio: NomeVarPolin = poly([r1r2 rn],’NomeVarIndepend’)
Operações:
I Soma e diferença: + e
-I Multiplicação e divisão comum: * e /
I Divisão à esquerda: \
Entenda-se por p\q a operação p−1q
I Potenciação: ^
Valor numérico de um polinômio: horner(NomeVarPolin, valorVarIndepen)
Exemplos práticos
1) Defina o seguinte polinômio no Scilab: P(s) = s3+ s2− s + 2
2) Defina o seguinte polinômio no Scilab, sabendo que possui unicamente as seguintes raízes: x1= 1, x2= 2 e x3= 3.
Vetores
Para definir um vetor criamos um nome e lhe asignamos entre colchetes os elementos do vetor.
NomeVetor = [ elementos]
Para vetor linha os elementos do vetor são separados pelo símbolo “,” ou por um espaço vazio e, para vetor coluna os elementos do vetor são separados pelo símbolo “;”
Exemplos:
I Vetor coluna de 3 elementos: v = [ 1; 3; -1];
Vetores
Operações básicas com vetores
1. Operadores:
I Soma e subtração: + e
-I Multiplicação por escalar: *
2. Produto escalar de dois vetores coluna u e v : ’* . Aplica-se assim: u0∗ v
Geração de vetores
Vamos usar o operador : e a função predefinida linspace para gerar vetores:
v=a:b retorna uma sequência de números começando em a e terminando em b com espaçamento 1 (a e b inteiros) v=a:h:b retorna uma sequência de números começando em a e
terminando em b com tamanho de passo h v=linspace(a,b) retorna uma sequência de números com 100 pontos
igualmente espaçados entre a e b
v=linspace(a,b,n) retorna uma sequência com n pontos igualmente espaçados entre a e b
Exemplos práticos
. Defina os seguintes vetores no Scilab: u = (2, 3, 4)v = (−1, 0, 1 w = (−1, 0, 1)
Exercício prático
Veja o que acontece com os seguintes comandos no Scilab: 1) z= linspace(0,1,11)
2) v = -6:3:9
3) w = 5:12
Matrizes
Para definir uma matriz criamos um nome e lhe asignamos entre colchetes os elementos.
NomeMatriz = [ elementos]
Usamos o símbolo “,” ou espaço vazio para separar os
elementos de uma linha e o símbolo “;” para separar as linhas
da matriz.
Exemplo matriz 3x4:
a = [ 1 4 -1 0; 2 3 4 5; 1, 2, 8, 9]
Operações
I soma e subtração: + e
-I Multiplicação por um escalar: *
Definição de matrizes especiais de tamanho nxm
Matriz com elementos igual a um
:em que todos os elementos são iguais a um: a = ones(n,m)
Matriz nula
: a = zeros(n,m)Operações básicas com matrizes quadradas
1. Operações
I soma e subtração: + e -I Multiplicação por um escalar: *
I Potenciação: ^
I Transposta: ’
I Determinante: det(NomeMatriz)
I Inversa: inv(NomeMatriz) 2. Definição de matrizes especiais
I Matriz identidade de tamanho n: a = eye(n,n)
Multiplicação de matrizes quadradas
Operadores
I Multiplicação própria de matrizes: * Aplicação: A*B, onde A ∈ M(n, m) e B ∈ M(m, p)
I Multiplicação e divisão elemento a elemento: .* e ./ Aplicação: A.*B (ou A./B), sendo A e B∈ M(n, m)
I Potenciação de cada elemento da matriz: .^ Aplicação: A.^p, onde A ∈ M(n.m) e p ∈ N
I Divisão à esquerda: Usa-se para expressar o produto A−1b. Nesse
caso, usa-se o operador \ I A\B significa inv(A) * B
I Divisão a esquerda elemento a elemento A .\ B 6= inv(A) .* B
Exemplos práticos
1. Defina uma matriz identidade de 5x5 no Scilab.
2. Inicializar todos os elementos de uma matriz A igual a zero. 3. Calcular a potência An, onde:
A = 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 para n = 1, 2, 3 , 4, 5, 6.
Tamanho de variáveis
size(A) Retorna o número de linhas e colunas da matriz A length(x) Retorna o número de elementos do vetor x
Editor SciNotes do Scilab
Objetivos do editor
1. Escrever comandos a serem executados no Scilab 2. Depurar algoritmos
Extensão para os arquivos editados no Scipad. Alguns destes, são: 1. .sce (Arquivo geral de comandos)
Comandos de leitura e impressão de dados numéricos
I
input
: Prompt para entrada de dados. ExemploI Exemplo. n = input(“ ingresse o valor do número de iterações “);
I
printf
: Emulador da função da linguagem C printf I Exemplo. printf(“ Valor de n = %d \n”, n);I
//
: Marca o início de um comentário. As barras, tanto quanto o restante dos caracteres até o fim das linhas não são interpretados.I Exemplo. // Duas barras em Scilab me permitiu colocar este texto I
clear
: Cancela variáveis declaradas.I
clc
: Limpa janela de comandosI
clf
: Limpa ou reajusta a (janela da) figura gráfica corrente para valores padrões;I
scf
(n): Abre janela de apresentação de figura gráfica com identificador de valor n.Exemplos práticos
Abrir um arquivo no editor de comandos e escrever: // Meu primeiro programa
// ************************ // Autor:
// Data:
// Objetivo: Mostrar o uso de alguns comandos do Scilab no editor de comandos
x=1, y=2
Funções predefinidas no Scilab: básicas
abs(x) retorna o valor absoluto de x: |x|
sign(x) retorna o sinal de x, 1 se x>0, -1 se x<0, e 0 se x=0 sqrt(x) retorna a raiz quadrada de x
exp(x) retorna a função exponencial de x: ex
log(x) retorna o logaritmo natural de x: ln(x) log10(x) retorna o logaritmo de x na base 10: log10x
Funções predefinidas no Scilab: trigonométricas
sin(x) retorna o sen(x), para x em radianos sind(x) retorna o sen(x), para x em graus sexagesimais asin(x) retorna o arcoseno(x) em radianos
cos(x) retorna o cos(x), para x em radianes cosd(x) retorna o cos(x), para x em graus sexagesimais acos(x) retorna o arcocos(x) em radianos
Funções predefinidas no Scilab: arredondamento
round(x) retorna o inteiro mais perto de x
fix(x) retorna o inteiro mais perto de x em direção a zero: arredonda acima para números negativos arredonda abaixo para números positivos floor(x) retorna o maior inteiro abaixo de x
Definição de função usando o comando
deff
deff (’[y1,y2,...,yn] =nome_funcao(x1,x2,...,xm)’,’y1=regra1(x1,x2,...,xm), y2=regra2(x1,x2,...,xm),...,yn=regran(x1,x2,...xm)’)
Example
Definir a função y = x2 no Scilab e calcular o valor numérico dessa
função para x=2.
−− > deff(’vary=funcaoQuadraticaSimples(varx)’,vary=varx^2’); −− > y = funcaoQuadraticaSimples(2) \\
y = 4.
Definição de função usando o comando
function
function [y1, y2, ....,yn] =nome_funcao(x1, x2,...,xn)
instrucao_1 instrucao_2 .. . instrucao_n endfunction
Example
Definir a função y = x2 no Scilab e calcular o valor númerico dessa
Comandos de programação para iterações
Comandos para iterações1. O loop for
for variavel = vetor_linha instrucao_1 instrucao_2 .. . instrucao_n end 2. O loop while while condicao instrucao_1 instrucao_2 .. . instrucao_n end
Exemplos práticos
Comandos de programação para condicionais
Comandos condicionais 1. Comando if-then-else if condicao then sequencia_de_instrucoes_1 else sequencia_de_instrucoes_2 end 2. Comando select-case select variavel_de_teste case expressao_1 sequencia_de_instrucoes_1 case expressao_2 sequencia_de_instrucoes_2 .. . ... ... case expressao_n sequencia_de_instrucoes_n else sequencia_de_instrucoes_n+1 endOperadores de comparação
Maior que a>b Maior e igual que a>=b
Menor que a<b Menor ou igual que a<=b
Igual que a==b
E a & b
ou a | b
Lembrando o conceito do gráfico de uma função
1. Seja f : A ⊆ R → R uma função de uma variável, seu gráfico é: Graf (f ) = {(x, y )/x ∈ Domf = A y = f (x )} ∈ R2 2. E g : A ⊆ R2→ R uma função de duas variáveis, seu gráfico é:
Graf (g ) = {(x , y , z)/(x , y ) ∈ Domf = B e z = g (x, y )} ∈ R3 3. Se o domínio da função é finito, então o gráfico da função é um
Observação
1. Se o domínio de uma função f de R em R é um intervalo, isto é, f : [a, b] → R, então o domínio da função f é um conjunto infinito. 2. O computador não pode representar todos os números (conjunto
infinito) do intervalo [a, b].
Portanto, o esboço do gráfico da função f no computador exige a escolha de um subconjunto de pontos do conjunto Graf (f ),isto é, conjunto da forma:
Um exemplo de escolha de pontos do Graf (f )
Problema. Esboçar o gráfico da função f : [a, b] → R.
1. Escolha de pontos xi. Supondo-se que se deseja escolher pontos igualmente espaçados em [a,b], pode-se seguir o seguinte roteiro:
1.1 Defina dx = (b − a)/n, com n sendo o número de subintervalos
1.2 Defina o vetor de abscisas x no Scilab por: x = [a : dx : b]
1.3 Calcule o vetor y associado ao vetor x por: y = f (x)
2. Aplique o comando plot2d do scilab aos vetores x e y , como se segue: plot2d(x,y)