Raiz quadrada em Shell-Script [RESOLVIDO]

13. Explicacao

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 10/09/2007 - 11:36h

Tive que fazer isto em openssl usando big numbers (de 512 bits) pois a calculadora do openssl nao tem raiz quadrada.

Exitem muitas formas de calcular a raiz quadrada, esta que fiz a versão em bash é a que considerei mais fácil de implementar. Trata-se de uma APROXIMAÇÃO e, PIOR, no meu caso, apenas da parte inteira, pois a calculadora do bash não aceita frações (e se for usar o bc, bom, ai perde a graça!)

A função vai convergindo e a cada calculo se aproxima da raiz. Sai do laço quando o resultado anterior é igual ao atual ou quando fizer 3000 interações.

Veja, não serve para coisa séria, é apenas para responder a pergunta se daria para fazer em PURO BASH. O ÚNICO comando externo que usei que não é do bash é o echo (pois tem o /bin/echo)

Só para curiosidade :-D


  


14. Agora com casas decimais

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 10/09/2007 - 11:42h

Mas não vale!
Usou o dc que é um binário!!
Mas só para ver que o método FUNCIONA!

(é o N quem se quer extrair a raiz quadrada. Pode alterar)

N=1344; MAX=5000; I=0; R=$(( $N / 2)); while (( $I < $MAX )) ; do I=$(( $I + 1));ANT=$R; R="`echo "16k $N $R / $R + 2/ p"|dc`"; if [ $ANT == $R ]; then break;fi;done; echo "Raiz quadrada de $N eh $R ($I interacoes)"


PS: Claro que a solução por perl é MUITO mais cômoda.


15. equação do segundo grau

André Luiz Coelho
coelhocta

(usa Conectiva)

Enviado em 08/10/2008 - 09:18h

#!/bin/bash

echo "Equação do Segundo Grau"
echo "coloque os valores de A B C"

echo "Digite o valor de A"
read A
echo "Ditite o valor de B"
read B
echo "Digite o valor de C"
read C

DELTA=`echo "($B*$B)-4*$A*$C" | bc`
echo "O valor de Delta é $DELTA"

RQ=`echo $(python -c "print $DELTA ** 0.5")`

#colocar um teste pra ver se o delta é negativo!!!

X1=`echo "(- $B + $RQ) / 2 * $A" | bc`
X2=`echo "(- $B - $RQ) / 2 * $A" | bc`

echo "O valor de X1 é $X1"
echo "O valor de X2 é $X2"



16. re: Agora com casas decimais

sombriks
sombriks

(usa Slackware)

Enviado em 19/02/2009 - 17:19h

esse algoritmo de aproximação é incrível mesmo; há relatos do uso dele dentro da engine do quake3 e dizem que ficou mais rápido que a função em assembly equivalente, o.0

acho que o material é justamente esse:

http://www.codemaestro.com/reviews/9




17. Re: Raiz quadrada em Shell-Script [RESOLVIDO]

Iago Lira
iagolira

(usa Debian)

Enviado em 11/10/2016 - 09:28h

fabio escreveu:

Você pode usar a calculadora bc pra fazer isso. No shell script, faça assim:

$var = `echo "4 ^ 2" | bc`

Ou seja, $var recebeu o resultado de 4 elevado ao quadrado.

Um abraço.




Mas há uma diferença monstruosa entre estes métodos, observe as saídas:

usuário@usuários:~$ time echo $(perl -e "print 4 ** 1000")
inf

real 0m0.006s
user 0m0.000s
sys 0m0.004s



usuário@usuário:~$ time echo $(python -c "print 4 ** 1000")
114813069527425452423283320117768198402231770208869520047764273682576626139237031385665948631650626991844596463898746277344711896086305533142593135616665318539129989145312280000688779148240044871428926990063486244781615463646388363947317026040466353970904996558162398808944629605623311649536164221970332681344168908984458505602379484807914058900934776500429002716706625830522008132236281291761267883317206598995396418127021779858404042159853183251540889433902091920554957783589672039160081957216630582755380425583726015528348786419432054508915275783882625175435528800822842770817965453762184851149029376

real 0m0.031s
user 0m0.020s
sys 0m0.008s




01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts