Skocz do zawartości

Pierwiastek


MB22

Rekomendowane odpowiedzi

lub zrob skrypt pierwiastek() z takim kodem w srodku

GML
p=0; //początek przedziału w którym wyszukujemy wyniku

k=argument0; //jako argument otrzymujemy liczbę której pierwiastek chcemy znaleźć

while(k-p>0.001) //W pewnym momencie nasz przedział wyszukiwania będzie bardzo mały. Taka dokładność nas zadowala.

{

q=((p+k)/2); //Strzelamy w połowę przedziału i zapisujemy do zmiennej q (zauważ, że tu nie zaokrąglamy już q)

if(q*q>=argument0) //jeśli q jest większe lub równe szukanemu pierwiastkowi

k=q; //ucinamy przedział o wszystkie liczby większe od q (ustawiamy koniec przedziału wyszukiwania na q)

else //w przeciwnym wypadku...

p=q; //ucinamy przedział o wszystkie liczby mniejsze od q (zauważ, że brak tu +1 z poprzedniego kodu)

}

return p;

a odwoluj sie do tego przez pierwiastek(liczbaktoracheszspierwiastkowac)

 

jest to metoda szybsza i mozesz ustalic jakie przyblizenie chcesz osiagnac. Jak chcesz zobaczyc o cb biega w tym kliknij

Odnośnik do komentarza
Udostępnij na innych stronach

@TheMarcQ: lol. To jest znacznie wolniejsze. Nawet pusty skrypt jest wolniejszy od dowolnej funkcji z rozdziału o funkcjach matematycznych.

Pierwiastek dowolnego stopnia z dowolnej liczby wyliczysz następująco:

power(liczba, 1/stopień_pierwiastka)

Odnośnik do komentarza
Udostępnij na innych stronach

jest to metoda szybsza i mozesz ustalic jakie przyblizenie chcesz osiagnac.

Sam jesteś szybszy. Dam głowę, że GMowe sqrt również działa logarytmicznie i powinno działać równie szybko.

Ale oczywiście z racji, że to jest GM to algorytm własny o tej samej złożoności będzie na pewno działał wolniej od wbudowanej funkcji.

Wyliczanie pierwiastka posłużyło mi w tym artykule tylko jako wybitny przykład zastosowania binara. Nie ma sensu się bawić jak mamy funkcję wbudowaną.

Odnośnik do komentarza
Udostępnij na innych stronach

Można to zbadać.

GML
zmienna1=current_time;

repeat(1000)

{

//kod here

}

zmienna2=current_time;

show_message(string(zmienna2-zmienna1)+' milisekund!');

Można się też pobawić zapisując do tablicy i wyciągnąć średnią, podejrzewam że funkcje czasu w gmie nie są zbyt dokładne.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...