[z] Zmienno - wyświetla reprezentację bitową liczb zmiennoprzecinkowych (znak, cecha, mantysa)
dla różnych typów liczb rzeczywistych
[z] Typy - programik do wyświetlania informacji o wszystkich typach arytmetycznych w C++.
Może się okazać potrzebny przy przesiadce na inny kompilator, w którym typy i reprezentacje liczb mogą się różnić.
[z] Monitor (napisany w Borland Pascalu)- do przeglądania, przeszukiwania pamięci (DOSowej)
i ewentualnie zgrania wybranych obszarów do pliku! (program w DOS'ie). Dołączony jest KOD ŹRÓDŁOWY.
[z] Baza danych-pracownicy - mój pierwszy projekt w Borland C++ (w DOS'ie) (ależ się z nim namęczyłem...).
Zawarta tu jest implementacja 'listy'.
[z] Automat - symulator vending-machine. Napisany w MS Visual C++ w MFC
oraz w bibliotece QT pod Linux'a
Zawarte są tu pełne kody źródłowe! Jest to jeden z moich pierwszych programów okienkowych.
Na tym projekcie uczyłem się programowania obiektowego i techniki MVC (Model-View-Controller), tzn. model-perspektywa/widok-sterownik).
Dzielenie wielomianu przez trójmian kwadratowy x^2-p*x-r
Metoda Bairstowa - wykorzystywana do znalezienia przybliżonych wartości pierwiastków zespolonych wielomianu
f(x)=An*Xn+...+A0 o współczynnikach rzeczywistych. Metoda ta unika arytmetyki zespolonej. Dołączona jest dokumentacja.
NWW - Najmniejsza Wspólna Wielokrotność - dwie metody oraz NWD - Największy Wspólny Dzielnik - trzy różne sposoby obliczania. Wszystkie funkcje operują na liczbach 64-bitowych unsigned __int64. W kodzie podane są przykłady oraz najszybsze funkcje. NWW(a,b) = a*b/NWD(a,b)
Algorytmy probabilistyczne:
Ustawianie hetmanów (queens) na szachownicy o rozmiarach n x n (+ dokumentacja). Użyte algorytmy: typu Las Vegas i nawrotów.
Test pokerowy dla algorytmów losowania (dokumentacja)
LazySelect - wybiera k-ty co do wielkości element ze zbioru S różnych parami elementów
Powłoka - [zobacz] - efektywne wyznaczanie najmniejszego koła zawierającego podany zbiór punktów,
za pomocą losowego algorytmu geometrycznego.
Generowanie liczby PI - generowanie liczby Pitagorasa metodą probabilistyczną
Majority - efektywnie sprawdza czy w tablicy jest element dominujący (czyli, taki który występuje więcej razy niż połowa elementów
Algorytm Contract dla szukania minimalnego cięcia w grafie prostym. Graf musi być spójny.
Inne
Funkcja int ahtoi(char *s) działa podobnie jak atoi(),
z tym, że zamienia podany ciąg znaków zapisanej liczby w systemie 16-kowym (hex)
Funkcja int astoi(char *s, int system) działa podobnie jak atoi(), z tym, że zamienia podany ciąg znaków
zapisanej liczby w dowolnym podanym systemie (2 - 36)
Spis liczb pierwszych od 2 do 516521 (wygenerowanych moim programem).
Fibonacci - efektywnie (bez rekurencji) generuje kolejne liczby z ciągu Fibonacciego - jest to ciąg liczb naturalnych,
z których każda (z wyjątkiem dwóch pierwszych) jest równa sumie dwu poprzednich: 1,1,2,3,5,8,13,...
Potęgowanie liczb całkowitych: int powint(int a, int b)
2,6 MB kodów źródłowych w Pascalu w większości moich programów (pod DOS) [spakowane do archiwum rar 651 KB]
Całkowanie numeryczne - implementacja kwadratur prostych i złożonych dla trzech wzorów: Trapezów, Simpsona i 3/8
Pierwiastki funkcji - znajdowanie pierwiastków danej funkcji metodami:
bisekcji, siecznych, stycznych (Newtona) dla wielomianu i dowolnej funkcji (dużo dokumentacji) oraz
- trzy metody iteracyjne rozwiązywania równania: x + ln(x) = 0, czyli f(x)=x + ln(x)
- metody stycznych (NEWTONA) dla dowolnej funkcji dla pierwiastków wielokrotnych
- metoda Fouriera wyznaczania liczby pierwiastków wielomianu w zadanym przedziale
Interpolacja Lagrange'a (wer. 30d-12m-2004) - obliczanie współczynników i
wartości wielomianu interpolacyjnego (podawanie tabeli wartości funkcji).
Użycie wzoru w postaci Newtona. Obliczanie wartości wielomianu metodą Hornera. Dużo dokumentacji, opis metody itp.
Interpolacja Hermite'a (wer. 30d-12m-2004) - obliczanie współczynników i wartości
wielomianu interpolacyjnego (podawanie dodatkowo wartości pochodnych). Dużo opisów, dokumentacji itp.
Obliczaniepierwiastków równania
(wielomianu) trzeciego stopnia a*x^3+b*x^2+c*x+d = 0
Obliczaniepierwiastków równania
(wielomianu) czwartego stopnia a*x^4+b*x^3+c*x^2+d*x+e = 0 (w tym 2-go i 3-go st.)
Funkcja void LosowaPermutacja(int *P, int N) - szybko generuje losową permutację długości N
Funkcje bool PermLexSucc(int N, int *P, int *Q), bool PermLexSuccSelf
(int N, int *P) ustalają następnika permutacji w kolejności leksykograficznej
Funkcja int LInwersji(int N, int *P) podaje liczbę inwersji w permutacji P;
np. 3,1,4,2 ma 3 inwersje: (3,1),(3,2),(4,2)
Funkcja double DetMacierz(int Wymiar, double *M) liczy bardzo szybko wyznacznik macierzy M
(metodą sumowania permutacji iloczynów - z definicji wyznacznika)
- korzysta z dwóch powyższych funkcji
Rozwiązywanie układu równań liniowych metodą eliminacji Gaussa (wer. 17d-12m-2004)
wraz z dokładnym opisem algorytmu.
Rozwiązywanie układu równań liniowych metodą iteracyjną Gaussa-Seidla (wer. 12d-1m-2001);
Dwa sposoby: wolniejszy ale nie tworzy żadnej nowej macierzy ani wektora
oraz sposób szybszy ale trzeba zapamiętać dodatkową macierz i wektor
Rozwiązywanie układu równań liniowych metodą iteracyjną Jackobiego (wer. 11d-1m-2001)
Potęgowanie modulo metodą iteracyjnego podnoszenia do kwadratu.
Można obliczyć np. (1234567890123456789^1234567890123456789) mod 5]
Liczby pierwsze: sprawdzanie czy podana liczba jest liczbą pierwszą;
rozkład liczby na czynniki pierwsze - faktoryzacja;
generowanie liczb pierwszych (metoda sita Eratostenesa)
Generowanie liczb doskonałych - l. d., to liczba naturalna równa sumie wszystkich swoich dzielników
mniejszych od niej samej, np. 6 = 1+2+3, 28 = 1+2+4+7+14
QuickSort - szybkie sortowanie - rekurencyjnie
- możliwość wskazania, która tablica ma być sortowana i
- do której tablicy mają być zapisane indeksy wskazujące na kolejność posortowanych elementów
Knapsack - Problem plecakowy
Optymalizacja:
Metoda pełzającego sympleksu i spadku po współrzędnych
(Neldera-Eada) (wer. 21d-5m-2002) [zobacz]- szukanie minimum funkcji wielu zmiennych
oraz wizualizacja tego procesu. Implementacja algorytmu jest pokazana na przykładzie
funkcji dwóch zmiennych (jasność wykresu przedstawia trzeci wymiar).
Oczywiście algorytm można swobodnie używać do funkcji o dowolnej liczbie zmiennych!
Program do szukania minimum dowolnej funkcji dowolnej liczby zmiennych metodą pełzającego sympleksu.
Podajemy liczbę zmiennych, nazwy zmiennych, tekst funkcji tych zmiennych (wyrażenie arytmetyczne),
dwa wektory określające zakres przestrzeni, liczbę losowych punktów startowych lub własny punkt startowy i
ewentualnie inne dodatkowe parametry. Program znajduje optymalny wektor zmiennych. Aplikacja wyposażona jest w
szybki parser wyrażeń arytmetycznych.
Minimalizacja funkcji jednej zmiennej. Metody:
- podziału równomiernego;
- podziału dychotomicznego - tylko dla funkcji ściśle unimodalnych;
- wykorzystując pochodną funkcji
Inne:
Porównywanie szybkości uczenia Sztucznej Sieci Neuronowej
z członem momentum i bez (różne wartości alfa) (bardzo dużo dokumentacji oraz inne materiały)
Kompleksowa implementacja Sztucznej Sieci Neuronowej typu BackPropagation
(uczenie pod nadzorem) w postaci łatwej do użycia klasy (w C++ Builder/Visual). Posiada możliwość zapisania do pliku
parametrów nauczonej sieci i ich ponownego wczytania. Możliwość ustalania bardzo wielu parametrów nauki, duża skalowalność.
Zastosowano w jej implementacji wiele metod przyspieszających uczenie, m.in. człon momentum (Momentum BackPropagation), dynamicznie dobierane współczynniki eta (szybkość uczenia), losowo wybierane wzorce do nauki, ustalanie odpowiedniego losowania początkowych wag i wiele innych. Wszystko opisane jest w obszernej dokumentacji (wraz z opisem matematycznym i ogólnym działania SSN). Dołączony jest także rozbudowany program do nauki SSN, z możliwością ustalania wszelkich parametrów i wizualizacją procesu uczenia (program okienkowy w Borland C++ Builder). Zobacz [1] [2]
Matematyka finansowa: Funkcje obliczające wartość końcową strumienia n wypłat
(tzn. wartość w chwili n)
A -początkowa kwota; b,d -współczynniki zmian wartości renty A[i];
A[i+1] = A[i]*b + d; q =1+p; p-oprocentowanie za 1 okres wypłat (okres kapitalizacji pokrywa się z okresem wypłat);
n = liczba okresów wpłat (i kapitalizacji, bo wypłaty są zgodne); m = liczba okresów niezmiennych/stałych wypłat;
k+1 = liczba zmian kwot: (k-1)*m < n <= k*m => k = sufit z n/m:
- Wartość końcowa renty wypłacanej z dołu - tworzy Uogólniony ciąg Arytmetyczno-Geometryczny
- Renta tworząca Uogólniony ciąg Arytmetyczny (b=1, m>=1); Wymagania: n,m>=1 (n=>m)
- Renta tworzy ciąg Arytmetyczny (b=1; m=1); Wymagania: d>=0; n>=1
- Renta tworząca Uogólniony ciag Geometryczny (d=0); A[i]=A*b^(i-1); Wymagania: m>=1
- Renta tworząca ciag Geometryczny (d=0; m=1); Wymagania: b>0
Liczba wejść na witrynę od dnia 2004-12-26: 327167. Twój IP: 38.103.63.17 Strona umieszczona na serwerze epokaY.net
- Freelance studio - grupy niezlażnych projektantów (marketing internetowy, projekty graficzne, programowanie)
epokaY.net polaca książkę: Marketing internetowy w wyszukiwarkach
Po przeczytaniu tej książki przestaniesz myśleć o reklamie internetowej jako o kosztach koniecznych,
a zaczniesz ją postrzegać jako inwestycję.