Kalkulator kinematyczny

Podobne dokumenty
Szczególna i ogólna teoria względności (wybrane zagadnienia)

Dynamika relatywistyczna

V.6 Pęd i energia przy prędkościach bliskich c

Szczególna i ogólna teoria względności (wybrane zagadnienia)

Programowanie obiektowe, wykład nr 7. Przegląd typów strukturalnych - klasy i obiekty - c.d.

Podstawy programowania obiektowego

Zaawansowane programowanie w C++ (PCP)

Język C++ wykład VI. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VI. dr Jarosław Mederski.

PARADYGMATY PROGRAMOWANIA Wykład 3

Programowanie w C++ Wykład 14. Katarzyna Grzelak. 3 czerwca K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27

Wstęp do Programowania 2

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

Programowanie obiektowe i zdarzeniowe

Metody Metody, parametry, zwracanie wartości

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Programowanie 2. Język C++. Wykład 3.

Programowanie komputerowe. Zajęcia 7

3. PŁASKI STAN NAPRĘŻENIA I ODKSZTAŁCENIA

Dynamika relatywistyczna

Programowanie obiektowe i C++ dla matematyków

Programowanie - instrukcje sterujące

Zagadnienie dwóch ciał

Programowanie Obiektowe i C++

V.6.6 Pęd i energia przy prędkościach bliskich c. Zastosowania

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

Wykład 16. P 2 (x 2, y 2 ) P 1 (x 1, y 1 ) OX. Odległość tych punktów wyraża się wzorem: P 1 P 2 = (x 1 x 2 ) 2 + (y 1 y 2 ) 2

TEMAT : KLASY DZIEDZICZENIE

KLASY cz4. Dorota Pylak. destruktory składowe statyczne przeciążanie operatorów. wskaźniki

Co to jest wektor? Jest to obiekt posiadający: moduł (długość), kierunek wraz ze zwrotem.

Programowanie w Javie 1 Wykład i Ćwiczenia 2 Przegląd podstawowych klas w Javie (elementy programowania obiektowego) Płock, 16 października 2013 r.

Programowanie 2. Język C++. Wykład 2.

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

= i Ponieważ pierwiastkami stopnia 3 z 1 są (jak łatwo wyliczyć) liczby 1, 1+i 3

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Mechanika relatywistyczna Wykład 13

Projektowanie obiektowe. dr Jarosław Skaruz

Programowanie obiektowe

Dodatkowo klasa powinna mieć destruktor zwalniający pamięć.

Szablony funkcji i szablony klas

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Język ludzki kod maszynowy

Wprowadzenie do UML, przykład użycia kolizja

Do czego służą klasy?

Zad.30. Czy można utworzyć klasę, która implementuje oba interfejsy?

Zadania kinematyki mechanizmów

Podstawy Programowania Obiektowego

1. Liczby zespolone i

Operator przypisania. Jest czym innym niż konstruktor kopiujący!

Przeciążanie operatorów

Programowanie obiektowe

1 Geometria analityczna

Programowanie obiektowe C++

Diagramy UML, przykład problemu kolizji

Rozdział 2. Krzywe stożkowe. 2.1 Elipsa. Krzywe stożkowe są zadane ogólnym równaniem kwadratowym na płaszczyźnie

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30

Wstęp do wiadomości teoretycznych (nie, nie jest to masło maślane ani wstęp, wstępów proszę cierpliwie czytać)

Feynmana wykłady z fizyki. [T.] 1.1, Mechanika, szczególna teoria względności / R. P. Feynman, R. B. Leighton, M. Sands. wyd. 7.

Mechanika relatywistyczna Wykład 15

Przykład implementacji przeciażeń operatorów problem kolizji

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Wykład 4: Klasy i Metody

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Algebra liniowa II. Lista 1. 1 u w 0 1 v 0 0 1

Podstawy programowania w języku C++ Zadania

C++ - polimorfizm. C++ - polimorfizm. C++ - polimorfizm. C++ - polimorfizm. C++ - polimorfizm POLIMORFIZM

Wykład 2 - zagadnienie dwóch ciał (od praw Keplera do prawa powszechnego ciążenia i z powrotem..)

Mechanika. Wykład 2. Paweł Staszel

Języki i metody programowania Java Lab2 podejście obiektowe

Podstawy Programowania Obiektowego

#include <iostream.h> #include <conio.h>

Zadania egzaminacyjne

PARADYGMATY PROGRAMOWANIA Wykład 4

Michał Praszałowicz, pok strona www: th- wykład 3 godz. za wyjątkiem listopada Egzamin: esej max.

Dynamika relatywistyczna

Lista dwukierunkowa - przykład implementacji destruktorów

Zaawansowane programowanie w języku C++ Przeciążanie operatorów

Zaawansowane programowanie w C++ (PCP)

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Przypomnienie o klasach i obiektach

TEMAT : KLASY POLIMORFIZM

Programowanie obiektowe w C++ Wykład 12

Programowanie i struktury danych. Wykład 4 Dr Piotr Cybula

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) { zdefiniuje. Integer::operator=(ri);

IV.4.4 Ruch w polach elektrycznym i magnetycznym. Siła Lorentza. Spektrometry magnetyczne

Cząstki elementarne i ich oddziaływania III

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Programowanie obiektowe w języku

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy WSKAŹNIKI KLASOWE

Aproksymacja. j<k. L 2 p[a, b] l 2 p,n X = Lemat 1. Wielomiany ortogonalne P 0,P 1,...,P n tworza przestrzeni liniowej Π n. Dowód.

Wartości domyślne, szablony funkcji i klas

Kinematyka, Dynamika, Elementy Szczególnej Teorii Względności

Zadanie. Oczywiście masa sklejonych ciał jest sumą poszczególnych mas. Zasada zachowania pędu: pozwala obliczyć prędkość po zderzeniu

Programowanie, część I

Materiały do zajęć VII

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

Jaki musi być kąt b, aby siła S potrzebna do wywołania poślizgu była minimalna G S

Lista. Algebra z Geometrią Analityczną. Zadanie 1 Przypomnij definicję grupy, które z podanych struktur są grupami:

Transkrypt:

Kalkulator kinematyczny Marcin Abram WFAIS UJ Kraków POLAND 20 sierpnia 2009

Temat projektu Cel Stworzenie kalkulatora, który obliczałby maksymalny kąt wiązki produktów reakcji A + B C 1 +... + C n. Informacje na wejściu Energia i masy cząstek A i B; Masy cząstek C 1,..., C n ; Informacje na wyjściu Maksymalny kąt, pod którym można zaobserwować produkty reakcji;

Stworzenie Sposób realizacji Obiektowej klasy Ped jako czterowektorów; Obiektowej klasy Pchniecie jako macierzy pchnięcia Lorentzowskiego; Naturalnych operacji na obiektach klasy Ped i Pchniecie: dodawania/odejmowanie; mnożenie skalarne (pędów); składanie macierzy pchnięcia z czterowektorem i operacja odwrotna; Dlaczego obiektowo? Automatyczna kontrola poprawności wprowadzanych danych (np. ujemna energia, ujemna wartość pędu, tj. E 2 < m 2 ); Ukrycie implementacji dla użytkownika (tzw. abstrakcja danych); Łatwość użycia;

Klasa Pchniecie class Pchniecie { private: double M_[4][4]; public: Pchniecie(double gamma, double x_, double y_, double z_); Pchniecie(Ped pa, Ped pb); ~Pchniecie(){} // wypisanie double gamma(); double beta(); void wypisz(); }; // przeciazone operatory double& operator() (unsigned i, unsigned j); double operator() (unsigned i, unsigned j) const; Ped operator*(const Ped &p) const;

Klasa Ped class Ped { private: double p_[5]; public: Ped(); Ped(double E, double px, double py, double pz); Ped(double E, double m, double x, double y, double z); ~Ped(){} // wypisz double E() const { return p_[0]; } double px() const { return p_[1]; } double py() const { return p_[2]; } double pz() const { return p_[3]; } double pp() const { return p_[4]; } double p() const { return Sqrt(p_[4]); } double mm() const { return (p_[0]*p_[0] - p_[4]); } double m() const { return Sqrt(p_[0]*p_[0] - p_[4]); } double ax() const { return p_[1]/sqrt(p_[4]); } double ay() const { return p_[2]/sqrt(p_[4]); } double az() const { return p_[3]/sqrt(p_[4]); } (...)

Klasa Ped (...) void wypisz(); void losuj(double E, double m); }; // przeciazanie operatorow int operator==(const Ped &p2) const; Ped operator+(const Ped &p2) const; Ped operator-(const Ped &p2) const; Ped operator*(const Pchniecie &M) const; double operator*(const Ped &p2) const; double operator() (unsigned i) const; Jak dokładnie przeciążać operatory: http://pl.wikibooks.org/wiki/c%2b%2b/przeciążanie_operatorów http://www.intercon.pl/~sektor/cbx/advanced/overloading.html

Przykład użycia Ped pa(10, 1, 1, 0, 0); // Tworzy czteropęd o E=10, m=1 Ped pb(3, -1, 1, 0); // Tworzy czteropęd {3, -1, 1, 0} Ped pc = pa+pb; // Dodawanie czteropędów Pchniecie L(pa, pb); Ped lpa = L*pa; Ped lpb = L*pb; Ped lpc = lpa + lpb; double a = lpa * lpb; L.wypisz(); Ped lpcl = lpc*l; // Tworzenie macierzy pchnięcia // Transformacja pchnięcia // Mnożenie skalarne WEKTORÓW pędu lpa, lpb // Wypisanie macierzy pchnięcia // Transformacja odwrotna

Teoria Transformacja Lorentza pędów: Dla układu środka masy (CM), mamy: p 1 = p 1, (1) p 2 = p 2, (2) p 3 = γ(p 3 + βe ). (3) p 2 1 + p 2 2 + p 2 3 = p 2. (4) Po transformacji Lorentza do układu laboratoryjnego (LAB): p 2 1 p 2 + p2 2 p 2 + (p 3 βγe ) 2 (γp ) 2 = 1. (5)

Ponieważ p 2 1 + p 2 2 + p 2 3 = p 2 oraz p 3 = γ(p 3 + βe ), to: Wprowadzamy: Wtedy: p 3,max = γ(p + βe ), (6) p 3,min = γ( p + βe ). (7) v p 0 E = p0. (8) p 2 + m2 0 p 3,min = γ( p + βe ) = γp ( β v 1 ) = 0, (9) jest warunkiem na to, aby elipsa przechodziła przez punkt (0, 0). Jest to jednoznaczne z warunkiem β = v.

Maksymalny kąt Bez szkody dla ogólności możemy połóżyć p 1 = 0. Wówczac: Podstawiając do równania na elipsę dostajemy: p 2 = p 3 tgφ. (10) p 2 3 tg 2 φ + (p 3 βγe ) 2 γ 2 = p 2. (11) Rozwiązując ze względu na p 3 dostajemy: p (±) 3 = βγe ± β 2 γ 2 E 2 (1 + γ 2 tg 2 φ)(β 2 γ 2 E 2 γ 2 p 2 ) 1 + γ 2 tg 2. (12) φ

Maksymalny kąt dla zerowania się wyrażenia pod pierwiastkiem. Dostejemy: tg 2 v 2 φ max = γ 2 (β 2 v 2 ). (13)

Rysunek: Część wszystkich cząstek, które mogą być zarejestrowane przez detektor o danej szerokości kątowej (w płaszczyźnie wiązki wejściowej).

Bibliografia B. Hagedorn, Relativistic Kinematics, New York, Amsterdam, W. A. Benjamin, Inc., 1964. Sektor van Skijlen, C++ bez cholesterolu (wersja internetowa) http://www.intercon.pl/ sektor/cbx/