Cifre significative,media

Devo fare una tabella ( oramai uso php&mysql per tutto ) perchè sono molto pigro e non mi va di fare i calcoli a mano quindi mi sono fatto uno script che mi calcola :

ampere

errore su ampere

volt

errore sui volt

resistenza

errore resistenza

ho bisogno di fare ora :

ridurre gli errori a sole 2/3 cifre significative anche senza arrotondare per ex/dif e di fare la media matematica dei risultati in modo da avere errore medio sulla resistenza e la resistenza media ... come posso fare?

lo script per la tabella è questo :

<table width="600" border="0" cellpadding="2" cellspacing="2">

  <tr>

    <td width="100" height="17"><strong>N. Prove </strong></td>

    <td width="100"><strong>V(v)</strong></td>

    <td width="100"><strong>eV(v)</strong></td>

    <td width="100"><strong>I(a)</strong></td>

    <td width="100"><strong>eI(a)</strong></td>

    <td width="100"><strong>R(?)</strong></td>

    <td width="100"><strong>eR(?)</strong></td>

  </tr>

  <?php while($res = mysql_fetch_array($select)){

  $i  = $res['i'];

  $ei = $res['ei'];

  $v  = $res['v'];

  $ev = $res['ev'];

  if($res['prova'] % 2 ){ $class = ' class="row" '; }else{ $class='';}

    ?>

   <tr>

    <td width="100"<?php echo  $class;?> ><?php echo  $res['prova']; ?></td>

    <td width="100"<?php echo  $class;?> ><?php echo  $v;?></td>

    <td width="100"<?php echo  $class;?> ><?php echo  $ev;?></td>

    <td width="100"<?php echo  $class;?> ><?php echo  $i;?></td>

    <td width="100"<?php echo  $class;?> ><?php echo  $ei;?></td>

    <td width="100"<?php echo  $class;?> ><?php echo  $v/$i; ?></td>

    <td width="100"<?php echo  $class;?> ><?php echo (($ev/$v)+($ei/$i))*$r; ?></td>

   </tr>

      <?php } ?>

   <tr>

     <td class="row">&nbsp;</td>

     <td class="row">&nbsp;</td>

     <td class="row">&nbsp;</td>

     <td class="row">&nbsp;</td>

     <td class="row">&nbsp;</td>

     <td class="row"><span class="medio"><strong>R</strong></span><strong>(?)</strong></td>

     <td class="row"><strong>e<span class="medio">R</span>(?)</strong></td>

  </tr>

   <tr>

     <td>&nbsp;</td>

     <td>&nbsp;</td>

     <td>&nbsp;</td>

     <td>&nbsp;</td>

     <td>&nbsp;</td>

     <td>&nbsp;</td>

     <td>&nbsp;</td>

  </tr>

</table>

aiuto la devo consegnare sabato :D  :P ::) :2funny: :buck: :coolsmiley: :idiot: :uglystupid: ( lol )

Rmedio = r1+r2+r3+r4+r5/5 ecc... insomma nozioni base di fisica :D come fò?

inviato 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

per la media puoi procedere così:

$a = array(2, 4, 6, 8);

echo "media = " . array_sum($a) / count($a);

per le cifre da mostrare c'è la funzione number_format:

http://it.php.net/manual/en/function.number-format.php

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

come metto il valore appena esce a metterlo nell'array?

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

?  ???

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

si come 'popolo' l'array con i valori :D ??

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

$array[] = $nuovo_valore;

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

hihhi ho capito come si usano gli array ::)

<?php

     $media[] = array();

     while($res = mysql_fetch_array($select)){

  $i  = $res['i'];

  $ei = $res['ei'];

  $v  = $res['v'];

  $ev = $res['ev'];

  $r  = $res['r'];

  

  

  if($res['prova'] % 2 ){ $class = ' class="row"'; }else{ $class='';}

    ?>

      <tr>

        <td width="50"<?php echo  $class;?>><?php echo  $res['prova']; ?></td>

        <td width="100"<?php echo  $class;?>><?php echo  $v;?></td>

        <td width="100"<?php echo  $class;?>><?php echo  $ev;?></td>

        <td width="100"<?php echo  $class;?>><?php echo  $i;?></td>

        <td width="100"<?php echo  $class;?>><?php echo  $ei;?></td>

        <td width="100"<?php echo  $class;?>><?php echo number_format($v/$i,2,'.',''); ?></td>

        <td width="100"<?php echo  $class;?>><?php $er = number_format((($ev/$v)+($ei/$i))*$r,2,'.',''); echo $er; $media[] .= $er;?></td>

        <td width="100"<?php echo  $class;?>>&nbsp;</td>

        <td width="100"<?php echo  $class;?>>&nbsp;</td>

      </tr>

      <?php }echo '<pre>'; print_r($media); echo '</pre>'; ?>
risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Questo però non ha molto senso:

$media[] = array();

basta infatti:

$media = array();

Per gli array guarda quì:

http://www.phpnews.it/content/view/244/107/

se lo leggi fino alla fine troverai spiegati parecchi "segreti" degli array

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

si me ne ero accorto da solo che quello non seriva :D :D: D

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

si può anche arrotondare la cifra ( un volta impostata a 2 sole cifre significative ) per eccesso o difetto automaticamente??

posso trovare il valore + alto e quello + basso nell'array? :D

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

avevo pensato di usare array_pop e ordinare prima in modo crescente e poi descrescente in modo da avere i primi valori appunto il max e il minimo :D che ne dici ? è una soluzione valida o ci sono metodi embedded in php per farlo?

sempre se funziona

al posto di ridurre le cifre significative ho preferito usare round($val,2) in modo da avere numeri arrotondati con max 2 cifre significative

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
modificato 10 anni fa
X 0 X

Gianni ho una tabella piena di numeri vicini a 52 solo che alcuni sono tipo 51.88 51.9 devo ridurli al massimo ma con round ( numero , 2) anche se si può semplificare non lo fa

dovrei avere la possibilità di :

se <4 lascia stare

se >= 5 arrotonda per eccesso

ex : 51.4 = 51.4

       51.6 = 52

spero che sia possibile :D

guarda come viene :D http://87.6.73.19:85/fisica.php

credo che il mio prof non rimanga felice se lascio dei numeri arrotondabili senza arrotondarli ::)

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
modificato 10 anni fa
X 0 X

Per avere il minimo ed il massimo ci sono le funzioni min() e max()

L'arrotondamento che desideri fare non è "standard" quindi ti tocca realizzarlo da solo. Dovresti fare un ciclo FOR sugli elementi dell'array e con egli IF decidere se e come arrotondare.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Veramente a me sembra un arrotondamento standard quello.

Puoi usare Round

http://it2.php.net/manual/en/function.round.php

risposto 10 anni fa
LonelyWolf
X 0 X

Veramente a me sembra un arrotondamento standard quello.

Puoi usare Round

http://it2.php.net/manual/en/function.round.php

si, mi accorgo solo ora di aver frainteso  :buck:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

No ho frainteso anche io, deve anche usare un if per controllare il decimale:

se >= 5 deve arrotondarlo all'intero successivo round ($numero)

se <= 4 non deve usare round.

risposto 10 anni fa
LonelyWolf
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda