Ligninger i PHP

Tags:    php

Hej Udviklere.

I denne uge har vi et projekt i matematik omkring Civilization 5. Pointen med det hele er at vi blandt andet skal beregne hvornår det er smartest at bygge hvad, hvilke tiles der vil gøre mest gavn osv. Da jeg regner med vi får spillet mere end et spil kunne jeg godt tænke mig undervejs at bygge en webapplikation der kan beregne alle disse ting, så vi ikke behøver sidde med en lommeregner hver gang vi får noget nyt at skulle beregne.

Jeg prøvede lige hurtigt et par ting, men har altså ikke lavet særlig meget matematik i PHP og har derfor ikke den store erfaring indenfor området. Og ligninger kunne jeg slet ikke finde ud af. Jeg lavede en funktion der kan løses på lommeregner men PHP kan ikke knuse den.

Fold kodeboks ind/udPHP kode 


Da jeg prøvede mig lidt frem så det ud til at det var de dobbelte parenteser eller måske at der ikke er noget tegn mellem 10 og den næste parentes der var problemet. Da jeg splittede det op i flere variabler virkede det fint, men det ville i min optik være besværligt når vi skal lave mange udregninger i løbet af forløbet.

Håber der er nogen der forstår hvad jeg mener og vil hjælpe mig, jeg tror det kunne være rigtig sjovt at lege med nemlig! :-)

Mvh. Andreas Voss



5 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 21 karma
Sorter efter stemmer Sorter efter dato
For de helt simple aritmetiske regneregler (+,-,*,/) udføres de med samme præcedens som i matematik. Dog er multiplikation ikke implicit, dvs. der skal bruges '*', ligesom Kevin har rettet i din originale kode.

Alt andet end de simple matematiske operatorer skal typisk beregnes via. funktioner, som f.eks. pow.

Det med at splitte det op i flere variabler når det er "direkte" matematiske formler er for min vinkel ikke noget problem. Også meget korte variablennavne er også i orden i dette tilfælde så længe de er normalt brugte. Hvis du f.eks. skal finde rødderne til en andengradsligning: ax^2 + bx + c, er der ikke noget galt i at dele det ud i $a, $b og $c hvis det gør det mere læsbart.

Hvis det her er udtrykket du gerne vil finde:
Fold kodeboks ind/udKode 


Så er det her forkert:
Fold kodeboks ind/udPHP kode 

Det skal være eksplicit at der ganges 10 på ($numberOfTiles-1). Det er også (10(nT-1)) du vil opløfte i 1.1, men du har hivet '20 +' med ind.

Start med at dele det op i led. Der er 2 led, '20' og '(10(nT-1))^1.1'. '20' er nem den er bare 20. Så har vi nu:
Fold kodeboks ind/udPHP kode 


Så manger vi det andet led. Lad os starte udefra. Lige kort siger vi at X = (10(nT-1)). Så får vi nu:
Fold kodeboks ind/udPHP kode 


Så mangler vi blot (10(nT-1)). Her skal vi blot huske multiplikationstegnet og lave nT om til parameteren:
Fold kodeboks ind/udPHP kode 




Fold kodeboks ind/udPHP kode 


prøv at se om dette hjælper :)



Hej Andreas,

Kan du prøve at indsætte matematikken du vil udregne i matematik format, da det så er lidt nemmere at se, hvad du enligt vil udregne :) ?



Det her er er det jeg ville skrive hvis jeg skulle regne den manuelt.

nT er en variabel.

Fold kodeboks ind/udKode 


Men det er bare et eksempel, alle regnestykkerne kommer ikke til at være ens. :)



Tak, det hjalp mig en hel del!



t