Professional Documents
Culture Documents
DE EQUACOES LINEARES
// fib2
// C:/Usurios/Quezada/Documentos/
// julianquezada/estacio/numerico
// Sistemas Lineares de Equacoes
function sistema1
// x+2y=5
// 4x+5y=14
// a solucao x=1 e y=2
a=[1 2;
4 5]
b=[5;14]
sol1=a^(-1)*b
disp(sol1,'Soluo de Gauss-Jordan')
sol2=(a'*a)^(-1)*a'*b
disp(sol2,'Soluo da Pseudo Inversa')
endfunction
// teste ate aqui.
// depois continua a acrescentar o resto
// calcular a equacao da reta
// que melhor aproxima os pontos
// P1(1,2), P2(3,4) e P3(5,7)
// eq reta y=a*x+b
// o problema se reduz a calcular
// os coeficientes a e b da reta
// P1 2=a*1+b
// P2 4=a*3+b
// P3 7=a*5+b
// sistema
function sistema2
// sistema generico ma*x = mb
ma=[1 1;
3 1;
5 1]
mb=[2;4;7]
// Nao tem soluo de Gauss-Jordan
sol2=(ma'*ma)^(-1)*ma'*mb
disp(sol2,'Soluo da Pseudo Inversa')
// sol(1) o coeficiente a da reta
// sol(2) o coeficiente b da reta
// grafico dos pontos dados
plot2d([1 3 5], [2 4 7],-2)
// grafico da reta calculada
xg=[0:6]
yg=sol2(1)*xg+sol2(2)
plot2d(xg,yg,2)
xgrid(3)
endfunction
// acrecentado mais pontos
// P4(6,8)
// P5(2,3)
function sistema3
// sistema generico ma*x = mb
ma=[1 1;
3 1;
5 1;
6 1;
2 1]
mb=[2;4;7;8;3]
sol2=(ma'*ma)^(-1)*ma'*mb
disp(sol2,'Soluo da Pseudo Inversa')
// sol(1) o coeficiente a da reta
// sol(2) o coeficiente b da reta
// grafico dos pontos dados
plot2d([1 3 5 6 2], [2 4 7 8 3],-2)
// grafico da reta calculada
xg=[0:10] // aumento um pouco o
dominio
yg=sol2(1)*xg+sol2(2)
plot2d(xg,yg,2)
xgrid(3)
endfunction
function sistema4
// sistema generico ma*x = mb
x=[1 3 5 6 2] // x dos pontos
y=[1 4 7 8 3] // y dos pontos
ma=[x' ones(x')] // matriz de
coeficientes
mb=y'
sol2=(ma'*ma)^(-1)*ma'*mb
disp(sol2,'Soluo da Pseudo Inversa')
// sol(1) o coeficiente a da reta
// sol(2) o coeficiente b da reta
// grafico dos pontos dados
plot2d(x, y,-2)
// grafico da reta calculada
xg=[0:10] // aumento um pouco o
dominio
yg=sol2(1)*xg+sol2(2)
plot2d(xg,yg,2)
xgrid(3)
endfunction
function sistema5
// sistema generico a*x = b
a=[5 1 0;
1 5 1;
0 1 5]
b=[7;14;16]
d=a.*eye(3,3)// matriz diagonal
n=a-d // matriz nao diagonal
u=[0;0;0] // chute inicial ( o x)
for i=1:10 // metodo de parada burro
u=d^(-1)*(b-n*u)
disp(u)
end
solgj=(a'*a)^(-1)*a'*b // para conferir
disp(solgj,'Soluo da Pseudo Inversa')
// u(1) x
// u(2) y
// u(3) z
endfunction
function sistema6
a=[5 1 0;
1 5 1;
0 1 5]
b=[7;14;16]
d=a.*eye(3,3)
n=a-d
u=[0;0;0]
while norm(a*u-b)>10^(-6)
u=d^(-1)*(b-n*u)
disp(u)
end
endfunction
// Clculo Numrico
// C:Usurio/Quezada/Documentos/
// julianquezada/estacio/numerico
// Criamos uma biblioteca de funes
// em um so arquivo usando editor do
Scilab.
// Depois de salvar usando o editor
// de texto do Scilab, devemos
// executar ele. Nessa hora ele
// revisa a sintaxis.
// Conserte os possiveis erros e
// agora so chamar do Scilab pelo nome.
//-------------------------------------------
// desenho de cculo
// equao crculo: x^2+y^2=r^2
function circulo1 // nome sem espacos em
branco
r=1 // raio
x=[-r:0.1:r] // dominio
y=(r^2-x.^2).^(1/2) // imagem
plot2d(x,y,2) // parte superior
plot2d(x,-y,2) // parte inferior
xgrid(3) // grade
endfunction
// teste esta funo antes de continuar
// depois acrescenta o resto.
function circulo2 // nome sem espacos em
branco
// coordenadas polares, angulos em
radianos
teta=[0:%pi/100:2*%pi]; // vetor dos
angulos
x=cos(teta) // teta em radianos
y=sin(teta) //
plot2d(x,y,5) //
xgrid(3) // grade
endfunction
function circulo3 // nome sem espacos em
branco
teta=[0:%pi/100:2*%pi]; // vetor dos
angulos
for r=0.1:0.05:1 // [inicio:incremento:fim]
x=r*cos(teta)
y=r*sin(teta)
plot2d(x,y,5)
xgrid(3)
end
endfunction
//---------------------------------------------
// x.^2 calcula o quadrado dos elementos
do vetor
// x^2 calcula o quadrado da matriz, desde
que seja
// uma matriz quadrada.
// x.^(1/2) calcula a rais dos elemetos de x
// teta=[0:.1:6] vetor comeca em 0, va ate
6
// e va de 0.1 em 0.1 = [0 0.1 0.2 0.3 etc.
Pseudo inversa, Roger Penrose.
Soluo para matriz quadrada=
Q^(1)*b GAUSS JORDAN
Soluo para matriz no quadrada
(2*a)^(-1)Q*b
// desenho de um circulo
for r=2:0.1:10 // raio
x=[-r:0.1:r]// dominio
y=(r^2-x.^2).^(1/2)// imagem superior
plot2d(x,y,5)// imagem superior
plot2d(x,-y,5)//imagem inferior
xgrid(3)
end
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
// sistema de equaes
// generico a*x=b => sol=a^(-1)*b
a=[3 4 1;
0 1 1;
5 -1 0;
1 1 1]
b=[14;5;3;6]
//sol=a^(-1)*b
sol=(a'*a)^(-1)*a'*b // Soluo PSEUDO
INVERSA
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
// gauss-jacobi
a=[3 2 1;
1 5 0;
1 1 6]
// eye (3,3) matriz identidade de 3x3
d=a.*eye(3,3)// produto a elemento
n=a-d
b=[10;11;21]
x=[0;0;0] // chute inicial
for i=1:20
x=d^(-1)*(b-n*x)
end
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
// gauss-jacobi
a=[3 2 1;
1 5 0;
1 1 6]
// eye (3,3) matriz identidade de 3x3
d=a.*eye(3,3)// produto a elemento
n=a-d
b=[10;11;21]
x=[0;0;0] // chute inicial
while norm(a*x-b)>10^(-8)
x=d^(-1)*(b-n*x)
end