Avatar billede cgroup Nybegynder
28. maj 2003 - 00:43 Der er 44 kommentarer og
1 løsning

Matematisk udfordring

Hejsa
Jeg er kommet i en lille knipe, jeg skal lave en tæller, som et lidt mere kompliceret end normalt. Så min ide var at lave en formel som kan beregne det jeg vil prøve at beskrive hvad meningen er.
Jeg skal lave en tæller som kan finde ud hvor mange råd bruger skal have som funktion  1 til n antal dage. Jeg skal bruge 3 forskellige formler den 1. er nem nok da der skal gives 1 råd hver 28. dag så den må hedder noget ligende råd=(dag_nr/28).
Men formel nr. 2 har værdierne:
(x,y)->(7,1)(14,2)(21,3)(35,4)(42,5)(49,6)(63,7) osv for x->n
Formel nr.3 har værdierne:
(x,y)->(1,1)(5,2)(8,3)(12,4)(15,5)(19,6) osv for x->n

Er der mon nogen som kan knække den ?
Det som jeg gerne skulle have er formel 2 og 3 som jeg kan bruge i et PHP script.

MVH
Peter
Avatar billede arne_v Ekspert
28. maj 2003 - 01:08 #1
formel 2:

råd = dage/7 - dage/28
Avatar billede jakoba Nybegynder
28. maj 2003 - 01:09 #2
(x,y)->(7,1)(14,2)(21,3)(35,4)(42,5)(49,6)(63,7)

1 * 7 == 7    (7,1)
2 * 7 == 14  (14,2)
3 * 7 == 21  (21,3)
4 * 7 == 28  ???????  hvorfor så (35,4)

jeg kan ikke få en osv. ud af det
Avatar billede arne_v Ekspert
28. maj 2003 - 01:12 #3
formel 3:

råd = (dage+6)/7 + (dage+2)/7
Avatar billede arne_v Ekspert
28. maj 2003 - 01:13 #4
Jeg kan ikke PHP så jeg kan ikke give dig PHP koden men det må
være overkommeligt udfra disse formler.
Avatar billede arne_v Ekspert
28. maj 2003 - 01:14 #5
jakob>

Jeg forstår heller ikke hvorfor formlerne er som de er, men
mine formler kan så vidt jeg kan se generere de rigtige
sekvenser.
Avatar billede cgroup Nybegynder
28. maj 2003 - 01:15 #6
Til jakoba
Det er fordi i formel2 skal hvert 4. råd være af en anden type som ikke skal tælles med og for formel 3 skal hvert 3. råd være en den type som ikke tælles med - og her er frekvensen på råd bare højere
Avatar billede cgroup Nybegynder
28. maj 2003 - 01:19 #7
Til Arne V
De formler giver ikke de rigtige værdier - sorry
Avatar billede cgroup Nybegynder
28. maj 2003 - 01:21 #8
Jeg skal måske lige sige at i de værdier jeg har giver et x=dage og y=råd
Avatar billede roenving Novice
28. maj 2003 - 01:22 #9
formel 3:

floor((x-1)/3.5)+1
Avatar billede detox Nybegynder
28. maj 2003 - 01:26 #10
Nu ved jeg ikke om man kan kalde det formler, men de udregner de rigtige værdier så vidt jeg har forstået.
Nr. 2:
for ($i=1;$i<$n;$i++) {
    $j++;
    if (!fmod($j,4)) {$j++;}
    $x[] = $j*7;
    $y[] = $i;
}
Nr. 3:
$x[1] = 1;
$y[1] = 1;

for ($i=2;$i<$n;$i++) {
    if ($j == 4) {$j = 3;}
    else {$j = 4;}
    $x[] = $x[$i-1] + $j;
    $y[] = $i;
}
Avatar billede roenving Novice
28. maj 2003 - 01:27 #11
formel 1 = floor(x/28) + 1
formel 2 = -floor(x/28)-1 + floor(x/7)
(eller floor(x/7) - formel 1 !-)
og så formel 3 som angivet
Avatar billede roenving Novice
28. maj 2003 - 01:33 #12
Øeh -- lige lidt smårettelser ...

I:
y = floor(x/28)

II:
z = floor(x/7) - y

III:
w = floor((x-1)/3.5)+1
Avatar billede arne_v Ekspert
28. maj 2003 - 01:37 #13
cgroup>

For hvilke værdier giver mine formler ikke korrekt svar ?
Avatar billede detox Nybegynder
28. maj 2003 - 01:43 #14
prøv at se indlæg fra kl.: 01:15:57
Avatar billede cgroup Nybegynder
28. maj 2003 - 01:44 #15
arne v>
formel 2:
Skal give:(7,1)(14,2)(21,3)(35,4)(42,5)(49,6)(63,7)
Din giver:(7,0.75)(14,1.5)(21,2.25)(42,4.5)
formel 3:
Skal give:(1,1)(5,2)(8,3)(12,4)(15,5)(19,6)
din giver:(1,1.4)(5,2.57)(8,3.43)(12,4.57)
Avatar billede arne_v Ekspert
28. maj 2003 - 01:47 #16
Du bad om:

(7,1)(14,2)(21,3)(35,4)(42,5)(49,6)(63,7)
(1,1)(5,2)(8,3)(12,4)(15,5)(19,6)

Mine formler giver:
7 1
14 2
21 3
35 4
42 5
49 6
63 7

1 1
5 2
8 3
12 4
15 5
19 6

jeg kan ikke se nogen forskel !
Avatar billede roenving Novice
28. maj 2003 - 01:49 #17
>>arne

-- er det ikke fordi php er helt typeløst, at du med dine standard int-beregninger ikke ser decimalerne ...
Avatar billede arne_v Ekspert
28. maj 2003 - 01:49 #18
Jeg skrev eksplicit at du du selv skulle konvertere til PHP.

Hvis PHP ikke laver heltals division så skal der konverteres til
heltal undervejs.

Baseret på de øvrige svar vil jeg konkludere at:

råd = dage/7 - dage/28
råd = (dage+6)/7 + (dage+2)/7

skal være:

råd = floor(dage/7) - floor(dage/28)
råd = floor((dage+6)/7) + floor((dage+2)/7)
Avatar billede arne_v Ekspert
28. maj 2003 - 01:50 #19
roenving>

Jo præcis - jeg forventede at / var heltals division når
argumenterne var heltal ikke floating point division.
Avatar billede arne_v Ekspert
28. maj 2003 - 01:52 #20
En rimelig antagelse vil jeg mene da spørgsmålet jo sagde
at formel 1 var:

råd=(dag_nr/28).

det stemmer jo også kun med heltals division.
Avatar billede tipsen Nybegynder
28. maj 2003 - 01:54 #21
Er essensen at du skal have en funktion der kan give dig antal råd som output når du giver antal dage som input?

Der gives råd på baggrund af 3 forskellige kriterier:

- én gang om måneden
- én gang om ugen
- to gange om ugen

Det ligner kriterierne - er det korrekt?

Ellers prøv at forklare det lidt bedre - der er svar blandt de ovenstående der fungerer rigtigt på det eksempel du selv er kommet med!
Avatar billede cgroup Nybegynder
28. maj 2003 - 02:01 #22
Arne V
Jeg beklager det virker tak skal du have - kan du evt. checkke at formel 1 også er korrekt ?
Avatar billede arne_v Ekspert
28. maj 2003 - 02:05 #23
råd=dage/28

og på PHP'sk:

råd=floor(dage/28)

vil give (28,1) (56,2) (84,3) ...
Avatar billede cgroup Nybegynder
28. maj 2003 - 02:08 #24
Jeg takker - 1 ting kan man "skubbe" formel 3 således at den først starter på dag 5 ?
Avatar billede detox Nybegynder
28. maj 2003 - 02:09 #25
Jeg får nu den anden formel til:
1 7
2 14
3 21
3 28
4 35
5 42
6 49
6 56
7 63
men det er måske bare mig?
Avatar billede arne_v Ekspert
28. maj 2003 - 02:17 #26
cgroup>

Ja da.

Vil du bare have:

(5,1)(8,2)(12,3)(15,4)(19,5)

?

Det kunne nok f.eks. laves med:

råd = (dage+6)/7 + (dage+2)/7 - 1

alias

råd = floor((dage+6)/7) + floor((dage+2)/7) - 1
Avatar billede arne_v Ekspert
28. maj 2003 - 02:17 #27
eller:

råd = (dage-1)/7 + (dage+2)/7

alias

råd = floor((dage-1)/7) + floor((dage+2)/7)
Avatar billede arne_v Ekspert
28. maj 2003 - 02:19 #28
detox>

Forskellen er kun den at vi kun har taget det antal dage med hvor
antal råd skifter.

Du har taget hver 7. dag.

Det giver forskel på 28, 56, ... etc..

Men det er ikke substantiel forskel.
Avatar billede detox Nybegynder
28. maj 2003 - 02:22 #29
OK I C
Avatar billede cgroup Nybegynder
28. maj 2003 - 20:22 #30
Arne lige et spørgsmål mere...
mht: råd = floor((dage+6)/7) + floor((dage+2)/7) - 1
den virker fint men du skal jeg vende den om - altså jeg kender antal råd, men nu skal jeg vide på hviklen dag det skulle være givet ligesom for:
råd = floor(dage/7) - floor(dage/28)
som bliver vendt til:
dage = floor((7/2) * råd + (1/2))+1
Er det noget du en eller en anden kan hjælpe med ?
Avatar billede arne_v Ekspert
28. maj 2003 - 20:42 #31
Jeg kigger på det.
Avatar billede arne_v Ekspert
28. maj 2003 - 20:47 #32
dage=3*(råd/2)+4*(råd-råd/2)+1

alias

dage=3*floor(råd/2)+4*(råd-floor(råd/2))+1
Avatar billede cgroup Nybegynder
28. maj 2003 - 21:41 #33
Tak, jeg har lige en hurtig en mere:
råd = 1/7 * dage + 0,571428571

hvordan vender jeg den om ?
Avatar billede arne_v Ekspert
28. maj 2003 - 22:03 #34
Den bruger jo decimal tal, så den kan vendes matematisk:

dage = 7 * (råd - 0,571428571)

Men hvis du mener:

råd = (dage+4)/7
råd = floor((dage+4)/7)

så må det være:

dage = 7*råd-4;
Avatar billede cgroup Nybegynder
29. maj 2003 - 17:44 #35
Hej Arne
Så er jeg her igen :-)
dage=3*floor(råd/2)+4*(råd-floor(råd/2))+1 - virker ikke efter hensigten så jeg har fundet x,y værdierne til den - er det så muligt at du vil være flink at hjælpe med at finde formel til værdierne:
(x,y)->(1,14)(2,21)(3,28)(4,42)(5,49)(6,56)(7,63)(8,77) osv.

Og så skal jeg høre om man kan skubbe denne:
råd = FLOOR(dage/7)-FLOOR(dage/28)
Således at første x,y værdi bliver 14,1 istedet for 7,1

Jeg håber ikke at jeg er ved at blive irreterende...
MVH
Peter
Avatar billede arne_v Ekspert
29. maj 2003 - 18:07 #36
Mener du:

(1,14)(2,21)(3,28) (4,42)(5,49)(6,56)(7,63) (8,77)

eller:

(1,14)(2,21)(3,28) (4,42)(5,49)(6,56) (7,70)(8,77)

?
Avatar billede arne_v Ekspert
29. maj 2003 - 18:09 #37
råd = FLOOR(dage/7)-FLOOR(dage/28) - 1

vil give 14,1 men vil også give -1 for 1-6 hvilket næppe
er meningen.

Præcis hvordan skal sekvensen være ?
Avatar billede cgroup Nybegynder
29. maj 2003 - 18:11 #38
Jeg Mener:
(1,14)(2,21)(3,28) (4,42)(5,49)(6,56)(7,63) (8,77)
Avatar billede cgroup Nybegynder
29. maj 2003 - 18:14 #39
Sekvensen for: råd = FLOOR(dage/7)-FLOOR(dage/28) - 1

(14,1)(21,2)(28,3)(42,4)(49,5)(56,6)(63,7)(77,8) osv
Avatar billede arne_v Ekspert
29. maj 2003 - 19:46 #40
Det er ikke den sekvens jeg får.

Jeg får:

14,1
21,2
35,3
42,4
49,5
63,6
70,7

er den formel der er forkert ?
Avatar billede cgroup Nybegynder
29. maj 2003 - 19:52 #41
Du har ret - formlen er forkert sekvensen skal være:
(14,1)(21,2)(28,3)(42,4)(49,5)(56,6)(63,7)(77,8) osv

og så skal jeg bruge en formel som giver denne sekvens:
(1,14)(2,21)(3,28) (4,42)(5,49)(6,56) (7,70)(8,77) osv

Altså 2 formler
Avatar billede arne_v Ekspert
01. juni 2003 - 17:11 #42
Jeg har ikke svaret fordi jeg ikke vil.

Men jeg kan simpelthen ikke se nogen matematisk sammenhæng
i de sekvenser.
Avatar billede tipsen Nybegynder
01. juni 2003 - 17:41 #43
(x + 1 + (int) (x/4)) * 7

Giver:

0,  7
1, 14
2, 21
3, 28
4, 42
5, 49
6, 56
7, 63
8, 77
9, 84
10, 91
11, 98
12,112
osv.

Er det den sekvens du ønsker? - fordi de sekvenser du angiver ovenfor har intet med hinanden at gøre og som arne også skriver er det ikke umiddelbart en logisk sammenhæng i tallene - i så fald er sekvensen for kort til at illustrere denne tydeligt!

Hvordan finder du selv på tallene i de sekvenser du angiver - der må være en form for logik du bruger som du kan fortælle videre - alternativt kan du lige kigge dem igennem og se om du har lavet fejl i sekvenserne!?!?
Avatar billede cgroup Nybegynder
11. juni 2003 - 03:47 #44
Ok jeg har åbentbart selv haft lidt rod i de værdier jeg skal bruge, så her kommer de rigtige.
Formel 1. Skal give værdierne:
(14,1)(28,2)(35,3)(42,4)(56,5)(63,6)(70,7)(84,8)
Sammenhængen for X værdierne er altså start i 14 derefter +14 +7 +7 +14 +7 +7 +14

Formel 2. Skal være som Formel  1 der er dog byttet om på X og Y værdier altså:
(1,14)(2,28)(3,35) osv.

Formel 3. Skal give værdierne:
(5,1)(11,2)(15,3)(18,4)(22,5)(25,6)(29,7)
Sammenhængen her er altså: X starter i 5 derefter +6 +4 +3 +4 +3

Formel 4. Skal igen være som Formel 3 bare med omvendte xy værdier

Formel 5. skal give værdierne:

(21,1)(49,2)(77,3) altså start i x=21 derefter +28 hvergang

Formel 6. Igen som formel 5 med omventde XY værdier

Formel 7. Skal give værdierne:
(13,1)(20,2)(27,3)(34,4) altså start i x=13 derefter +7 hvergang

Formel 8. formel 7 med omvendte xy værdier

Jeg håber ikke at jeg er ved at give nogen grå hår med alt dette her og takker tusinde gange forhånd for hjælpen - jeg giver gerne en drink som tak.
Avatar billede arne_v Ekspert
11. juni 2003 - 08:29 #45
Jeg kigger på det senere (formentligt i aften).
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester