Cześć. Dostałem do domu następujące zadanie:
Zadanie 4. Wirujący dysk i mrówka (0–11) Równanie opisujące ruch punktu po okręgu o środku w punkcie (0,0) jest następującej postaci: gdzie: r – promień okręgu, t – czas, T – czas jednego pełnego okrążenia (okres ruchu). Przy użyciu dostępnych narzędzi informatycznych wykonaj poniższe polecenia:
Zadanie 4.1. Dokonaj analizy toru mrówki dla r=5, T=12,5, krok czasowy Δt=0,05, począwszy od trzeciej sekundy ruchu (t_pocz=3). Wskaż, po jakim upływie czasu (z dokładnością do setnych części sekundy) w położeniu mrówki współrzędna y-owa stanie się większa od x-owej.
Zadanie 4.2. Mrówka znajdująca się w środku okrągłej płyty obracającej się wokół własnej osi rozpoczęła marsz z szybkością v wzdłuż promienia tej płyty. Droga, którą przebyła mrówka, wyraża się wzorem r=vt. Oznacza to, że wraz z upływem czasu rośnie odległość mrówki od środka płyty, a ponieważ tarcza wiruje (jej ruch opisują wzory na początku zadania), torem mrówki dla obserwatora z zewnątrz jest spirala. Jeżeli T=10, Δt=0,5, v=1, wykreśl tor ruchu mrówki w ciągu 10 pierwszych sekund ruchu. Zadbaj o czytelność i przejrzystość wykresu. Uzyskany wykres zapisz w pliku.
Zadanie 4.3. Oblicz sumaryczną długość odcinków łączących punkty leżące na torze, jaki przebyła mrówka w ciągu 10 pierwszych sekund, począwszy od punktu (0,0), jeżeli Δt=0,5. Spiralny tor mrówki opisany został w poprzednim podpunkcie. Wynik podaj z dokładnością do 4 miejsc po przecinku.
Do tej pory zrobiłem tyle:
#include <iostream> #include <math.h> #include <cmath> using namespace std; int main() { //a) float x1=0,y1=0; int r=5; int t=3; float T=12.5; float t2=0; float Pi=3.14159265359; for(int i=0; t<=12.5; i++) { t2=t+0.05*i; x1=r*sin(2*Pi*t2/T); y1=r*cos(2*Pi*t2/T); if(y1>x1) { cout<<"zad 4.1"<<endl; cout<<"Opdowiedz: Wspolrzedna y bedzie wieksza o x po czasie: "<<t2<<"sek"<<endl; break; } } //b) float x=0,y=0; float x2=0,y2=0; int v=1; float dt=0.5; float tb=10; float t3=0; float wynik=0; for(int i=0; t3<10; i++) { t3=t3+0.5; x2=x; y2=y; x=t3*sin(2*Pi*t3/tb); y=t3*cos(2*Pi*t3/tb); //c wynik=wynik+sqrt(((x*x)-(x2*x2))+((y*y)-(y2*y2))); cout<<wynik<<endl; } return 0; }
Jak widać podpunkt 4.1 i 4.2 jest zrobiony. Od ponad godziny myślę nad 4.3 i nie wiem co źle zrobiłem. Wcześniej to zadanie robiliśmy na lekcji w excelu stąd wiem co powinno wyjść. Cząstkowe wyniki ( ten cout co jest na końcu ) powinny wyjść
0,5 |
0,546757244 |
0,6299448 |
0,737333644 |
0,85990397 |
0,992044483 |
1,13040398 |
1,272956222 |
1,418437666 |
1,566032173 |
1,715194334 |
1,865548157 |
2,016827144 |
2,168837711 |
2,321436148 |
2,474513699 |
2,627986641 |
2,781789533 |
2,935870521 |
3,090188005 |
10 |
mi tymaczasem wychodzą znacznie większe. Zobaczycie to gdy uruchomicie program. Prosze o rady i pomoc.