Daha çox

Kəsişmə Əməliyyatı Komutativdirmi?

Kəsişmə Əməliyyatı Komutativdirmi?


Xəritə örtüşməsində, xəritə təbəqələrinin kəsişməsi kommutativ bir əməliyyatdır, yəni layer_A kəsişmə layer_B = layer_B kəsişmə layer_A? A təbəqəsi bir kvadrat və B təbəqəsi üçbucaqdırsa. Bu halda, (A kəsişən B) == (B kəsişmə A)?


Ümid edirik ki, bu rəqəm kifayət qədər açıqdır:

Kimdən: http://www.gaia-gis.it/spatialite/spatialite-tutorial-2.3.1.html


Eynilə çoxluq kəsişməsində olduğu kimi, həndəsi kəsişmə (əslində məkanla müəyyən edilmiş sərhədləri olan iki dəstin kəsişməsidir) həm kommutativ, həm də assosiativdir. (A ∩ B) ∩ C = A ∩ (B ∩ C) = (C ∩ B) ∩ A = C ∩ (B ∩ A).

Təcrübədə, proqram tez -tez atributların çıxışla necə əlaqəli olduğunu müəyyən etmək üçün giriş sırasını istifadə edir; lakin məkan çıxış həndəsi giriş sırasından asılı olmayaraq yenə də eyni olmalıdır.

Çıxışınızın, əməliyyatı həyata keçirmək üçün istifadə etdiyiniz koordinat sistemindən və proyeksiyasından asılı olacağını da unutmayın. Bu, kommutativ və əlaqəli xüsusiyyətlərini dəyişməsə də, əməliyyat (lar) üçün istifadə olunan proyeksiyanı seçmək üçün sifariş və qruplaşdırma istifadə edilə bilər.


Mmmm Mən də A ∩ B = B ∩ A olduğunu açıq şəkildə düşündüm, amma sonra Kirkin fikri məni düşündürdü. Beləliklə, burada bir nəzəriyyə var. Alovda vurmaqdan çekinmeyin!

Bu ssenaridə iki çoxbucaq var, A (qırmızı) və B (mavi). Qırmızı nöqtələr ən kiçik grid dəqiqliyini təmsil edir:

Hesablamama görə, burada kəsişirlər:

Kəsişmə nöqtəsinin ən yaxın ızgaraya necə yapışdığına diqqət yetirin, çünki icazə verilən ən kiçik dəqiqlik budur. Bu vəziyyətdə sifarişin əhəmiyyəti yoxdur və A ∩ B = B ∩ A

İndi çoxbucaqlı C (sarı) təqdim edin:

(A ∩ B) ∩ C kəsişməsi belədir:

Bunun səbəbi, A və B kəsişmələrinə ən yaxın şəbəkə nöqtəsinin artıq göstərildiyi kimi olması və C ilə üst -üstə qoyulması bu nəticəni verə bilər (mənim kobud eskizim tam olaraq kvadrat deyil, ona görə də bir baxışda aydın görünə bilməz). Ancaq (A ∩ C) ∩ B bunu verir:

Çünki A və C kəsişməsinə ən yaxın şəbəkə B ilə kəsişmənin fərqli bir formasına səbəb olur.

Beləliklə: Mən yalnız iki çoxbucaqlı ilə heç bir fərq olmadığını iddia edərdim, ancaq üç və ya daha çox fərq ola bilər. Böyük bir dəqiqliklə fərqlər kiçik olardı, amma inanıram ki, onlar ola bilər.

Bu doğru görünür, yoxsa kimsə konsepsiyada deşiklər seçə bilərmi?!?!?!


$ X $ güc dəsti simmetrik fərq və kəsişmə halqasıdır

Mən mücərrəd cəbr imtahanı üçün oxuyuram və araşdırma suallarından biri bu idi:

$ X $ bir dəstə olsun və $ mathcal P (X) $, $ X $ güc dəsti olsun. $ Delta $ = simmetrik fərq (a.k.a. "XOR") və $ bigcap $ = kəsişmə əməliyyatlarını nəzərdən keçirək.
a) $ Delta $ və $ bigcap $, $ P (X) $ halqa halına gətirirmi?
b) Əgər belədirsə, birlik olan bir üzükdürmü?
c) Üzük kommutativdirmi?
d) Bir sahədirmi?

A) və b) hissələri üçün düşünürəm ki, birliyi olan bir halqa meydana gətirir, amma bunu sübut etməyə necə başlayacağımdan tam əmin deyiləm.

C) hissəsi üçün, $ mathcal P (X) $ simmetrik fərq və kəsişmə altında bağlandığı üçün kommutativ bir halqadır, elə deyilmi?

D) işə necə başlayacağınızdan da əmin deyilsiniz.

Bu sualı tam başa düşmək istərdim, buna görə hər hansı bir giriş çox faydalı olardı. Çox sağ ol!


2 Cavab 2

Yanlış bir fərziyyə etdiniz.

Üçlük A və B ilə B və C arasında bir əlaqədirsə, A ilə C arasında heç bir əlaqə yoxdursa, A və C -yə qoşulmaq olmaz vermək səndə sıralar yoxdur. Əslində sizə verir m * n sıralar, harada m A və satırların sayıdır n B -dəki satırların sayıdır.

əvvəl A və C -yə qoşulsaq:

Qeyd: Kollec 30 ildən çox əvvəl idi - inşallah konseptual olaraq anlayırsınız və faktiki əlaqəli cəbr üçün düzgün sintaksisə yenidən yaza bilərsiniz.

A -da 20, B -də 30 və C -də 40 satırınız varsa və B -dəki hər bir satır A -da bir və yalnız bir satıra uyğundursa, C -dəki hər satır B -də bir və yalnız bir satıra uyğundur. A -dan B -yə qoşulduqda, C -yə 30 satır qoşulduqda 30 satır geri alacaqsınız, 40 satır geri alacaqsınız.

Əvvəlcə A -dan C -yə qoşulursanız, heç bir əlaqəniz yoxdur hansı cərgə cütləridir etibarlı, geri qayıdacaqsınız mümkün olan hər cüt satır - 800 sıra. B -ni 800 sıraya qoşduğumuzda, B və A arasındakı əlaqə, B -dəki bir sıranın yalnız bir xüsusi A sırası olan AC sıralarına uyğun gələ biləcəyini bildirir - bunlardan 40 -ı olacaq (hər C satırı üçün bir ədəd). Bu 40 -dan yeganə həqiqi uyğunluq, B və C arasındakı əlaqənin də etibarlı olduğu matçlardır. Və bilirik ki, cari B sırasına uyğun gələn C cərgələri başqa bir B sırasına uyğun gələ bilməz. Beləliklə, bir B sırası üçün uyğun gələn 2 AC satırı ola bilər, digər 4 üçün, başqa biri üçün yalnız 1.

Bununla birlikdə, hər C satırının bir (və yalnız bir) B sırasına uyğun gəldiyini bilirik, buna görə də ümumi matçların sayı yenidən 40 -a çıxacaq - sanki ilk A və B, ya da B və C matçlarımız olduğu kimi eyni 40 matç. .

Beləliklə - birləşmə şərti hansı satırların olduğunu söyləmir etmək uyğunluq - bu, həqiqətən, hansı satırları sizə xəbər verir etmə matç. Onu götürün və bir CROSS JOIN əldə edin - iki cədvəldəki satırların çarpaz məhsulu.


Bunun məkana necə qənaət etdiyini göstərək:

Əvvəlcə məlumat saxlama sahəsini nəzərdən keçiririk. Qoy $ n $, əldə ediləcək ən böyük indeks olsun.

Kommutativ funksiyanı saxlamaq üçün $ n times n $ array istifadə etsəm, $ n^2 $ vahidinə ehtiyac olar.

Eyni məlumatları bu indeks eşleme sxemi ilə saxlamaq üçün 1 ölçülü bir sıra istifadə etsəm, $ frac lazımdır<2> $ vahid yer.

Beləliklə, saxlanan məlumat saxlama sahəsi: $ n^2 - frac <2> = frac <2> = O (n^2) $.

Kod saxlama ölçüsündə artım $ O (1) $ təşkil edir və məlumat saxlama sahəsindəki qənaət kölgədə qala bilər. İşləmə müddətinin artması da hər giriş üçün $ O (1) $ təşkil edir.

Məkana vaxt ayırmaq istəsəniz, xüsusi məhdudiyyətləri təmin edən matrisləri (və ya digər strukturları) təmsil etməyin bir çox yolu var. Arraylar, əlaqəli siyahılar və s. Təmsilin seçimi, hansı əməliyyatları etmək istədiyinizə, hansı tezlik və statistikaya malik olmağınızdan asılıdır və ya quruluşu istifadə edərək və ya dəyişdirərək (məlumat quruluşu seçimi ilə bağlı ən əsas bəyanat). Məsələn bu suala baxın (cavab verdiyim üçün və yadda saxladığım quruluş qeyri -adi olduğu üçün): Alqoritm: Kvadrat Matrisin 1D təsvirində ölçü artımı.

Məkan üçün ticarət vaxtı, yəni yer qənaət etmək üçün bəzi əməliyyatları daha baha başa gətirmək həmişə qazanclı bir təklif deyil. Daha mürəkkəb giriş, hər dəfə quruluşa daxil olduqda daha çox təlimat mənasını verə bilər ki, bu da bəzən kod məkanında məlumat məkanında qazandığınızdan daha çox şey itirməyinizə səbəb ola bilər, eyni zamanda vaxt itirə bilər.

Beləliklə, matrisinizin ölçüsü kiçik olaraq qalırsa və onlardan bir neçəsini yaratsanız, sadəcə məlumat sahəsini boş yerə sərf etmək daha ağıllı bir seçim ola bilər. Əslində, bəzən bəzi hallarda kodu asanlaşdırmaq üçün bir az məlumat boş yerə sərf etməyi seçir. Proqramı daha oxunaqlı və baxımını asanlaşdırmaq üçün bir az yer israf etməyi belə seçə bilərsiniz.


Kommutativ halqalarda və paylayıcı qəfəslərdə razı qalan aksiomalar varmı?

Qurğuların dilinə (semirings də deyilir) fikir verin: $ və $ 1 sabitləri və $ və $ times $ ikili əməliyyatları var. Kommutativ qurğular nəzəriyyəsi adi aksiomalar tərəfindən yaradılır: $ assosiativ, kommutativdir və $ $ times $ assosiativdir, kommutativdir və $ 1 $ $ times $ vahidinə malikdir və $ üçün udulur dəfə $.

Hər bir kommutativ üzük, əlbəttə ki, bir kommutasiya qurğusudur və hər bir paylayıcı qəfəs də ($ bot $ -ı $, $ top $ -ı $ 1 $, $ vee $ -ı $ və $ wedge $ -ı $ kimi şərh edir dəfə $). Əslində, kommutativ halqalar kateqoriyası, paylayıcı qəfəslər kateqoriyasında olduğu kimi, kommutativ qurğular kateqoriyasının tam əks etdirən bir alt kateqoriyasıdır. İkisinin kəsişməsi mənasızdır, bu mənada yalnız əhəmiyyətsiz cəbr həm üzük, həm də qəfəsdir. (Bir qəfəsdə $ top vee top = top $ ancaq üzükdə $ 1 + 1 = 1 $ deməkdir = 1 $.) Maraqlandığım şey, bu iki alt kateqoriyanın mümkün davranışı & quotall & quot etməyə nə qədər yaxın olmasıdır. kommutativ qurğular. Daha dəqiq:

Sual 1. Qazma qurğularının dilində hər kommutativ halqada və hər paylayıcı şəbəkədə doğru olan, lakin bəzi komutativ qurğularda yalan olan buynuz maddəsi varmı?

Kommutativ üzüklər yalnız Horn cümlələrindən istifadə edən qurğular dilində aksiomatizasiya olunmadığından, Horn bəndləri əvəzinə, məsələn, kartezyen ardıcıllıqları haqqında da bilmək maraqlı olardı. Bu kateqoriyanı nəzəri olaraq ifadə etmək olar:

Sual 2. $ Mathcal tam əks etdirən alt kateqoriyası varmı?$ süzülmüş colimits altında bağlanan və kommutativ halqaların və paylayıcı şəbəkələrin alt kateqoriyalarını ehtiva edən, lakin bütün kateqoriya olmayan kommutativ qurğular kateqoriyasına aiddir? (Bundan əlavə, belə bir $ mathcal seçə bilərikmi?$ ki, $ mathbb əksini tapsın [x] $ (= bir generatordakı pulsuz komutativ qurğu) $ mathcal monadik bir funktoru təmsil edir to textbf$ ?)

Ancaq çox icazə vermək istəmirəm - çünki kommutativ üzüklər və paylayıcı şəbəkələr həm qurğular dilində bir birinci dərəcəli cümlə ilə axiomatize edilə bilər, çünki onların ayrılıqlarını nəzərə alsaq, yalnız kommutativ halqalarda və paylayıcı şəbəkələrdə doğru olan bir cümlə ortaya çıxır. lakin ümumi kommutativ qurğularda yanlışdır.

Bəzi kommutativ qurğularda yalançı olan kommutativ halqalarda və paylayıcı şəbəkələrdə doğru olan birinci dərəcəli aksiomanın bir nümunəsidir:

Bütün $ a $ və $ b $ üçün $ c $ və $ d $ var, belə ki $ (c + d) a + d b = b $.

Bu aksiom, hər bir idealın subtraktiv olduğunu söyləmək deməkdir (bu, ikinci dərəcəli axiom prima facie), kommutativ bir halqada və ya paylayıcı qəfəsdəki hər bir idealın subaktiv olmasıdır. Düşünməyi üstün tutduğum yol budur ki, kommutativ halqada ideallar avtomatik olaraq çıxılır, çünki $ -1 $ mövcuddur və paylayıcı şəbəkədə ideallar aşağıya doğru bağlandıqları üçün avtomatik olaraq çıxarılır. Göründüyü kimi, bu kartezyen bir sekans olmasa da, birinci dərəcəli cümlə kimi ifadə edilə bilər.


8 Cavab 8

Çünki birincisi, affine növlərində doğru cavabdır, ikincisi isə deyil. Həqiqətən də, $ R/I $, $ R/J $ nilpotentsizdir $ R/I cap J $ sıfırsızdır, lakin $ R/IJ $ üçün belə deyil.

Bütün təriflərdə olduğu kimi, qəbul edilən tərifin doğru olduğuna dair heç bir "sübut" yoxdur, ancaq intuisiyamıza daha yaxşı uyğun gəldiyini hiss edirik.

Əlbətdə ki, $ R/IJ $ -ı struktur yığın olaraq götürmək, heç bir səbəb olmadan birlik sxemlərinin azalmasına səbəb olardı. Məsələn $ R = k [x, y, z], I = (y, z), J = (x, z) $ götürək. Geometrik olaraq $ x $ -axisin $ U $ birliyini və $ mathbb A^3_k $ affine üç boşluqdakı $ y $ -axisini təsvir edirsiniz. $ I cap J $ ilə düzgün təsvir edilmiş azaldılmış bir quruluşa sahib olmalıdır, halbuki $ IJ = (xy, zx, zy, z^2) $ funksiyası $ z $ nilpotent funksiyasını yerinə yetirəcək, lakin $ U $ -da sıfır deyil. $ U $ təyyarənin $ z = 0 $ qapalı alt bölməsi olmalıdır, çünki səhv hiss edir.

İki alt sistemin birliyini ideallarının məhsulu ilə təyin etmək fikrinə daha qəddar bir etiraz, $ U $ alt hissəsinin praktik olaraq heç vaxt özüylə birliyinə bərabər olmayacağıdır, çünki ümumiyyətlə $ I neq I^2 $: (demək olar ki, həmişə) $ U neq U fincan U $ olardı
Bu pis görünür!

(i) İki qapalı alt quruluşun birləşməsi, istəsəniz iki veriləni ehtiva edən ən kiçik qapalı alt sistem olmalıdır, bu ikisini ehtiva edən bütün qapalı alt sxemlər kateqoriyasındakı ilkin obyekt. Verilmiş iki qapalı alt sxem $ V (I) $ və $ V (J) $ olduqda, bu $ V (I cap J) $ -dır. ($ V $ əməliyyatı qapalı dəstləri və idealları dəyişir və sifariş geri çevrilir.)

(ii) Funksiya-nəzəri baxımdan $ f $ funksiyası (yəni $ A $ halqasının elementi) $ V (I) fincan V (J) $ -da yox olmalıdır (yəni ideal $ V kəsilməsindədir) (I) fincan V (J) $) yalnız $ V (I) $ və $ V (J) $ (yəni $ I $ və $ J $ -da yerləşir), yalnız və yalnız $ f $, $ I cap J $ -da yerləşir. Birliyin adi mənasına bənzər bir şeyə sahib olmaq istəsək, $ V (I) fincan V (J) = V (I qapaq J) $ təyin etmək məcburiyyətindəyik.

Emerton yaxşı izah etdi ki, $ V (I cap J) $ təbii sxem quruluşudur və əlavə etmək istərdim ki, əgər $ V (I) $ və $ V (J) $ bölücülərdirsə, sxem quruluşu $ V (IJ) $ onların birliyinə, yəni bölənlər kimi cəminə. Beləliklə, hər iki versiyanın öz üstünlükləri var.

Hələ də AG öyrənirəm, buna görə də bu cavabla bağlı rəylərə açıqam:

Kateqoriya nəzəriyyəsi baxımından düşünsək:

Qapalı alt quruluşlar birliyi $ operatoradı qapalı alt sxemləri kateqoriyasında bir məhsul olmalıdır R $ (qapalı daldırma ilə). Beləliklə, affine halda, $ R $ idealları kateqoriyasındakı məhsula ehtiyacınız var (daxil olmaqla). Bu kateqoriyadakı məhsul, idealların məhsulu deyil, idealların kəsişməsidir.

Çox güman ki, kəsişmədə işlərin asan olduğunu qəbul edirsiniz: $ V (I) $ və $ V (J) $ -ın ən ağlabatan tərifi $ Spec , R/I times_ lifli məhsul kimidir. Spec , R/J = Spec , R/I otimes_R R/J = Spec , R/(I+J). $

İndi $ V (I) fincan V (J) $ birliyinə baxmaq üçün təbii bir yol, $ V (I) $ və $ V (J) $ kəsişmələri boyunca yapışdırılmasının nəticəsidir, yəni. $ V (I) leftarrow V (I+J) rightarrow V (J) $ diaqramı. Və məlumdur (bax: Ferrand, Dirijor, eniş və s) belə bir itələmənin funksiya halqası lifli məhsul olan affine sxemi ilə sxemlər kateqoriyasında təmsil oluna bilər. Sonra aşağıdakı məşqi edə bilərsiniz: 'diaqonal' xəritəsinin $ R to (R/I) times_ olub olmadığını yoxlayın.(R/J) $ kernel $ I cap J $ ilə cərəyandır. Başqa sözlə, axtarılan lifli məhsul $ R/(I cap J) $ təşkil edir. Bu nəticəyə gəlirik ki, bu itələyici fikir təbii olaraq birlikdəki $ Spec , R/(I cap J) $ olan sxem-nəzəri quruluşun tərifinə gətirib çıxarır.

Əgər MənJ "coprime" dir (yəni, əgər I+J = R) onda doğrudur I & capJ = IJ, buna görə də iki tərif eynidir. Bu, məsələn, doğrudur MənJ fərqli başlıqlardır. Ümumi amillər olduqda nə baş verdiyini göstərmək üçün bu axmaq nümunəni nəzərdən keçirin: R = ℝ [x, y], Mən = J = (x). Beləliklə, bu idealların iki növünün birliyi yenə də y-axis və soruşmaq lazım olan sual, birlikdəki funksiyaların halqası olaraq nə istədiyindir-istəyirsən *R/ *I & capJ = ℝ [x, y]/(x) və ya istəyirsən R/IJ = ℝ [x, y]/(x 2). Məsələ ondadır ki, cəbr həndəsəsi aləmində bu seçim vacibdir, çünki cəbr müxtəlifliyi yalnız nöqtələri ilə deyil, həm də funksiyalar halqasıdır. İstənilən X çeşidi üçün X & cup X = X istəməyiniz ağlabatan görünür, buna görə ilk seçimi daha yaxşı seçərdiniz.

bir əlavə olaraq, ikinci seçim, cəbr həndəsəsi üzrə birinci kursda ümumiyyətlə görmədiyiniz (?) görmədiyiniz "endirilməmiş" bir çeşid nümunəsidir. Bunun üzərində daha çox funksiya var: bir "tam" ölçü üstə bir "sonsuz kiçik" ölçü (yəni bu istiqamətdə yalnız xətti funksiyalarla).

$ begingroup $ Hələ də doğru deyil: əgər $ mathfrak

alt dəsti mathfrak$, kəsişmə və məhsul fərqlidir. Ancaq bunu istisna etsəniz belə, bunun xeyri yoxdur: $ R = k [x, y, z]/(xz-y^2) $, $ mathfrak

= (x, y) $, $ mathfrak= (y, z) $. Sonra məhsul $ (xy, xz, yz) $ və kəsişmə $ (y) $ olur. $ endgroup $ & ndash Graham Leuschke 21 Mart '10, 18:39

$ IJ $ və $ I cap J $ ilə müqayisə etməklə əlaqəli olan Atiyah-MacDonald, exer. 1.13, (iii), s. 9. $ I, J $ -nın baş olduğu halda $ IJ subset rad (IJ) = I cap J. $ (Qeyd: radikal idealların kəsişmələri kimi əsas ideallar da radikal ideallardır).

İki ibrətamiz nümunə (1): $ V (y) fincan V (y) $, burada qeyd edildiyi kimi $ I = J $. Kim x ekseninin koordinat halqasının $ K [x, y]/(y^2) $ olmasını istəyir? (2): $ z $ -axis ($ V_1 $) və $ xy $-təyyarəsinin ($ V_2 $) birliyi olan $ V $ çeşidi. $ I = (x, y) $ və $ J = z $ uyğun əsas ideallardır. $ I cap J = IJ = (zx, zy) $, $ V $ -ın $ V_1 $ və $ V_2 $ və $ IJ $ -ın parçalanmasına uyğun olaraq $ V $ -da yox olan polinom funksiyalarının idealdır. ədədlər.


6 Cavablar 6

Bir sözlə, insanların alqoritmlər yazmaq istədikləri sətirlərdə çıxarmağa bənzər faydalı əməliyyatlar yoxdur.

+ Operatoru ümumiyyətlə əlavə bir monoidin işini, yəni eyniləşdirmə elementi ilə assosiativ əməliyyatı bildirir:

Hamısı eyni cəbr quruluşuna malik olduğundan, bu operatoru tam ədəd əlavə etmək, simli birləşmə və qurma birliyi kimi işlərdə istifadə etmək məntiqlidir:

Və hər hansı bir "birləşdirilə bilən" şeylərin ardıcıllığı üzərində işləyən bir əlaqəli funksiya kimi lazımlı alqoritmlər yazmaq üçün istifadə edə bilərik, məsələn:

Çıxarma - işə qarışdıqda, ümumiyyətlə bir qrup əlavə edən qrupun quruluşundan danışırsınız tərs hər A elementi üçün & eksi A, belə ki:

Və bu, tam ədəd və üzən nöqtəli çıxma və ya hətta müəyyən bir fərq kimi şeylər üçün məntiqli olsa da, sətirlər və siyahılar üçün o qədər də məntiqli deyil. "Foo" nun tərsi nədir?

Tərs olmayan, lakin əksinə olan ləğv edən monoid adlı bir quruluş var ləğv mülkiyyət, belə ki:

Təsvir etdiyiniz quruluş budur ki, burada "ab" - "b" == "a", ancaq "ab" - "c" müəyyən edilməyib. Sadəcə bu quruluşu istifadə edən bir çox faydalı alqoritmimiz yoxdur. Düşünürəm ki, birləşməni seriyalaşdırma kimi düşünürsünüzsə, çıxarmaq bir növ təhlil üçün istifadə edilə bilər.

Perl6 -da, bəlkə də başqaları. & ndash Jon Purdy 29 Oktyabr 15 'də 13:03

Çünki hər iki etibarlı sətrin birləşməsi həmişə etibarlı bir əməliyyatdır, əksinə doğru deyil.

A - b burada nə olmalıdır? Bu suala cavab vermək üçün həqiqətən yaxşı bir yol yoxdur, çünki sualın özü etibarlı deyil.

Çünki simli manipulyasiya üçün - operatorunda kifayət qədər "semantik birləşmə" yoxdur. Operatorlar, həddindən artıq yüklənmənin öz operandları ilə nə etdikləri tamamilə aydın olduqda və simli toplama bu çubuğa uyğun gəlmədikdə yalnız aşırı yüklənməlidir.

Nəticədə, metod zənglərinə üstünlük verilir:

C# dilində, forma olduğu üçün simli birləşmə üçün + istifadə edirik

semantik baxımdan bir funksiya çağırışı yəqin ki, daha "düzgün" olsa da oxumaq rahatdır və mübahisə etmək daha asandır.

+ Operatoru bu kontekstdə həqiqətən yalnız bir şeyi ifadə edə bilər. Stringləri çıxarmaq anlayışı birmənalı olmadığından (əvəz etmək funksiyası (mənbə, oldValue, newValue) "" ilə "" ilə əvəz edildiyindən bu, doğru deyil - və bu funksiya alt sətirləri dəyişdirmək üçün istifadə edilə bilər. yalnız onları silmək deyil).

Əlbəttə ki, problem, operatorun həddən artıq yüklənməsinin operatora ötürülən növlərdən asılı olmasıdır və bir ədədin olması lazım olan bir sətirdən keçsəniz, gözləmədiyiniz bir nəticə əldə edə bilərsiniz. Bundan əlavə, bir çox birləşmə üçün (yəni bir döngədə) StringBuilder obyektinə üstünlük verilir, çünki + hər bir istifadə yeni bir sim yaradır və performans əziyyət çəkə bilər. Beləliklə + operatoru bütün kontekstlərdə uyğun gəlmir.

Simli birləşmə üçün + operatorundan daha yaxşı semantik birliyə malik olan operator yükləmələri var. Budur iki kompleks ədəd əlavə edən biri:

Əlavə işarəsi, ehtimal ki, daha çox hallarda kontekstual olaraq məna kəsb edir, lakin Python -da əks nümunə (bəlkə də qaydanı sübut edən bir istisna) + təmin etməyən dəst obyektidir.

Niyyətin qeyri -müəyyən ola biləcəyi üçün + işarəsini istifadə etməyin mənası yoxdur - kəsişmə və ya birləşmə qurmaq deməkdirmi? Bunun əvəzinə | istifadə edir birlik üçün və & amp kəsişməsi üçün:

& amp ilə dəstləri & amp və | ilə yaxşı uyğun olardı dəstləri a olmasa da

operator. & ndash supercat 29 oktyabr '15 saat 22:00

" -", fərqli hissələri eyni sözə birləşdirmək üçün bəzi mürəkkəb sözlərdə (məsələn, "yerində") istifadə olunur. Niyə proqramlaşdırma dillərində fərqli sətirləri birləşdirmək üçün " -" istifadə etmirik? Mükəmməl bir məna verəcəyini düşünürəm! Cəhənnəmə bu + cəfəngiyatla!

Ancaq buna bir az daha mücərrəd bucaqdan baxmağa çalışaq.

Sətir cəbrini necə təyin edərdiniz? Hansı əməliyyatları edərdiniz və onlar üçün hansı qanunlar nəzərdə tutulurdu? Onların münasibətləri necə olardı?

Unutmayın, heç bir qeyri -müəyyənlik ola bilməz! Bunun mümkün olmadığını söyləmək mənasına gəlsə də, mümkün olan hər bir vəziyyət yaxşı müəyyən edilməlidir! Cəbriniz nə qədər kiçik olsa, bunu etmək bir o qədər asan olar.

Məsələn, iki sətir əlavə etmək və ya çıxarmaq əslində nə deməkdir?

İki sətir əlavə etsəniz (məsələn, a = "aa" və b = "bb" olsun), a + b nəticəsində aabb alacaqsınız?

B + a necə? Bu bbaa olarmı? Niyə aabb? Əlavənin nəticəsindən aa çıxarsanız nə olar? Stringinizdə mənfi aa miqdarı anlayışı varmı?

İndi bu cavabın əvvəlinə qayıdın və telin yerinə kosmik gəmi ilə əvəz edin. Ümumiləşdirmək üçün niyə hər hansı bir əməliyyat müəyyən edilir və ya heç bir növ üçün təyin edilmir?

Deməyə çalışdığım nöqtə, heç bir şey üçün cəbr yaratmağınıza mane olan heç bir şeyin olmamasıdır. Bunun üçün mənalı əməliyyatlar və ya hətta faydalı əməliyyatlar tapmaq çətin ola bilər.

Stringlər üçün, birləşmə, indiyə qədər rastlaşdığım yeganə məntiqli şeydir. Əməliyyatı təmsil etmək üçün hansı simvolun istifadə olunmasının əhəmiyyəti yoxdur.


Məzmun

Hesablama nəzəriyyəsi kompüter elmləri sahəsində hər cür modellərin yaradılması hesab edilə bilər. Buna görə də riyaziyyat və məntiqdən istifadə olunur. Ötən əsrdə müstəqil bir akademik intizam halına gəldi və riyaziyyatdan ayrıldı.

Avtomatika nəzəriyyəsi Redaktə edin

Qrammatika Dillər Avtomat İstehsal qaydaları (məhdudiyyətlər)
Növ-0 Təkrarlanan şəkildə saymaq olar Turing maşını α → β < displaystyle alpha rightarrow beta> (məhdudiyyət yoxdur)
Növ-1 Kontekstə həssas Xətti məhdudlaşdırılmamış Turing maşını α A β → α γ β
Növ-2 Kontekstsiz Determinist olmayan aşağı salınan avtomat A →
Növ-3 Daimi Sonlu dövlət avtomatı A → a < displaystyle A sağ ox a>

A → a B

Avtomatika nəzəriyyəsi, mücərrəd maşınların (və ya daha çox uyğun olaraq, mücərrəd 'riyazi' maşınların və ya sistemlərin) və bu maşınların köməyi ilə həll edilə bilən hesablama problemlərinin öyrənilməsidir. Bu mücərrəd maşınlara avtomat deyilir. Automata, yunan sözündən (Αυτόματα) gəlir və bu, bir şeyin öz başına bir şey etdiyini bildirir. Automata nəzəriyyəsi formal dil nəzəriyyəsi ilə də yaxından əlaqəlidir [5], çünki avtomatlar tez -tez tanıya biləcəkləri rəsmi dillər sinfinə görə təsnif edilir. Avtomat, sonsuz çoxluq ola bilən rəsmi bir dilin sonlu bir nümayişi ola bilər. Avtomatlar hesablama maşınları üçün nəzəri modellər kimi istifadə olunur və hesablama qabiliyyətini sübut etmək üçün istifadə olunur.

Formal Dil nəzəriyyəsi Redaktə edin

Dil nəzəriyyəsi, dilləri bir əlifba üzərində əməliyyatlar toplusu kimi təsvir etməklə məşğul olan riyaziyyatın bir sahəsidir. Avtomatlar rəsmi dilləri yaratmaq və tanımaq üçün istifadə edildiyindən, bu, avtomat nəzəriyyəsi ilə sıx bağlıdır. Hər biri əvvəlkindən daha mürəkkəb bir dil spesifikasiyasına imkan verən bir neçə rəsmi dillər sinfi var, yəni Chomsky iyerarxiyası [6] və hər biri onu tanıyan bir avtomat sinfinə uyğundur. Avtomatlar hesablama üçün model olaraq istifadə edildiyindən, formal dillər hesablanmalı olan hər hansı bir problem üçün üstünlük verilən xüsusiyyətdir.

Hesablama nəzəriyyəsi Redaktə edin

Hesablama nəzəriyyəsi ilk növbədə bir problemin kompüterdə nə dərəcədə həll oluna biləcəyi sualından bəhs edir. Durdurma probleminin Turing maşını ilə həll edilə bilməyəcəyi [7] ifadəsi hesablama nəzəriyyəsindəki ən əhəmiyyətli nəticələrdən biridir, çünki Türinq maşını ilə həm formalaşdırılması həm də həll edilməsi qeyri -mümkün olan konkret problemin nümunəsidir. . Hesablama nəzəriyyəsinin çoxu problemin dayandırılmasının nəticəsinə əsaslanır.

Hesablama nəzəriyyəsindəki başqa bir vacib addım, Rays teoremi idi ki, qismən funksiyaların bütün qeyri-əhəmiyyətsiz xassələri üçün bir Turing maşınının bu xüsusiyyətlə qismən bir funksiyanı hesablayıb-hesablamadığının qeyri-müəyyən olduğunu bildirir. [8]

Hesablama nəzəriyyəsi, Türinq modelinə endirilə bilən yalnız hesablama modellərinin öyrənilməsi məhdudiyyətini aradan qaldıran, rekursiya nəzəriyyəsi adlanan riyazi məntiqlə yaxından əlaqəlidir. [9] Rekursiya nəzəriyyəsini öyrənən bir çox riyaziyyatçı və hesablama nəzəriyyəçisi bunu hesablama nəzəriyyəsi adlandıracaq.

Hesablama mürəkkəbliyi nəzəriyyəsi Redaktə edin

Mürəkkəblik nəzəriyyəsi yalnız bir problemin kompüterdə həll oluna biləcəyini deyil, həm də problemin nə qədər səmərəli həll oluna biləcəyini də nəzərə alır. İki əsas aspekt nəzərə alınır: vaxtın mürəkkəbliyi və kosmosun mürəkkəbliyi, bu hesablamanı yerinə yetirmək üçün neçə addımı atır və bu hesablamanı yerinə yetirmək üçün nə qədər yaddaş lazımdır.

Verilmiş bir alqoritmin nə qədər vaxt və məkan tələb etdiyini təhlil etmək üçün kompüter alimləri problemi həll etmək üçün lazım olan vaxtı və ya məkanı giriş probleminin ölçüsündən asılı olaraq ifadə edirlər. Məsələn, uzun bir siyahı siyahısında müəyyən bir nömrə tapmaq, siyahıların sayı artdıqca çətinləşir. Var desək n siyahıdakı nömrələr, onda siyahı heç bir şəkildə sıralanmamış və ya indekslənməmişdirsə, axtardığımız nömrəni tapmaq üçün hər nömrəyə baxmaq lazım ola bilər. Beləliklə, bu problemi həll etmək üçün kompüterin problemin ölçüsündə xətti olaraq artan bir sıra addımlar atmalı olduğunu söyləyirik.

Bu problemi asanlaşdırmaq üçün kompüter elm adamları, funksiyaların maşın quruluşunun xüsusi aspektlərinin nəzərə alınmamasını təmin edəcək şəkildə müqayisə etməyə imkan verən Big O notasiyasını qəbul etdilər, əksinə problemlər böyüdükcə yalnız asimptotik davranışı təmin etdilər. Beləliklə, əvvəlki nümunəmizdə problemin həll edilməsi üçün O (n) < displaystyle O (n)> addımları lazım olduğunu söyləyə bilərik.

Bəlkə də bütün kompüter elmlərində ən vacib açıq problem NP ilə ifadə olunan müəyyən bir geniş sinif probleminin səmərəli şəkildə həll oluna biləcəyidir. Bu, P və NP Komplekslik siniflərində daha ətraflı müzakirə olunur və P ilə N problemi, 2000 -ci ildə Clay Riyaziyyat İnstitutu tərəfindən ifadə edilən yeddi Minilliyin Mükafat Problemlərindən biridir. Rəsmi Problem Təsviri Turing mükafatı laureatı Stephen Cook tərəfindən verilmişdir.

Turing maşınından başqa digər ekvivalent (Bax: Church -Turing tezisi) hesablama modelləri istifadə olunur.

Lambda hesabı Bir hesablama ilkin lambda ifadəsindən (və ya funksiyanı və onun girişini ayırmaq istəyirsinizsə iki) üstəgəl hər biri əvvəlki müddətdən bir Beta azaldılması tətbiqi ilə çıxarılmış sonlu lambda terminlərindən ibarətdir. Kombinator məntiq λ < displaystyle lambda> -calculus ilə çox oxşarlıqları olan bir anlayışdır, eyni zamanda əhəmiyyətli fərqlər də mövcuddur (məsələn, sabit nöqtə birləşdiricisi Y birləşmə məntiqində normal formaya malikdir, lakin λ < displaystyle lambda> -calculusda deyil). Kombinator məntiq böyük ambisiyalarla inkişaf etdirildi: paradoksların mahiyyətini anlamaq, riyaziyyatın əsaslarını daha iqtisadi (konseptual) etmək, dəyişənlər anlayışını ortadan qaldırmaq (bununla da riyaziyyatda rolunu aydınlaşdırmaq). μ-rekursiv funksiyaların hesablanması mu-rekursiv funksiyadan ibarətdir, yəni onun müəyyən ardıcıllığı, hər hansı bir giriş dəyəri (ləri) və giriş və çıxışları olan təyin ardıcıllığında görünən rekursiv funksiyalar ardıcıllığı. Beləliklə, f (x) < displaystyle f (x)> yinelenen bir funksiyanın təyin ardıcıllığında g (x) < displaystyle g (x)> və h (x, y) < displaystyle h (x) funksiyaları , y)> görünür, sonra 'g (5) = 7' və ya 'h (3,2) = 10' formalarının şərtləri görünə bilər. Bu ardıcıllıqdakı hər bir giriş əsas funksiyanın tətbiqi olmalı və ya kompozisiya, ibtidai rekursiya və ya μ rekursiya istifadə edərək yuxarıdakı qeydlərdən izlənilməlidir. Məsələn, əgər f (x) = h (x, g (x)) < displaystyle f (x) = h (x, g (x))>, onda 'f (5) = 3' görünmək üçün şərtlər 'g (5) = 6' və 'h (5,6) = 3' kimi yuxarıda olmalıdır. Hesablama yalnız son termin girişlərə tətbiq olunan rekursiv funksiyanın dəyərini verərsə bitir. Markov alqoritmi, simvollar üzərində işləmək üçün qrammatikaya bənzər qaydalardan istifadə edən bir simli yenidən yazma sistemidir. Qeydiyyat maşını nəzəri cəhətdən maraqlı bir kompüter idealizasiyasıdır. Bir neçə variant var. Əksəriyyətlərində, hər bir qeyd təbii saya (məhdudiyyətsiz) sahib ola bilər və təlimatlar sadədir (və sayı azdır), məsələn. yalnız azalma (şərti atlama ilə birlikdə) və artım (və dayandırma) mövcuddur. Sonsuz (və ya dinamik olaraq böyüyən) xarici mağazanın olmaması (Turing maşınlarında görüldü) rolunu Gödel nömrələmə texnikası ilə əvəz etməklə başa düşülə bilər: hər bir qeydin təbii bir rəqəmə sahib olması, mürəkkəb bir şeyi (məsələn, ardıcıllıq və ya bir matris və s.) uyğun böyük təbii sayı ilə - həm təsvirin, həm də təfsirin birmənalı olmaması bu texnikaların nəzəri əsasları ilə müəyyən edilə bilər.

Ümumi hesablama modellərinə əlavə olaraq, bəzi sadə hesablama modelləri xüsusi, məhdud tətbiqlər üçün faydalıdır. Daimi ifadələr, məsələn, ofis məhsuldarlığı proqramından proqramlaşdırma dillərinə qədər bir çox kontekstdə simli naxışlar təyin edir. Riyazi olaraq normal ifadələrə bərabər olan başqa bir formalizm, Sonlu avtomatlar dövrə dizaynında və bəzi növ problemlərin həllində istifadə olunur. Kontekstsiz qrammatikalar proqramlaşdırma dilinin sintaksisini təyin edir. Determinist olmayan aşağı salınan avtomatlar, kontekstsiz qrammatikalara bərabər olan başqa bir formalizmdir. İbtidai rekursiv funksiyalar rekursiv funksiyaların müəyyən edilmiş bir alt sinifidir.

Fərqli hesablama modelləri fərqli vəzifələri yerinə yetirmək qabiliyyətinə malikdir. Bir hesablama modelinin gücünü ölçməyin bir yolu, Chomsky dil iyerarxiyasını əldə etmək üçün modelin yarada biləcəyi formal dillər sinifini öyrənməkdir.

  1. ^Michael Sipser (2013). Hesablama nəzəriyyəsinə giriş 3. Cengage Learning. ISBN978-1-133-18779-0. hesablama nəzəriyyəsinin mərkəzi sahələri: avtomatika, hesablama və mürəkkəblik. (Səhifə 1)
  2. ^
  3. Hodges, Andrew (2012). Alan Turing: Müəmmalı (Centenary red.). Princeton Universiteti Mətbuatı. ISBN978-0-691-15564-7.
  4. ^
  5. Rabin, Michael O. (İyun 2012). Turing, Kilsə, Gödel, Hesablama, Komplekslik və Randomizasiya: Şəxsi Baxış.
  6. ^
  7. Donald rahib (1976). Riyazi məntiq . Springer-Verlag. ISBN9780387901701.
  8. ^
  9. Hopcroft, John E. və Jeffrey D. Ullman (2006). Avtomatika nəzəriyyəsinə, dillərə və hesablamalara giriş. 3 -cü nəşr. Reading, MA: Addison-Wesley. ISBN978-0-321-45536-9.
  10. ^
  11. Chomsky iyerarxiyası (1956). "Dilin təsviri üçün üç model". Məlumat nəzəriyyəsi, IRE əməliyyatları. IEEE. 2 (3): 113-124. doi: 10.1109/TIT.1956.1056813.
  12. ^
  13. Alan Turing (1937). "Entscheidungsproblemə bir tətbiq ilə hesablana bilən nömrələr haqqında". London Riyaziyyat Cəmiyyətinin əsərləri. IEEE. 2 (42): 230-265. doi: 10.1112/plms/s2-42.1.230. İstifadə tarixi: 6 Yanvar 2015.
  14. ^
  15. Henry Gordon Rice (1953). "Təkrarlanan sayılan dəstlər sinifləri və onların qərar vermə problemləri". Amerika Riyaziyyat Cəmiyyətinin əməliyyatları. Amerika Riyaziyyat Cəmiyyəti. 74 (2): 358-366. doi: 10.2307/1990888. JSTOR1990888.
  16. ^
  17. Martin Davis (2004). Qərarsızdır: Qərarsız təkliflər, həll olunmayan problemlər və hesablana bilən funksiyalar haqqında əsas sənədlər (Dover Ed). Dover Nəşrləri. ISBN978-0486432281.

(Bu sahədə bir çox dərslik var, bu siyahı zərurət üzündən yarımçıqdır.)


Təsisatlar

Riyaziyyat Bölümü, Homewood Kampüsünün Keyser Dördündəki Krieger Hall -da yaşayır. Adjacent to Krieger Hall, The University’s Milton S. Eisenhower Library has an unusually extensive collection of mathematics literature, including all the major research journals, almost all of which are also accessible electronically. The stacks are open to students. The department also has a useful reference library, the Philip Hartman Library. Graduate students share departmental offices, and study space can also be reserved in the university library. Graduate students may access the department’s Linux and Windows servers, as well as computers in graduate student offices. The department also hosts numerous research seminars, special lectures, and conferences throughout the academic year.


Computing Position from Orbital Elements

We'll perform this computation in three steps: first, we'll solve Kepler's equation. Second, we'll compute the 2d position of the body in the orbital plane. Lastly, we'll rotate our 2d position into 3d coordinates. I'll give some "pseudocode" in Javascript for most of these tasks.

I'll assume that you're using a set of elements like these from JPL's web site. These use $L$ and $varpi$ instead of $M$ and $omega$ . The table gives two values for each of the elements the second is the time derivative. If you use the values in this table you should use the derivatives as well.

Calculate the time $t$ in centuries from J2000:

Now we calculate the current values of each of the orbital parameters. For example, the semimajor axis of Earth, using the values from Table 1 (valid from 1800–2500):

(Note that the values are actually given for "EM Barycenter," the center-of-mass of the Earth-Moon system. The Earth is around 4600 kilometers from the barycenter in the opposite direction from the Moon. If you want to correct this inaccuracy you'll need to simulate the motion of the Moon as well, but that's probably overkill.)

Table 2a gives elements that are accurate from 3000 BC to 3000 AD however, if you use the elements from table 2a, you olmalıdır supplement them with corrections to $L$ from Table 2b! For example, here is computing the longitude of Saturn:

We don't need to explicitly compute the mean motion and add it to $L$ , since both tables include it in $dot L$ .

Now we're ready to compute $M$ and $omega$ ( w ):

On to step 2: we need to solve the Kepler equation:

We can solve this numerically using Newton's method. Solving the Kepler equation is equivalent to finding the roots of $f(E) = E - e sin E - M$ . Given $E_i$ , an estimate of $E$ , we can use Newton's method to find a better estimate:

$ E_ = E_i - f(E_i) / f'(E_i) f'(E) = 1 - e cos E $

Since the nonlinear part $e sin E$ is very small, we can start with the estimate $E=M$ . Our code looks something like this:

Now there are two ways to compute the position from the eccentric anomaly. We can first compute the true anomaly and radius (the position of the object in polar coordinates), and then convert to rectangular coordinates however, if we apply a bit of geometry we can instead compute the coordinates directly from $E$ :

( P and Q form a 2d coordinate system in the plane of the orbit, with +P pointing towards periapsis.)

Finally, we can rotate these coordinates into the full 3d coordinate system:

( x , y , and z will be in units of AU.)

If you want to calculate the velocity as well, you can do it at the same time as you calculate $P$ and $Q$ , then rotate it in the same way. $ dot M = n = dot L dot M = dot E - e (cos E) dot E dot E = dot M / (1 - e cos E) dot P = -a (sin E) dot E qquad dot Q = a (cos E) dot E sqrt <1 - e^2>$ Note I don't include any of the derivatives (except $dot L$ ) in this calculation, since they don't affect the outcome much. You could code this as:

Note that the velocities will be in AU per century.

If you are updating the positions very frequently, you could use the previous value of $E$ to seed Newton's method, and do a fixed number of iterations (probably just one would suffice). Note however that you need to keep that value of $E$ local to each object!

You can also just use a fixed number of iterations for the initial solution. Even for $e=0.2$ , after three iterations the error in $E$ is only about $10^<-13>$ , and after four iterations the error is smaller than the rounding error of an IEEE double up to $e=0.42$ .

If you want more information you can search online, but if you're really interested you should read an introductory text on orbital mechanics. I personally recommend Fundamentals of Astrodynamics by Bate, Mueller, and White (pdf). My dad used this book back when he was in college, and I found it to be more readable than my college textbook. You'd be interested in Chapter 4, Position and Velocity as a Function of Time.

Since its just a game, would you be happy with circular orbits and the planets' orbits only affected by the central body? In that case, the propagation is quite simple. In the plane of the orbit with the central body at (0,0), the position as a function of time is:

where $a$ is the semi-major axis, or really just the orbit radius in this case, $T$ is the orbit period, and $t_0$ determines the phasing of the orbit, where at $t=t_0$, the planet is on the x-axis on the positive side.

To make the orbits of the different planets consistent with each other, you just need to define the $GM$ of the central body, which we will call $mu$. Then for any orbit radius $a$, the orbit period is related to $a$ by:

While there has already been a high quality accepted answer for years, here is some additional background, some particularly helpful resources, and additional tips for first-time orbit propagation.

If you're not doing N-body physics, so the planets do not interact then you can use analytic solutions to the Kepler problem. Eventually you'll realize that you need to solve hyperbolic orbits at some point as well. That will lead you to universal variables formulations of solving the Kepler problem.

The best solutions to that are probably going to be Goodyear's method:

W. Goodyear, “Completely General Closed Form Solution for Coordinates and Partial Derivatives of the Two-Body Problem”, The Astronomical Journal, Vol. 70, No. 3, 1965, pp. 189–192 (or the NASA NTRS TD document on the same material)

Shepperd, S.W. Celestial Mechanics (1985) 35: 129. https://doi.org/10.1007/BF01227666

There is some MATLAB code here which might be useful (and vastly more accessible), although random code snippets on matlabcentral are far from guaranteed to be bug free and it looks like this code may lack useful normalization of its inputs (generally you're going to want to normalize to the scale of your problem so that you do math in units where r0-bar = 1.0 and mu-bar = 1.0 and where v-bar = 1 is the velocity in a circular orbit at r0 or something like that).

If you are going to do N-body integration of planetary motion then I think you're going to have to use numerical integration. Runge-Kutta will violate conservation of Energy so you will likely want to use Symplectic Integration. The 4th order symplectic integrator in that article is not that difficult to code -- although that leaves you with the difficulty of guessing the correct timestep (again, normalization helps because a circular planetary orbit and circular LEO are the same problem just with different distance scales) and with interpolation of the interior points (and you need to watch out for Runge's phenomenon, but I haven't wrestled with that, so don't know which approach to take there).

If you're going to use Runge-Kutta then Dormand-Prince with dynamic step side and its 3rd order interpolant will be very convenient, and is what Matlab uses in its ode45 solver.

I would probably advise starting with the simplest runge-kutta implementation based on ease of coding, but if you're doing runge-kutta on every physics tick to advance it forward one step then that is pretty brutal and the errors will eventually add up, but you could prototype it that way. At some point you'll want to go to a system where you solve the problem for many time steps into the future, and then you use an interpolating function to pick off the solution at intermediate timesteps (which is the point of my mentioning Dormand-Prince and its interpolating function).


Videoya baxın: فيديو جوي القطار الكهربائي الخفيف. كل ما تريد معرفته عن المسار واماكن المحطات