Całka metodą trapezów.

0

Cześć.
Napisałem program do liczenia całki metodą trapezów. Wygląda na to, że liczy OK ale po próbie zaokrąglenia za pomocą round() dostaję wynik -0. Czy ktoś wie gdzie jest problem ?

function calka($x) { 
    return sin($x);
}

$xp = -5.5;
    $xk = 5.5;
    $n = 10.0;
 
    $dx = ($xk - $xp) / $n;
 
    $wynik = 0;
    for ($i=1; $i < $n; $i++)
    {
        $wynik += calka($xp + $i * $dx);
    }
    $wynik += calka($xp) / 2;
    $wynik += calka($xk) / 2;
    $wynik *= $dx;
     
    echo "Najnowszy wynik: ".round($wynik,3);

0

sumujesz pola n trapezów

for ($i=1; $i < $n; $i++)
{
  $wynik += 0.5 * (calka($xp) + calka($xp + $dx * $i)) * $dx);
}
0

Nie chodzi o metodę. Metoda jest dobra. Twoja nawet liczy błędnie. Chodzi o zaokrąglenie wyniku :/

0

możesz wyświetlić $wynik przed zaokrągleniem

echo $wynik;
0

A co w tym wynikach jest dziwnego?
Dokładna wartość całki: 0.
Wartość przybliżona: -1.587618925214*10-15.
Po zaokrągleniu: 0.

0

Że dostaję w wyniku -0 a nie 0. To nie jest kurde limes lewostronny :/
Nie chcę tego załatwiać za pomocą str_replace :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1