WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Bell-kurva; matematikhjälp! (https://www.wn.se/forum/showthread.php?t=14848)

Robert 2006-06-27 16:46

Hej,

Är väldigt dålig på matematik/fysik och måste rita en bell-kurva (tror jag det heter). Frågan är om det redan finns en simpel formel för det eller måste man ta en kvarts sinusvåg och pussla ihop med en annan kvarts kosinusvåg för att erhålla formen av en "klocka"? Jag frågar för att jag har lite problem med mina koordinater och att pussla ihop sinusvågsbitarna så det blir rätt.

nicclas 2006-06-27 18:01

Menar du kurvan för (täthetsfunktionen för) en normalfördelning? Den har funktionsformen f(x)=exp(-x^2). Plottar du den för x mellan -3 och 3 så får du en klassisk normalfördelningskurva.

Robert 2006-06-27 22:07

Oj, vet inte vad du pratar om... :)

Jag menar en kurva som börjar vågrätt och sedan blir en kulle för att sen sluta vågrätt. Amplituden ska givetvis gå att ange.

Bell = klocka (som en kyrkklocka)

Robert 2006-06-27 22:19

nicclas: Japp, kollade upp normalfördelning och de kurvorna ser ganska bra ut. Nu gäller det bara att veta hur jag jag ska använda mig av den. Jag har en x-axel med variabelt start- och slutvärde. Jag vill att kurvan alltid ska se ut som en fin kurva som sträcker sig från grafens vänstra kant till dess högra oavsett start och stoppvärdet... Kurvans topp ska också gå i taket.

Hela kurvan är alltså inte bara kosmetisk; jag ska kunna skicka in ett värde (som existerar längs x-axeln) och få ut y-värdet för kurvan på just den positionen.

koala 2006-06-27 22:49

Här hittar du nog all information du behöver om normalfördelningsfunktionen (gausskurva)

Robert 2006-06-27 23:17

Citat:

Originally posted by koala@Jun 27 2006, 22:49
http://en.wikipedia.org/wiki/Normal_distribution


Jo, jag var in där och det sa mig inte så mycket. Då jag vill kunna flytta kurvans topp i sidled (så endera sida blir stretchad/komprimerad) så verkar det som att jag får dela upp formeln i 2 steg (vänster resp höger sida av kurvan). Kanske sin/sinh/cos odyl får duga iaf...

koala 2006-06-28 02:52

2 bifogad(e) fil(er)
Okej, följande förklaring kanske kan vara till lite hjälp då:

etanders 2006-06-29 21:28

Har inte min egen dator tillgänglig, så jag har inte provkört koden, men följande (php-)funktion ger y-värdet för en variant av kurva som förhoppningsvis är vad du söker. Argumenten är x-värdet, x-koordinaterna för ändpunkterna samt amplituden.

Kod:

function y($x, $x_left, $x_right, $amplitud) {
  $t = 10 * ($x - $x_left)/($x_right - $x_left) - 5;
  $y = $amplitud * exp(-$t^2 / 2);
  return $y;
}

Loopa över $x i intervallet $x_left < $x < $x_right med lämplig steglängd för att få alla y-värden.

etanders 2006-06-30 20:55

Såg att jag i hastigheten råkade skriva ^ i föregående inlägg för "upphöjt till" som man gör i t.ex. Matlab. Det funkar ju inte i php...

Här är ett enkelt litet test av min funktion.

Kod:

<?
  function y($x, $x_left, $x_right, $amplitud) {
    $t = 10 * ($x - $x_left)/($x_right - $x_left) - 5;
    $y = $amplitud * exp(-$t * $t / 2);
    return $y;
  }
?>
<html>
<head>
<title>"Bell-kurva"</title>
</head>
<body>
<?
  $x_left = 200;
  $x_right = 600;
  $amplitud = 180;

  for ($x = $x_left; $x <= $x_right; $x++) {
    $y = round(y($x, $x_left, $x_right, $amplitud));
    echo "<div style=\"position: absolute; top: " . ($amplitud - $y) . "px; left: " . $x . "px; font-weight: bold;\"> . </div>\n";
  }
?>
</body>
</html>

Är detta vad du sökte, Robert?


Alla tider är GMT +2. Klockan är nu 01:20.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson