matematykaszkolna.pl
24 paź 23:16
Mariusz: Podstawienia Eulera są ok ale niektórzy tacy jak Banaś zakazują ich stosowania i wtedy trzeba kombinować Kiedyś chciałem tłumaczenie geometrycznej interpretacji podstawień Eulera z rosyjskiej wersji Fichtenholza bo primo miałem wątpliwości co do polskiego tłumaczenia secundo potrzebowałem angielskiego tłumaczenia na inne forum Wiadomo że najlepiej tłumaczy się z oryginału a oryginał jest czy się to komu podoba czy nie rosyjski Sam niestety nie mogłem tego sprawdzić bo za późno się urodziłem i zdążyli usunąć rosyjski z programu nauczania
24 paź 23:33
5-latek : Ale pasuje ci to ?
24 paź 23:36
jc: Mariusz, zadanie z całkowania: jaki kształt przyjmuje kręcąca się skakanka?
24 paź 23:44
Mariusz: Jeśli chodzi o geometryczną interpretację podstawień Eulera to w polskim tłumaczeniu jest ...jako punkt (x0,y0) przyjmujemy punkt w nieskończoności na krzywej ... przetnijmy krzywą prostymi równoległymi do asymptoty (będą one przechodzić przez wspomniany punkt w nieskończoności )... Można przyjąć za (x0,y0) punkt w nieskończoności Na pewno będą przechodzić przez ten punkt w nieskończoności Tu nasuwa się pytanie czym jest nieskończoność Chodzi o to że Banaś zakazuje podstawień Eulera Przeglądając Fichtenholza znalazłem taki rozkład dla funkcji trygonometrycznych
 R(u,v)−R(−u,v) R(−u,v)−R(−u,−v) R(−u,−v)+R(u,v) 
R(u,v)=

+

+

 2 2 2 
Wpadłem na pomysł aby znaleźć coś podobnego dla pierwiastka
25 paź 00:20
5-latek : jesli zakazuje to powimien pokazac co w zamian
25 paź 00:36
Mariusz: Masz rację że powinien ale ... Zostawmy podstawienia Eulera Liczyłeś exponentę macierzy ? Interesuje mnie sposób wykorzystujący raczej rozkład macierzy niż macierz fundamentalną układu równań różniczkowych Pisałeś coś w Pascalu lub w C Chodzi mi o struktury danych Tablica średnio się nadaje do współpracy z plikiem bo z góry trzeba znać jej rozmiar Lepsza byłaby np lista ponieważ dostęp do do elementów listy tak jak i do pliku jest sekwencyjny a dodawanie elementów do listy ograniczone jest tylko ilością pamięci Będzie to działać dla małych plików bo pamięci RAM jest ma ogół mniej niż tej dyskowej
25 paź 08:57
jc: Mariusz, do czego potrzebna Ci eksponenta macierzy? Równania różniczkowe to jedno, ale są jeszcze grupy Liego, zastosowania w fizyce statystycznej, ... A co do wyboru struktury danych, to zaczynamy od określenia wykonywanych operacji i wymagań związanych z zasobami i czasem wykonania.
25 paź 09:31
Mariusz: Do innych zastosowań niż równania różniczkowe metoda z macierzą fundamentalną układu powinna być dobra Co do tej struktury danych to całkiem niedawno chciałem napisać program który eliminowałby powtarzające się linie w pliku i struktura danych taka jak lista wyeliminowałaby potrzebę wielokrotnego czytania pliku
25 paź 10:42
jc: Mariusz, z plikiem możesz postępować następująco: dopisujesz kolumnę z kolejnymi numerami (czas n) sortujesz wg oryginalnych wierzy (czas n ln n) usuwasz powtarzające się wiersze (leżą kolo siebie, czas n) sortujesz wg numerów (czas n) usuwasz numery (czas n) Każdą operację możesz wykonać gotowymi narzędziami. Być może jest gotowiec na wszystko.
25 paź 11:13
b.: Wracając do podstawień Eulera, można je zastąpić podstawieniami: gdy mamy 1−x2 −−> x = sin t lub x=cos t, gdy mamy 1+x2 −−> x = sh t gdy mamy x2−1 −−> x = ch t.
25 paź 11:20
jc: b, Mariusz dobrze o tym wie, ale jest zachwycony podstawieniami Eulera. Dodam, że w drugim przypadku można pozbyć się pierwiastka podstawiając x = tg t.
25 paź 11:29
Mariusz: b tak ale te całki są wprowadzane po całkach z funkcji wymiernej to raz a dwa jak ja chodziłem do szkoły to całki były jeszcze w średniej i nie było tam hiperbolicusów Dlaczego jestem zachwycony podstawieniami Eulera − ponieważ sprowadzają one całki z pierwiastkiem z trójmianu kwadratowego bezpośrednio do całek z funkcji wymiernych Gdyby zakazać podstawień Eulera podobny efekt otrzymalibyśmy rozbijając całkę postaci ∫R(x,ax2+bx+c)dx na sumę całek postaci ∫R(x,ax2+bx+c)dx= ∫R1(x)dx+
 
 b 
x+

 2a 
 
∫R2(ax2+bx+c)

dx+
 ax2+bx+c 
 
 b 
x+

 2a 
 1 
∫R3(

)

dx
 ax2+bx+c (ax2+bx+c)ax2+bx+c 
Problemem może okazać się znalezienie takich funkcji R1(x), R2(x), R3(x) jc korzystając z twojego pomysłu ile razy będziemy musieli czytać plik
25 paź 12:40
5-latek : Mariusz Nie znam sie na zdanym z Twoich problemow Jednak czy z problemem z problemem z informatyki nie powinienes zwrocic sie na dobrym forum z informatyki ? Tak samo z calek . Mozesz napisac list (nie emalia do Pana/i Babas (nie weim kto to jest z prosba o spotkanie w tej sprawie . Przeciez z tego co wiem to sie juz nie uczysz i masz czas .. Pozdrawiam
25 paź 13:09
jc: Mariusz, ile razy widziałeś sensowne zastosowanie takich całek? Ja potrafię wymienić koło 10. W połowie przypadków z różnych powodów lepiej podstawiać inaczej, np. w problemie Keplera. Co do ilości odczytywania pliku, to zależy jak zrealizujesz program, szczególnie sortowanie. Czy interesuje jednokrotne wykonanie zadania? Jak duży jest Twój plik? Czy zainteresowanie jest czysto teoretyczne?
25 paź 13:18
jc: Oczywiście liczby, nie ilości.
25 paź 13:25
Mariusz: 5−latek spróbuj zwrócić się z jakimkolwiek problemem na forum informatyczne Zobaczymy co ci odpiszą Jaki duży plik kilkaset do kilka tysięcy linii Jeżeli chodzi o to ile razy czytać plik to najlepiej tylko raz Co do tego programu to na dobrą sprawę program był nieco inny ale przy pewnych założeniach dał się sprowadzić do tego co już kilka wpisów temu napisałem Mamy plik A oraz plik B Jako wynik wypisujemy linie które występują w pliku A ale nie występują w pliku B Wynik zapisujemy do pliku Jeśli piszemy w C to ścieżki do plików możemy podawać z linii poleceń Najlepiej by było gdybyśmy pliki czytali tylko raz
25 paź 14:20
jc: Sortujesz A i B. Przesuwasz się równocześnie po A i B i wpisujesz do C, co trzeba. Jedno przejście po każdym z plików A i B. Pliki możesz posortować programem systemowym np. sort Program w każdym momencie pamięta tylko linię z A i linię z B, czyli wystarczy pamięć na dwie linie. Nawet nie wiem, czy taki program trzeba pisać, czy nie wystarczy odpowiednie polecenie.
25 paź 14:51
52: jc programujesz w C++ ?
25 paź 14:53
jc: Pytaj, może akurat będę wiedział, ale teraz idę już do pracy. Może Dziadek Mróz przeczyta.
25 paź 14:56
52: jc masz gg ? Albo coś takiego żeby na forum nie gadać ? Ogólnie jest sprawa, że się cały czas uczę tego C++ i chciałbym, aby ktoś czasami coś sprawdził podpowiedział itd.
25 paź 14:59
Mariusz: Wracając do listy to kiedyś próbowałem ją napisać ale wyskoczył mi błąd segmentation fault
25 paź 21:15
jc: 52, nie mam gg, w C++ piszę teraz wyjątkowo, ale coś tam mi zostało. Jest trochę przystępnych podręczników, ale język ciągle się rozwija. Przypomnij, gdzie się uczysz.
25 paź 21:30
52: PWr, ale jeśli chodzi o programowanie to jestem noga i teraz sam sobie robie zadanka i klepie kod.
25 paź 21:31
jc: Dobre były książki Grębosza. Nie wiem na ile aktualne.
25 paź 21:53
Mariusz: Symfonia C++ standard to C++03 chociaż ostatnie wydanie jest z grudnia 2015
25 paź 22:36
hiko: do c++ polecam c++ stephena praty, bardziej dogłebna niż grębosz i bez zbędnego owijania w bawełne
25 paź 23:10
Mariusz: Jeśli chodzi o zadanie z 25 paź 14:20 to myślałem o dwóch listach , jedna byłaby znakowa i przechowywałaby jedną linię pliku (nie wiemy jakiej długości jest linia i ile pamięci zaallokować na łańcuch który w C jest tablicą znakową) a druga lista przechowywałaby wszystkie linie pliku Linia przechowywana byłaby oczywiście w łańcuchu , długość linii poznamy wczytując tę linię do listy Można oczywiście do węzła listy dodać zmienną całkowitą przechowującą numer linii w pliku Te dwie listy są po to aby czytać obydwa pliki tylko raz Gdy próbowałem napisać taką listę to wyskakiwał mi błąd segmentation fault Węzeł jednej listy mógłby wyglądać tak struct wezel1 { char znak; struct wezel1 *nastepny; }; Węzeł drugiej listy mógłby wyglądać tak struct wezel2 { int numer; char* linia; struct wezel2 *poprzedni; struct wezel2 *nastepny; }; Najpierw używamy listy jednokierunkowej aby poznać długość linii i przekopiować ją do tablicy znakowej znajdującej się w węźle listy dwukierunkowej Po przekopiowaniu zawartości listy znakowej do tablicy znakowej znajdującej się w węźle listy dwukierunkowej listę jednokierunkową usuwamy Tylko jak napisać funkcje obsługujące te listy Jak próbowałem napisać takie funkcje to dostawałem błędy jak segmentation fault
26 paź 09:39
jc: Oto program, który czyta dwa uporządkowane pliki aa.txt, bb.txt i wypisuje linie (słowa) z pliku aa.txt, których nie ma w pliku bb.txt. Pliki powinny być posortowane, co możesz zrobić jakim narzędziem systemowym. Czy o to chodziło? −−−−− #include<stdio.h> #include<string.h> int main(){ FILE *fa = fopen("aa.txt", "r"); FILE *fb = fopen("bb.txt", "r"); char s[100], t[100]; int aa, bb; aa=fscanf(fa, "%s", s); bb=fscanf(fb, "%s", t); while(aa==1 && bb==1){ if( strcmp(s,t) < 0 ){ printf("%s\n", s); aa=fscanf(fa, "%s", s); } else if(strcmp(s,t) > 0) bb=fscanf(fb, "%s", t); else { aa=fscanf(fa, "%s", s); bb=fscanf(fb, "%s", t); } } while( aa==1 ){ printf("%s\n", s); aa=fscanf(fa, "%s", s); } fclose(fa); fclose(fb); return 0; }
26 paź 20:31
Mariusz: Z grubsza tak ale linia może zawierać spacje Poza tym czy ja wiem czy sortowanie narzędziami systemowymi to dobry pomysł Dlaczego chciałem wczytywać plik do pamięci − aby czytać każdy z plików tylko raz Dlaczego chciałem użyć listy − ponieważ nie znamy ani liczby znaków w linii, ani nie znamy liczby linii w pliku
26 paź 22:21
Mariusz: jc a może ty podaj przykład zagadnienia do którego rozwiązania użyłbyś listy albo struktur na niej opartych jak stos czy kolejka
26 paź 22:27
jc: Stos kojarzy mi się głównie z podprogramami. Własny stos można użyć do zamiany zwykłej notacji na odwrotną polską, do interpretera programów w odwrotnej notacji (są języki programowania wykorzystujące taką notację np. postscrpt). Kolejki można użyć do programie porównującym pliki (kiedyś użyłem w tym celu kolejki cyklicznej). Kilka razy użyłem kolejki priorytetowej (sortowanie, kody Huffmana, minimalne drzewo rozpinające, może coś jeszcze). Kiedy uczyłem algorytmów, zdarzało mi się implementować struktury wskaźnikowe (zwykle drzewa).
26 paź 22:50
jc: O programie, jak chcesz czytać wierszami, musisz zmienić instrukcje czytania i pisania.
26 paź 22:52
Mariusz: Napisać program który poda liczbę znaków w każdej linii i liczbę linii w danym pliku a wyniki zapamięta
27 paź 09:29
jc: Program liczy wszystkie znaki w linii, łącznie ze znakiem przejścia no nowej linii. Może łatwo modyfikować program tak, aby liczył to, co chcesz. −−−−−−−−−−−−−−−−−−−−−−− #include<stdio.h> int main(){ int n = 0; int k = 0; int c; while( (c=getchar())!= EOF ){ k++; if( c=='\n' ){ n ++; printf("%d %d\n", n, k); k=0; } } return 0; }
27 paź 11:33
Mariusz: Tylko jak te dane zapamiętać bez listy skoro musimy wiedzieć ile pamięci zaallokować jeśli chcemy używać tablicy Mając liczbę znaków w każdej z linii oraz liczbę linii w pliku można wczytać plik do tablicy Ścieżkę do pliku można podać jako argument funkcji main
27 paź 12:25
Mariusz: Oto jak zmieniłem twój kod int main(char argc char** argv) FILE *in; if ((in = fopen(argv[1], "rt")) == NULL) { fprintf(stderr, "Cannot open input file.\n"); return 1; } getchar() zamieniłem na getc(in) fclose(in) − tuż przed return 0; i wydaje się działać Programik wywoływać możemy tak nazwa programu ścieżka do pliku [>> plik z wynikiem ] to w nawiasie kwadratowym jest opcjonalne gdybyśmy chcieli uzyskane dane dalej wykorzystać
27 paź 13:17
Mariusz: Problem z tym kodem jest taki że że liczbę linii w pliku znamy dopiero na końcu działania programu ale aby wczytać plik do tablicy tę liczbę powinniśmy znać na początku
27 paź 13:46
Mariusz: Jakiś czas temu napisałem program rozwiązujący problem Flawiusza na tablicy oid table(int n,int k,int* t) { int i,s,c; for(i=0; i<n; i++) t[i]=1; s=0; c=n; i=0; while(c>=k) { s+=t[i]; if(s==k) { t[i]=0; s=0; c−−; } i=(i+1)%n; } } Podobno można go napisać na liście cyklicznej
28 paź 18:59