salve a tutti scrivo per chiedere quà su inforge una soluzione più concisa per un esercizio svolto.
l'esercizio in questione è questo:
il ciclo del paragrafo a cui si riferisce è questo:
e questa è la mia soluzione:
con risultato questo:
so benissimo che la mia soluzione non sia la migliore anche se funziona, inoltre penso di aver scritto una riga esagerata alla riga 24 per questo volevo un attimo vedere quali altre soluzioni c'erano.
grazie in anticipo.
markito
l'esercizio in questione è questo:
il ciclo del paragrafo a cui si riferisce è questo:
Codice:
while True:
print(x)
y = (x + a/x) / 2
if y == x:
break
x = y
e questa è la mia soluzione:
Python:
import math
def mia_radq(a):
x = a/2
while True:
y = (x + a/x) / 2
if y == x:
return round(y,10)
break
x = y
def math_sqrt(n):
return round(math.sqrt(n),10)
def test_radq(n):
e='a'
f='mia_radq(a)'
g='math.sqrt(a)'
h='diff'
b=' '*10
print(e+b+f+b+g+b+h)
print('-'*len(e)+b+'-'*(len(f)-1)+'-'+b+'-'*len(g)+b+'-'*len(h))
c=1.0
while True:
print(str(c)+' '*(10+len(e)-len(str(c)))+str(mia_radq(c))+' '*(10+len(f)-len(str(mia_radq(c))))+str(math_sqrt(c))+' '*(10+len(g)-len(str(math_sqrt(c))))+str(abs(mia_radq(c)-math_sqrt(c))))
if c == n:
break
c=c+1.0
test_radq(9)
con risultato questo:
Codice:
a mia_radq(a) math.sqrt(a) diff
- ----------- ------------ ----
1.0 1.0 1.0 0.0
2.0 1.4142135624 1.4142135624 0.0
3.0 1.7320508076 1.7320508076 0.0
4.0 2.0 2.0 0.0
5.0 2.2360679775 2.2360679775 0.0
6.0 2.4494897428 2.4494897428 0.0
7.0 2.6457513111 2.6457513111 0.0
8.0 2.8284271247 2.8284271247 0.0
9.0 3.0 3.0 0.0
so benissimo che la mia soluzione non sia la migliore anche se funziona, inoltre penso di aver scritto una riga esagerata alla riga 24 per questo volevo un attimo vedere quali altre soluzioni c'erano.
grazie in anticipo.
markito