Jak mogę wymyślić proste równanie malejącego zwrotu?

25

Istnieją wzory na malejące równanie zwrotu; jednak zwykle wiążą się one z wykładniczym. Jakie są inne sposoby wymyślenia takiego równania? Weźmy na przykład następujący przypadek testowy - jedno gospodarstwo wytwarza 10 żywności, na każde 10 wyprodukowanych gospodarstw wskaźnik produkcji spada o 5%.

Extrakun
źródło
1
Może ci to pomóc, jeśli powiesz nam, dlaczego chcesz uniknąć wykładników. W szczególności, czy wyrażenia w postaci x ^ y ( x są podniesione do y- tej potęgi) również są wyłączone (ponieważ komputery zwykle obliczają te przy użyciu wykładniczych, przynajmniej dla liczb całkowitych y )?
Ilmari Karonen,
7
„Na każde dziesięć wyprodukowanych gospodarstw tempo produkcji spada o 5%”. To w zasadzie wykładniczy: y = 0,9 ^ (floor (x / 10)). Jak pyta @IlmariKaronen, co jest nie tak z wykładniczym?
wchargin
1. Trudno to wytłumaczyć osobom, które nie są programistami (a niektórzy programiści mają problemy z wykładniczością) 2. Mam wrażenie, że jest drogi
Extrakun,
2
nie ma absolutnie nic nieefektywnego w stosowaniu równań wykładniczych. Myślę, że to, co jesteś myślenie to algorytmy , w których liczba kroków wzrasta wykładniczo w stosunku do wielkości wejściowych (np rozmiaru tablicy, które chcesz posortować). Jest to określane jako „O”, np. Można powiedzieć, że określony algorytm (lub funkcja) wykonuje O (n) kroków. Algorytm, w którym kroki rosną wykładniczo, można opisać na przykład biorąc O (n-kwadrat) kroków. Jest to całkowicie odmienne od posiadania pojedynczego równania zawierającego w sobie wykładniczy składnik.
Max Williams,
1
Myślę, że Extrakun może myśleć o tego rodzaju „drogich:” stackoverflow.com/questions/2940367/… . Powtórzyć to, co mówią wszyscy inni: to nie jest drogie. Jeśli czujesz się nieswojo z wykładniczymi, szukaj dostępnych wyjaśnień (może betterexplained.com/articles/… ), nie unikaj ich.
kristina,

Odpowiedzi:

30

Aby sformułować równanie malejących zwrotów, od razu pomyślałem o ułamkach.

Wykres 1 / F To jest wykres y=1/F

ybędzie się zmniejszać wraz ze Fwzrostem. Zapewni to stały spadek, który nigdy nie osiągnie 0. Na tej podstawie możesz go przekształcić, aby uzyskać żądaną krzywą. Użycie liczb> 0 zawsze daje wynik dodatni, który nigdy nie wynosi 0.

Szczerze mówiąc, poleciłbym pójść do WolframAlpha i postawić kilka równań i spojrzeć na wykresy, które rysuje, aby zobaczyć, czy daje krzywą, którą chcesz. Poza tym przeczytaj równania liniowe i kwadratowe, aby szybko dowiedzieć się, co chcesz zmienić we wzorze. Wynika to z faktu, że modelowanie wykresów za pomocą równań jest nieco dużym tematem, a gdybym mógł to tutaj doskonale wyjaśnić, najpierw sprzedałbym to wyjaśnienie niektórym nauczycielom matematyki.

Zasadniczo, w przypadku wykresów liniowych pamiętaj y=mx+c. mjest gradientem i może być dodatni lub ujemny w zależności od potrzeb i cjest punktem, w którym przechwytuje y axis. xjest zmienną wejściową i ywyjściową.

y = mx + c To jest wykres y=mx+cgdzie m=1ic=0

W przypadku wykresów kwadratowych robi się to trochę bardziej skomplikowane, więc będę trochę niejasny i sam będziesz musiał przeczytać szczegóły. Khan Academy jest naprawdę dobrym źródłem do nauczania tego. Ma ogólną formę y=ax²+bx+c. cjest nadal punktem przecięcia y i można go dostosować, aby „podnieść” wykres. ai boba wpływają na krzywą podobnie, ale w różnym stopniu.

y = -x² + 2x + 10 Jest y=-x²+2x+10. Zwróć uwagę na -x², co powoduje odwrócenie krzywej.

Zasadniczo baw się wykresami, dopóki nie dostaniesz tego, czego chcesz, ale zdecydowanie polecam więcej, jeśli chcesz szybko i czysto zaprojektować doświadczenie. Podstawowe równania są ważne w grach i naprawdę interesujące.

Inne rzeczy, na które należy zwrócić uwagę, to wykresy wykładnicze i logarytmiczne , tj. Wykresy y=e^xi, y=ln(x)aby uzyskać szybko rosnące i szybko malejące wykresy w zależności od transformacji. Oprócz tego pomocne są wektory i transformacje, które opisują to, co robisz na wykresie „bazowym”.

Yann
źródło
6
Używasz „teorii grafów” kilka razy w poście; to coś zupełnie innego . Myślę, że to, czego szuka OP, zbliża się do modelowania.
Chaosed0
1
@ Chaosed0 Masz absolutną rację, wyśmiałem. Wydano jednak, ta :)
Yann,
+1, grałem w kilka gier, w których efekt niektórych statystyk jest w zasadzie 1/x. Oczywiście do takiej krzywej nie chcesz x, aby równe zeru, choć!
Brian S
1
Polecam Desmos zamiast WA do projektowania funkcji. Dwa główne powody to to, że działa w czasie rzeczywistym i że można nim manipulować. Oznacza to, y = a^xże można ustawić suwak, aaby grać z tą funkcją. Możesz mieć ich tyle, ile chcesz. Możesz nawet animować suwaki. Właściwie to całkiem miłe. (Odpowiednik Mathematiki Manipulate.)
wchargin
1
Gra Graph (która istnieje od kilku lat) jest dobrym narzędziem do wypróbowania niektórych równań. Używam tego cały czas.
tigrou
20

Zmniejszające się zwroty = malejący instrument pochodny

  • Ponieważ nadal chcesz uzyskać zwroty nawet na wyższych poziomach, oznacza to, że pochodna powinna być dodatnia, w przeciwnym razie budowa większej liczby gospodarstw zmniejszyłaby produkcję żywności (co może nawet mieć sens, jeśli weźmiesz pod uwagę koszty logistyki i utrzymania)
  • Powinno zbliżyć się do zera asymptotycznie, jeśli zbliży się do wartości niezerowej, skończy się to stałym wzrostem na gospodarstwo na pewnym poziomie
  • w zależności od tego, jak szybko spada do zera, możesz mieć górny limit lub nieograniczoną funkcję

Więc co musisz zrobić? Wybierz funkcję, która spełnia powyższe kryteria i zintegruj ją.
Najprostszym wyborem do tego zadania jest miejsce, w g(t,n) = 1/(t+1)^nktórym n=1wyznacza się granicę między ciągle rosnącymi i ograniczonymi funkcjami.
Potrzebna f(x,n) = ((x+1)**(1-n) - 1)/(1-n)
jest całka g od 0 do x: oto jak wygląda inaczejn

wprowadź opis zdjęcia tutaj
I tutaj jest znormalizowany do tej samej wartości końcowej

wprowadź opis zdjęcia tutaj
Zmieniając wykładnik nmożna łatwo dostosować bilansowanie.
Uwaga: Pochodną tutaj jest produkcja na gospodarstwo, podczas gdy całka jest całkowitą produkcją dla wielu gospodarstw

DenDenDo
źródło
5

Ogólnie rzecz biorąc, równanie liniowe zacznie się od y = mx + b, gdzie bjest twoja wartość początkowa, i mxto, w jaki sposób dostosowujesz wartość początkową wraz ze xwzrostem.

Tak więc pierwsza część twojego równania będzie polegała na tym b, 10że chcesz, aby farmy zaczynały od 10 posiłków.

y = mx + 10

Następnie, w twoim przypadku, chcesz dostosować żywność produkowaną przez co dziesięć gospodarstw. Będziesz musiał podzielić przez dziesięć, aby uzyskać równanie, które działa na każde dziesięć farm (zakładając, że x / 10zwraca liczbę całkowitą, tj . 13 / 10 = 1:

y = m * (x / 10) + 10.

Wreszcie musimy ustalić, w jaki sposób chcemy zmienić żywność dla każdej x / 10farmy. W twoim przypadku chcesz go zmniejszyć o 0,5 (5% z 10), co jest liniowe. Otrzymujemy więc:

y = -0.5 * ( x / 10 ) + 10.

Tak na farmie x = 5, otrzymujemy 5 / 10 = 0, 0 * -0.5 = 0, 0 + 10 = 10. Za farmę x = 11dostajemy 11 / 10 = 1, 1 * -0.5 = -0.5, -0.5 + 10 = 9.5, za farmę 23 dostalibyśmy 9,0.

Następnie wystarczy obliczyć całkowitą żywność dla wszystkich gospodarstw.

y = 0
for( x = 0; x < totalFarms; x++ )
{
    y += -5 * ( x / 10 ) + 10;
}

Ale może ty o 5%, chciałeś, aby spadła o 5% poprzedniej wartości. Tj. 10, 10 * 0.95 = 9.5, 9.5 * 0.95 = 9.025(W tym przypadku kwota, o którą zmniejszamy, staje się coraz mniejsza). Więc zmodyfikujmy równanie. 5%to wykładniczy wzrost typu, a formuła wykładnicza to y = b*m^x.

Nadal mamy b = 10i musimy dokonać podziału przez 10 lew. Więc mamy y = 10*m^(x/10). mjest 0.95, ponieważ chcemy za każdym razem brać 95% wartości. Tak więc równanie dla farmy xjest y = 10*0.95^(x/10).

domyślna
źródło
4

Czy zrobiłby to liniowy malejący zwrot? produkcja na gospodarstwo = (1 - (0,05 * (f / 10))) * wskaźnik produkcji. Daje to szczyt wartości całkowitej produkcji (wskaźnik * # gospodarstw) przy f = 100.

użytkownik55564
źródło
Hej, dziękuję, chociaż szukam ogólnych zasad w
dochodzeniu
2

Możesz rozważyć rozwiązanie algorytmiczne, które pasuje do sytuacji.

To znaczy, zastanów się, dlaczego zwroty w twojej grze maleją, i modeluj je.

Wiele obiektów tego samego typu może przynosić coraz mniejsze zyski, ponieważ mogą istnieć inne zasoby lub obiekty, od których zależą, lub które powodują wąskie gardła lub inne sytuacje ograniczające, takie jak sieć dróg, dostępni pracownicy, transport lub słodka woda lub elektryczność lub cokolwiek innego.

Jedno gospodarstwo może wyprodukować 10 posiłków dziennie w idealnych warunkach, ale wymaga to również dwóch godzin pracy rolnika dziennie. Wymaga również jednej świeżej wody na jedzenie dziennie, a jego własna studnia zapewnia tylko do 5 wody dziennie. Resztę należy zabrać z sąsiedniego strumienia lub rzeki lub przywieźć transportem. Problemem może być także dostarczenie jedzenia tam, gdzie musi być przydatne. Itd. Usuń niektóre lub dodaj więcej w zależności od tego, co chcesz reprezentować, ale mogą to być o wiele bardziej interesujące i znaczące powody, które dodają zainteresowanie i wartość do innych systemów gier, w przeciwieństwie do sztucznej formuły matematycznej nie opartej na innych elementach gry .

Dronz
źródło
1

Jeśli chcesz, aby uogólnione równanie zadzierało, możesz użyć wykresu cosinus: A * cos (Bx + C) + D

Ale zmień go na pół okresu, aby obejmował pseudo wykładniczy wzrost na początku, a następnie krótki okres liniowego wzrostu, aż do ostatecznie malejącego punktu zwrotów. Jedyny problem polega na tym, że wymagałoby to stworzenia nieprzekraczalnego sufitu. Więc po pewnej liczbie gospodarstw nie zobaczysz żadnego wzrostu.

Poniższy obraz to wykres wzrostu tempa dla 30-minutowych biegów, wykonując dokładnie ten sam trening w przygotowaniu. To oczywiście nie jest idealne, ale możesz być w stanie z tego skorzystać, aby znaleźć to, czego szukasz.

Przykład krzywej cosinusowej zastosowanej do określenia malejących zwrotów

Granpappy Shlongdong
źródło