Raizes de equações do 2o grau no dc

Publicado por Marcos Paulo Ferreira (última atualização em 03/07/2011)

[ Hits: 4.120 ]

Homepage: http://daemoniolabs.wordpress.com

Download raizesdc.sh




O script abaixo realiza o cálculo das raízes reais de uma equação do segundo grau. O interessante é que o cálculo todo é feito pelo dc e sua sintaxe é estranha e na maioria das vezes ilegível à primeira vista.

Para usar esse script não tem mistério algum, só digitar o nome do script e fornecer os coeficientes:

$ ./raizesdc.sh
coeficiente a: 2
coeficiente b: -6
coeficiente c: -20
raiz1: -2
raiz2: 5

Referências:
[1] http://www.vivaolinux.com.br/artigo/A-magica-do-dc/
[2] $ man dc

  



Esconder código-fonte

#!/bin/bash
# Autor: Daemonio (Marcos Paulo Ferreira)
# Contato: undefinido gmail com
#
# Script que calcula as raizes reais de
# uma equacao do segundo grau.
#
# Fri Jun 10 11:28:04 BRT 2011
#

function calc_raiz_dc() {
echo $1 $2 $3 'sc _1 * sb sa _4 la lc * * lb 2 ^ + v sd lb ld + 2 la * / lb ld - la 2 * / f' | dc
}
# Coeficientes
coe_a=
coe_b=
coe_c=

# Leitura dos coeficientes
read -p 'coeficiente a: ' coe_a
read -p 'coeficiente b: ' coe_b
read -p 'coeficiente c: ' coe_c

# Troca o sinal '-' por '_'
coe_a=${coe_a/-/_}
coe_b=${coe_b/-/_}
coe_c=${coe_c/-/_}

# Chama a funcao e formata a saida com o sed
calc_raiz_dc $coe_a $coe_b $coe_c | sed 'N;s/^/raiz1: /;s/\n/&raiz2: /'

Scripts recomendados

Windows 2KX LDAP attributes

Firewall básico

Conversor de logs do squid

Script para limpeza de arquivos temporários em Sabayon Linux

Instalando o REAPER no Ubuntu e Elementary OS


  

Comentários
[1] Comentário enviado por daemonio em 05/07/2011 - 19:26h

Por padrão as raizes serão somente inteiras, pois o valor de k do dc por padrão é zero. Para o script também gerar raizes decimais, basta acrescentar a escala do resultado e a letra k. Assim ó:

Troque na função calc_raiz_dc():

echo $1 $2 $3 'sc _1 * .............

Por:

echo $1 $2 $3 '5k sc _1 * .................

Ou seja, acrescente um 5k após as aspas. Esse 5 é a escala do resultado, que indica a quantidade de algarismos após a vírgula.

t+


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts