E-school di Arrigo
Amadori
Calcolo numerico
Serie in R
Viene approssimata la serie
troncandola al valore di
prescelto.
Operatori ammessi :
| + somma | sin() seno | asin() arco seno | sinh() seno iperbolico | asinh() inverso del seno iperbolico | pow(base, esponente) potenza |
| - sottrazione | cos() coseno | acos() arco coseno | cosh() coseno iperbolico | acosh() inverso del coseno iperbolico | exp() esponenziale |
| * moltiplicazione | tan() tangente | atan() arco tangente | tanh() tangente iperbolica | atanh() inverso del coseno iperbolico | log() logaritmo naturale |
| / divisione | abs() valore assoluto | ||||
| . segno per decimali | sqrt() radice quadrata | ||||
| sgn() segno | |||||
| fatt() fattoriale |
Sorgenti PHP :
serie.php
<html>
<head>
<title>Serie in R</title>
</head>
<body>
<script language="php">
error_reporting (E_ALL ^ E_NOTICE);
// parametri in input
//
// $funzione = a(n)
// $na = inizio indice n
// $nb = fine indice n
//
// parametri in output
//
// calcola l'integrale col metoto dei trapezi iterando fino alla precisione data
//
// inserisce tutti gli include (funzioni esterne)
if (is_integer(strpos($SERVER_SOFTWARE, "Win")))
{
include("..\Routines\sgn.php");
include("..\Routines\fatt.php");
include("..\Routines\contrFunz.php");
}
else
{
include("../Routines/sgn.php");
include("../Routines/fatt.php");
include("../Routines/contrFunz.php");
}
// controlli vari
if ($funzione == "")
{
echo "Attenzione !!! Manca a(n) !!!";
return;
}
$funzione = trim($funzione);
$contr = contrFunz($funzione);
if ($contr == "1")
{
echo "Attenzione !!! Il termine a(n) presenta spazi bianchi, impossibile procedere !!!";
return;
}
if ($contr == "2")
{
echo "Attenzione !!! Il termine a(n) presenta il carattere ^, impossibile procedere !!! Usare la funzione pow(... , ...) !!!";
return;
}
$funzioneold = $funzione;
$funzione = str_replace("atanh", "aaa", $funzione);
$funzione = str_replace("atan", "bbb", $funzione);
$funzione = str_replace("tanh", "ccc", $funzione);
$funzione = str_replace("tan", "ddd", $funzione);
$funzione = str_replace("asinh", "eee", $funzione);
$funzione = str_replace("asin", "fff", $funzione);
$funzione = str_replace("sinh", "ggg", $funzione);
$funzione = str_replace("sin", "hhh", $funzione);
$funzione = str_replace("sgn", "iii", $funzione);
$funzione = str_replace("n", "u", $funzione);
$funzione = str_replace("aaa", "atanh", $funzione);
$funzione = str_replace("bbb", "atan", $funzione);
$funzione = str_replace("ccc", "tanh", $funzione);
$funzione = str_replace("ddd", "tan", $funzione);
$funzione = str_replace("eee", "asinh", $funzione);
$funzione = str_replace("fff", "asin", $funzione);
$funzione = str_replace("ggg", "sinh", $funzione);
$funzione = str_replace("hhh", "sin", $funzione);
$funzione = str_replace("iii", "sgn", $funzione);
$na = 1;
// definizione funzione a(n)
$f = $funzione;
$f = str_replace("u", '$x', $f);
// calcola somma
$somma = 0;
for ($i = $na; $i <= $nb; $i++)
{
$x = $i;
eval("\$ff = @($f);");
$somma = $somma + $ff;
}
// ritorna risultato
echo "a(n) = " . $funzioneold . "<p>";
echo "Somma = " . $somma . "<p>";
</script>
</body>
</html>
sgn.php
<script language="php">
error_reporting (E_ALL ^ E_NOTICE);
function sgn($x)
{
// funzione sgn
// x = variabile indipendente
if ($x > 0)
{
return +1;
}
if ($x == 0)
{
return 0;
}
if ($x < 0)
{
return -1;
}
} // fine sgn()
</script>
fatt.php
<script language="php">
// questa č una copia esatta della routine fattoriale() per avere un nome pių
corto !!!!!!!!
error_reporting (E_ALL ^ E_NOTICE);
function fatt($n)
{
// calcolo del fattoriale n!
// n = valore in input di cui calcolare il fattoriale
// fornisce in output il fattoriale di n = n!
If ($n == 0)
{
$fatt = 1;
return $fatt;
}
If ($n < 0)
{
echo "Attenzione !!! Valore negativo, impossibile procedere !!! <p>";
return NULL;
}
If (intval($n) <> $n)
{
echo "Attenzione !!! Valore non intero, impossibile procedere !!! <p>";
return NULL;
}
$fatt = 1;
For ($i = 1; $i <= $n; $i++)
{
$fatt = $fatt * $i;
}
return $fatt;
} // fine fatt()
</script>
contrFunz.php
<script language="php">
error_reporting (E_ALL ^ E_NOTICE);
function contrFunz($funz)
{
// controllo formale digitazione funzione
// viene controllata l'esistenza dei seguenti caratteri : blank, ^
// se tali caratteri vengono trovati, vine settata la variabile d'uscita
// $funz = funzione da controllare
$errore = "";
if (is_numeric(strpos($funz, ' ')))
{
$errore = "1";
}
if (is_numeric(strpos($funz, '^')))
{
$errore = "2";
}
return $errore;
} // fine contrFunz
</script>