| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Índice] | [ ? ] |
| 60.1 Funções e Variáveis Definidas para lsquares |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Índice] | [ ? ] |
Essa variável é usada pelas funções lsquares e plsquares para armazenar o Coeficiente de Determinação que mede o melhor do ajuste. Esse intervalo de 0 (nenhuma correlação) a 1 (correlação exata).
Quando plsquares for chamada com uma lista de variáveis independentes, DETCOEF é escolhida para uma lista de Coeficientes de Determinação. Veja plsquares para detalhes.
Veja também lsquares.
Ajuste múltiplo de equações não lineares de uma tabela de dados pelo
método dos "mínimos quadrados". Mat é uma matriz contendo os dados,
VarList é uma lista de nomes de variáveis (um para cada coluna de Mat),
equação é a equação a ser ajustada (essa equação deve estar na forma:
depvar=f(indepvari,..., paramj,...), g(depvar)=f(indepvari,..., paramj,...)
ou na forma g(depvar, paramk,...)=f(indepvari,..., paramj,...)), ParamList é a
lista de parâmetros para obter, e EsperadosList é uma lista opcional de aproximações
iniciais para os parâmetros; quando esse último argumento estiver presente, mnewton é usado
em lugar de solve com o objetivo de pegar os parâmetros.
A equação pode ser completamente não linear com relação às variáveis
independentes e à variável dependente.
Com o objetivo de usar solve(), as equações devem ser lineares ou polinomiais com
relação aos parâmetros. Equações como y=a*b^x+c podem ser ajustadas para
[a,b,c] com solve se os valores de x forem inteiros positivos pequenos e
existam poucos dados (veja o exemplo em lsquares.dem).
mnewton permite ajustar uma equação não linear com relação aos
parâmetros, mas um bom conjunto de aproximações iniciais deve ser fornecido.
Se possível, a equação ajustada é retornada. Se existir mais de uma solução, uma lista de equações é retornada. O Coeficiente de Determinação é mostrado para informar sobre o melhor do ajuste, de 0 (nenhuma correlação) a 1 (correlação exata). Esse valor é também armazenada na vriável global DETCOEF.
Exemplos usando solve:
(%i1) load("lsquares")$
(%i2) lsquares(matrix([1,2,0],[3,5,4],[4,7,9],[5,8,10]),
[x,y,z], z=a*x*y+b*x+c*y+d, [a,b,c,d]);
Determination Coefficient = 1.0
x y + 23 y - 29 x - 19
(%o2) z = ----------------------
6
(%i3) lsquares(matrix([0,0],[1,0],[2,0],[3,8],[4,44]),
[n,p], p=a4*n^4+a3*n^3+a2*n^2+a1*n+a0,
[a0,a1,a2,a3,a4]);
Determination Coefficient = 1.0
4 3 2
3 n - 10 n + 9 n - 2 n
(%o3) p = -------------------------
6
(%i4) lsquares(matrix([1,7],[2,13],[3,25]),
[x,y], (y+c)^2=a*x+b, [a,b,c]);
Determination Coefficient = 1.0
(%o4) [y = 28 - sqrt(657 - 216 x),
y = sqrt(657 - 216 x) + 28]
(%i5) lsquares(matrix([1,7],[2,13],[3,25],[4,49]),
[x,y], y=a*b^x+c, [a,b,c]);
Determination Coefficient = 1.0
x
(%o5) y = 3 2 + 1
Exemplos usando mnewton:
(%i6) load("lsquares")$
(%i7) lsquares(matrix([1.1,7.1],[2.1,13.1],[3.1,25.1],[4.1,49.1]),
[x,y], y=a*b^x+c, [a,b,c], [5,5,5]);
x
(%o7) y = 2.799098974610482 1.999999999999991
+ 1.099999999999874
(%i8) lsquares(matrix([1.1,4.1],[4.1,7.1],[9.1,10.1],[16.1,13.1]),
[x,y], y=a*x^b+c, [a,b,c], [4,1,2]);
.4878659755898127
(%o8) y = 3.177315891123101 x
+ .7723843491402264
(%i9) lsquares(matrix([0,2,4],[3,3,5],[8,6,6]),
[m,n,y], y=(A*m+B*n)^(1/3)+C, [A,B,C], [3,3,3]);
1/3
(%o9) y = (3.999999999999862 n + 4.999999999999359 m)
+ 2.00000000000012
Para usar essa função escreva primeiro load("lsquares"). Veja também DETCOEF e mnewton.
Ajuste de polinômios de várias variáveis de uma tabela de dados pelo método dos
"mínimos quadrados". Mat é uma matriz contendo os dados, VarList é uma lista de nomes de variáveis (um nome para cada coluna de Mat, mas use "-" em lugar de nomes de variáveis para colunas de Mat), depvars é o
nome de uma variável dependente ou uma
lista com um ou mais nomes de variáveis dependentes (os quais nomes podem estar em VarList), maxexpon é o expoente máximo opcional para cada variável independente (1 por padrão), e maxdegree é o argumento opcional
grau máximo do polinômio (maxexpon por padrão); note que a soma dos expoentes de cada termo deve ser menor ou igual a maxdegree, e se maxdgree = 0 então nenhum limite é aplicado.
Se depvars é o nome de uma variável dependente (fora de uma lista), plsquares retorna o polinômio ajustado. Se depvars for uma lista de uma ou mais variáveis dependentes, plsquares retorna uma lista com
o(s) polinômio(s) ajustado(s). Os Coeficientes de Determinação são mostrados com o objetivo de informar sobre o melhor do ajuste, cujo intervalo vai de 0 (nenhuma correlação) a 1 (correlação exata). Esses valores são também são
também armazenados na variável
global DETCOEF (uma lista se depvars for também uma lista).
Um simples exemplo de ajuste linear de várias variáveis:
(%i1) load("plsquares")$
(%i2) plsquares(matrix([1,2,0],[3,5,4],[4,7,9],[5,8,10]),
[x,y,z],z);
Determination Coefficient for z = .9897039897039897
11 y - 9 x - 14
(%o2) z = ---------------
3
O mesmo exemplo sem restrições de gra:
(%i3) plsquares(matrix([1,2,0],[3,5,4],[4,7,9],[5,8,10]),
[x,y,z],z,1,0);
Determination Coefficient for z = 1.0
x y + 23 y - 29 x - 19
(%o3) z = ----------------------
6
Quantas diagonais possi um polígono de N lados tem? What polynomial degree should be used?
(%i4) plsquares(matrix([3,0],[4,2],[5,5],[6,9],[7,14],[8,20]),
[N,diagonais],diagonais,5);
Determination Coefficient for diagonais = 1.0
2
N - 3 N
(%o4) diagonais = --------
2
(%i5) ev(%, N=9); /* Testando para um polígono de 9 lados - o eneágono */
(%o5) diagonals = 27
Quantos caminhos fazemos para colocar duas raínhas sem que elas estejam ameaçadas em um tabuleiro de xadrez n x n ?
(%i6) plsquares(matrix([0,0],[1,0],[2,0],[3,8],[4,44]),
[n,posicoes],[posicoes],4);
Determination Coefficient for [posicoes] = [1.0]
4 3 2
3 n - 10 n + 9 n - 2 n
(%o6) [posicoes = -------------------------]
6
(%i7) ev(%[1], n=8); /* Tesando para um tabuleiro de (8 x 8) */
(%o7) posicoes = 1288
Em exemplo com seis variáveis dependentes:
(%i8) mtrx:matrix([0,0,0,0,0,1,1,1],[0,1,0,1,1,1,0,0],
[1,0,0,1,1,1,0,0],[1,1,1,1,0,0,0,1])$
(%i8) plsquares(mtrx,[a,b,_And,_Or,_Xor,_Nand,_Nor,_Nxor],
[_And,_Or,_Xor,_Nand,_Nor,_Nxor],1,0);
Determination Coefficient for
[_And, _Or, _Xor, _Nand, _Nor, _Nxor] =
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
(%o2) [_And = a b, _Or = - a b + b + a,
_Xor = - 2 a b + b + a, _Nand = 1 - a b,
_Nor = a b - b - a + 1, _Nxor = 2 a b - b - a + 1]
Para usar essa função escreva primeiramente load("lsquares").
| [ << ] | [ >> ] | [Top] | [Contents] | [Índice] | [ ? ] |
This document was generated by Robert Dodier on Dezembro, 29 2019 using texi2html 1.76.