Radice quadrata

Stato
Discussione chiusa ad ulteriori risposte.

Oromis92

Utente Silver
22 Dicembre 2007
102
12
2
84
scrivere un programma che calcoli la radice quadrata di un numero inserito dall'utente
SENZA funzioni predefinite, of course XD

io ho usato il metodo babilonese

[perl]
Codice:
#!/usr/bin/perl
print "inserisci un numero: ";
$z = <stdin>; chomp $z;
if ($z == 0) {
die "sqrt(0) = 0\n";
}
if ($z < 0) {
die "impossibile calcolare la radice di un numero negativo\n";
}
$x = rand($z);
for $i (0..65536) {
$x = ($x+($z/$x))/2;
}
die "sqrt($z) = $x\n";

nota: il numero che ho usato 65536 è *casuale* , giusto per avere un grado elevato di precisione
 
Codice:
#include <iostream>

using namespace std;

double sqrt(double num, int precision = 0);

int main()
{
    cout<<sqrt(2);
    return 0;
}

double sqrt(double num, int precision) {
    double x=1;
    if(!precision) precision = 4;
    while(precision--)
        x=(x/2+(num/(2*x)));
    return x;
}
p.s. Ma te non lo indenti mai il codice? :omfg:
 
veramente no XD
con l'evidenziazionedella sintassi di Kate non ne ho bisogno, è semplicemente perfetta :asd:
 
Io ve ne posso fare uno in turbo pascal xd dato che è uno tra i linguaggi piu facili che conosco:

Codice:
PROGRAM RADICE_QUADRATA;
USES WINCRT;
VAR A,R:REAL;
BEGIN
CLRSCR;
WRITE ('DIMMI IL VALORE DEL NUMERO CHE VUOI TROVARE LA RADICE= ');
READLN(A);
R:=SQRT(A);
WRITE ('LA RADICE DEL TUO NUMERO E''',A:4:3);
READLN;
END.

Finito spero che non abbia errori, sto imparando un po a programmare anche io...
 
io sono contrario all'utilizzo dei metodi già preparati come sqrt()...a sto punto l'esercizio non ha scopo!
 
Esatto, lo scopo è creare un programma che calcoli la radice quadrata SENZA funzioni predefinite.
 
@system: Di che utilità sarebbe così? La sqrt() già esiste...

Il metodo usato dalla maggior parte dei linguaggi in ogni caso per il calcolo di radici, esponenziali, logaritmi e in generale funzioni matematiche non elementari, è lo sviluppo in serie di Taylor. In un intorno di x0=1 la funzione radice è approssimabile in serie di Taylor con il polinomio

286v28g.png


Le due funzioni nell'intorno di 1 sono tranquillamente approssimabili

syxmj7.png
 
BlackLight ha detto:
@system: Di che utilità sarebbe così? La sqrt() già esiste...

Il metodo usato dalla maggior parte dei linguaggi in ogni caso per il calcolo di radici, esponenziali, logaritmi e in generale funzioni matematiche non elementari, è lo sviluppo in serie di Taylor. In un intorno di x0=1 la funzione radice è approssimabile in serie di Taylor con il polinomio

286v28g.png


Le due funzioni nell'intorno di 1 sono tranquillamente approssimabili

syxmj7.png
[ot] capiro mai qualcosa? :chesofatt: [/ot]
 
Mia soluzione in python con diversi gradi di precisione:
Codice:
#!/usr/bin/python
from random import randint;
def Sqrt(z,p=2):
	x = randint(0,z);
	if p == 2:
		for i in range(0,65536):
			x = (x + (z / x)) / 2;
	elif p == 1:
		for i in range(0,25536):
			x = (x + (z / x)) / 2;
	elif p == 0:
		for i in range(0,5536):
			x = (x + (z / x)) / 2;
	else:
		return 0;
	return x;
 
Stato
Discussione chiusa ad ulteriori risposte.