Sunteți pe pagina 1din 3

NUMERICO EXEMPLOS DE SISTEMAS

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

S-ar putea să vă placă și