Avatar billede caroc Praktikant
03. marts 2004 - 17:40 Der er 8 kommentarer og
1 løsning

Maksimal fortjeneste?

Jeg har en opgave hvor jeg får omkostningerne beskrevet vha. af følgende formel:
x^3 - 30x^2 + 500x + 30 hvor x er antal tons pr uge

Hvert ton kan sælges for 308

hvordan kan jeg beregne hvor mange tons virksomheden skal producere om ugen for at fortjenesten er maksimal?

MVH
Niclas
Avatar billede soreno Praktikant
03. marts 2004 - 19:02 #1
Hvis fortjenesten er lineær, dvs. samme for alle tons man sælger, kan den beskrives som en funktion af x.

g(x)=308x

Hvis du plotter begge kurver vil du se at der er et interval hvor omkonstningerne er mindre end fortjenesten. Så det er nok dette interval der er interessant (det ligger ca.  10 < x < 20).

Næste del må være at finde den maksimale afstand, i det relevante interval, mellem:
f(x) = x^3 - 30x^2 + 500x + 30

og
g(x) = 308x
Avatar billede caroc Praktikant
03. marts 2004 - 21:27 #2
godt - så langt kom jeg også selv :) men hvordan kan jeg bestemme den maksimale afstand mellem de 2 linjer?
Avatar billede soreno Praktikant
03. marts 2004 - 22:07 #3
Tjaaa, det er et godt spørgsmål.

Jeg ved ikke hvordan man kan finde den eksakte værdi.

Men den kan approximeres ved brute-force.

F.eks. dette lille Java program:

public class Maximize
{
    public static double fx(double x)
    {
        return x*x*x - 30*x*x + 500*x + 30;
    }
   
    public static double gx(double x)
    {
        return 308 * x;
    }
   
    public static void maximize(double x1, double x2, double interval)
    {
        double x = 0;
        double currentMax = 0;
        for(double i=x1;i<x2;i+=interval)
        {
            double diff = gx(i) - fx(i);
                       
            if(currentMax < diff)
            {
                x = i;
                currentMax = diff;
            }
        }
        System.out.println("Max is x = " + x);
        System.out.println("\tgx(" + x + ") = " + gx(x));
        System.out.println("\tfx(" + x + ") = " + fx(x));
        System.out.println("\tdiff = " + (gx(x) - fx(x)));
    }
   
    public static void main(String args[])
    {
        maximize(9.5d, 20.6d, 0.1d);
    }
}

Output:
Max is x = 15.999999999999977
    gx(15.999999999999977) = 4927.999999999993
    fx(15.999999999999977) = 4445.999999999993
    diff = 482.0
Avatar billede roenving Novice
04. marts 2004 - 01:42 #4
Man kunne jo også sige, at fortjenesten er differencen mellem de to funktioner, altså at funktionen for fortjenesten er:

308x - (x^3 - 30x^2 + 500x + 30)

-- så får man følgende funktion for fortjenesten:

f(x) = -x^3 + 30x^2 - 192x - 30

Man kan så bestemme de(t) interval(ler), hvor f(x) > 0 for det er jo irrelevant, hvis man taber penge !-)

Men så kan man jo også lige finde det sted, hvor gærdet er lavest, nemlig ved at finde toppunkter på funktionen, og et toppunkt er der, hvor f'(x) = 0, altså differentierer vi (og jeg kan knap huske, hvordan det er, men det kan I vel bare rette mig i, hvis jeg regner galt !-)

f'(x) = -3x^2 + 60x - 192, dvs. f'(x) = 0 er:

x = (-60 +/- sqrt(60^2 - (4 * -3 * - 192)))/ (2 * -3) <==>

x = (-60 +/- sqrt(1296))/-6 <==>

x = 10 +/- 6 <==>

x = 4 v x = 16

f(4) = -4^3 + 30 * 4^2 - 192 * 4 - 30 = -64 + 480 - 768 - 30 = - 382 (altså det nedre toppunkt på 3.grads-polynomiet !-)

f(16) = -16^3 + 30 * 16^2 - 192 * 16 - 30 = - 4096 + 7680 - 3072 - 30 = 482 (bingo, det er maksimal fortjeneste !-)
Avatar billede roenving Novice
04. marts 2004 - 01:53 #5
Hov, jeg glemte lige et argument:

Vi ved at en 3.grads-funktion er kontinuert i 3 intervaller: [-uendelig;4[ , ]4;16[ og ]16;uendelig] -- altså afgrænset af toppunkterne !o]

Da vi simpelt kan konstatere at produktionen selvsagt ikke kan være negativ, at f(0) = -30 og den er faldende undtaget mellem toppunkterne (3.grads-ledet er negativt !-) er den altså konstant negativ i intervallet [0;4[ og igen faldende fra det andet toppunkt ...

Derfor må det andet topppunkt være den maksimale fortjeneste ;O)
Avatar billede roenving Novice
04. marts 2004 - 02:06 #6
-- og, soreno, vi kan vel konstatere, at beregningsusikkerheden i din Java VM er på omkring 10^-15 *g*
Avatar billede caroc Praktikant
04. marts 2004 - 17:57 #7
super... tak skal du have roenving..
Avatar billede caroc Praktikant
04. marts 2004 - 17:57 #8
så mangler jeg bare et svar..
Avatar billede roenving Novice
05. marts 2004 - 14:46 #9
Velbekomme '-)
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
Computerworld tilbyder specialiserede kurser i database-management

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