Mostrando postagens com marcador matrizes. Mostrar todas as postagens
Mostrando postagens com marcador matrizes. Mostrar todas as postagens

sábado, 31 de maio de 2014

Programa R: a dieta de Boldrini

Em uma postagem anterior, foi proposta a resolução de um problema de dietética usando o Maxima como instrumento. Eis uma proposta para resolução valendo-se do programa R. O programa R cada vez mais torna-se uma importante ferramenta, uma vez que é gratuito, de código aberto, e largamente usado para análises estatísticas com alto grau de confiabilidade.


# Vetores por alimento
alimentoI <- c(1,10,1,2,2)
alimentoII <- c(9,1,0,1,1)
alimentoIII <- c(2,2,5,1,2)
alimentoIV <- c(1,1,1,2,13)
alimentoV <- c(1,1,1,9,2)

# Matriz de coeficientes
A <- rbind(alimentoI,alimentoII,alimentoIII,alimentoIV,alimentoV)

# Vetor/matriz de termos independentes
b <- c(170,180,140,180,350)
B <- cbind(b)

# Transpondo A (cada linha deve totalizar a quantidade de um mesmo nutriente)
At <- t(A)

# Calculando Matriz de incógnitas (AX=B)
Vitaminas <- paste("Vitamina",LETTERS[1:5],sep=" ")
X <- data.frame(solve(At,B),row.names=Vitaminas)
X

# A fórmula para cálculo é apenas "solve(At,B)"
# O restante do código serve apenas
# para apresentar melhor os resultados,
# evitando-se confusão entre vitaminas
# de A a E, e alimentos de I a V

Baixar código para R

terça-feira, 20 de maio de 2014

Álgebra Linear: mais um problema com dieta

Sobrevivendo à luta para falar a língua dos Homens, sigo estudando fundamentos de Matemática. Num livro cuja indicação colhi no site de um professor da Universidade de São Paulo, deparei-me com mais um problema relacionado à atuação do nutricionista. Aplicando conhecimentos que venho estudando na Álgebra Linear, fiquei feliz por ter conseguido resolver esse, aproveitando para aplicar o uso do software Maxima.


O problema gera um sistema linear de cinco incógnitas. Sua solução é viável a partir do escalonamento da matriz completa do sistema. Buscando-se uma alternativa ao escalonamento, considerei um teorema para sistemas lineares homogêneos, que prova que a matriz das incógnitas ou solução (X) é igual ao produto interno da matriz inversa dos coeficientes (A^-1) pela matriz dos termos independentes (B). Com o software Maxima fazendo o trabalho braçal de cálculos foi fácil chegar à conclusão de que X = (10,10,20,20,10). Eis o código adotado:

A: matrix([1,9,2,1,1],[10,1,2,1,1],[1,0,5,1,1],[2,1,1,2,9],[2,1,2,13,2]);
Ainv: invert(A);
b: matrix([170],[180],[140],[180],[350]);
x: Ainv.b;

O código para resolução do problema válido para o programa R foi publicado em outra postagem.

O problema abre portas para um trabalho comum de nutricionistas, que acabam desde sua graduação levando muito tempo em tentativas, erros e acertos para ajuste dietético de planos alimentares.

Fonte: BOLDRINI, José Luiz et al. Álgebra Linear. São Paulo: Harper & Row do Brasil, 1980.