Article View: be.science
Article #93Re: Wiskundevraagje: gemiddelde berekenen.
From: ben
Date: Tue, 18 Apr 2000 00:00
Date: Tue, 18 Apr 2000 00:00
73 lines
2988 bytes
2988 bytes
In be.comp.os.linux Pros Robaer <pros@village.uunet.be.cut.this.tail> wrote:
> Nu zijn die samples probleemloos om te zetten naar graden (0 - 359),
> maar hoe bereken ik hiervan een gemiddelde? Tenslotte is het
> gemiddelde van 30� en 330� niet 180�, maar 0�.
>
> Afin, hoe leg ik dat aan boord?
Eigenaardige linux-vraag :-)
Quick-and-dirty:
Omdat je het verschil tussen twee hoeken langs twee kanten van de cirkel
kan meten, moet je het kleinste hoekverschil in absolute waarde pakken
en hiervan de helft toevoegen aan de eerste hoek.
gemiddelde = hoek1 + kleinste hoekverschil(hoek2 - hoek1) / 2
kleinste hoekverschil = als |verschil1| < |verschil2|
verschil1
anders verschil2
Aangezien de verschillen in de twee verschillende richtingen wijzen (met
de klok mee of tegen), moeten zij een verschillend teken hebben.
Om van een negatieve hoek een positieve te maken, doe je:
pos_hoek = 360 + neg_hoek
en omgekeerd:
neg_hoek = pos_hoek - 360
Bv.
-----------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int hoek1, hoek2, gemiddelde, verschil1, verschil2;
if (argc < 3) {
printf("Usage: hoekgemiddelde hoek1 hoek2\n");
return EXIT_FAILURE;
}
hoek1 = atoi(argv[1]);
hoek2 = atoi(argv[2]);
verschil1 = hoek2 - hoek1;
if (verschil1 < 0)
verschil2 = 360 + verschil1;
else
verschil2 = verschil1 - 360;
if (abs(verschil1) < abs(verschil2))
gemiddelde = hoek1 + verschil1 / 2;
else
gemiddelde = hoek1 + verschil2 / 2;
gemiddelde %= 360;
printf("Het gemiddelde van %d en %d is %d\n",
hoek1, hoek2, gemiddelde);
return EXIT_SUCCESS;
}
------------------------------------------------------------------
Ik heb zo het gevoel dat dit eenvoudiger en beter uitgelegd kan, maar
het principe is juist IMHO.
Groeten,
--
ben . de . rydt at pandora . be ------------------ your comments
http://users.pandora.be/bdr/ ------- inl. IPv6, Linux en Pandora
Technical Details
Message-ID:
<C44L4.109645$l35.228059@afrodite.telenet-ops.be>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<0001EE09@malpertuis>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII X-Google-Thread: 100a19,14c52696de98bc87 X-Google-Attributes: gid100a19,public X-Google-Thread: f5500,14c52696de98bc87 X-Google-Attributes: gidf5500,public X-Google-Thread: f7e01,14c52696de98bc87 X-Google-Attributes: gidf7e01,public From: ben@co.and.co Subject: Re: Wiskundevraagje: gemiddelde berekenen. Date: 2000/04/18 Message-ID: <C44L4.109645$l35.228059@afrodite.telenet-ops.be> X-Deja-AN: 612849301 Content-Transfer-Encoding: 8bit References: <0001EE09@malpertuis> Content-Type: text/plain; charset=ISO-8859-1 X-Complaints-To: abuse@pandora.be X-Trace: afrodite.telenet-ops.be 956091810 195.130.154.193 (Tue, 18 Apr 2000 23:03:30 MET DST) Organization: soms MIME-Version: 1.0 NNTP-Posting-Date: Tue, 18 Apr 2000 23:03:30 MET DST Newsgroups: be.science,nl.wetenschap,be.comp.os.linux