مقالات

11.2: عوامل التشغيل العادية


المشغلون العاديون هم أولئك الذين يتنقلون مع مساعديهم. كما سنرى ، يتضمن هذا العديد من الأمثلة المهمة للعمليات.

التعريف 11.2.1. نسمي (T in mathcal {L} (V) ) عادي إذا (TT ^ * = T ^ * T ).

بالنظر إلى عامل تشغيل عشوائي (T in mathcal {L} (V) ) ، لدينا هذا (TT ^ * neq T ^ * T ) بشكل عام. ومع ذلك ، فإن كلاً من (TT ^ * ) و (T ^ * T ) ذاتي المعاينة ، وأي عامل مساعد ذاتي (T ) أمر طبيعي. نعطي الآن توصيفًا مختلفًا للمشغلين العاديين من حيث المعايير.

الاقتراح 11.2.2. يترك (الخامس) أن تكون مساحة داخلية معقدة للمنتج ، وافترض ذلك (T in mathcal {L} (V) ) استوفي

ابدأ {المعادلة *}
inner {Tv} {v} = 0، quad text {for all (v in V ).}
نهاية {المعادلة *}
ثم (T = 0 ).

دليل - إثبات. يجب أن تكون قادرًا على التحقق من ذلك
ابدأ {المعادلة *}
ابدأ {تقسيم}
inner {Tu} {w} = frac {1} {4} & left { inner {T (u + w)} {u + w} - inner {T (uw)} {uw} حق.
& left. + i inner {T (u + iw)} {u + iw} - i inner {T (u-iw)} {u-iw} right }.
نهاية {تقسيم}
نهاية {المعادلة *}
نظرًا لأن كل مصطلح على الجانب الأيمن من الشكل ( inner {Tv} {v} ) ، نحصل على 0 لكل (u، w in V ).
ومن ثم (T = 0 ).

الاقتراح 11.2.3. يترك (T in mathcal {L} (V) ). ثم (T ) أمر طبيعي إذا وفقط إذا

ابدأ {المعادلة *}
norm {Tv} = norm {T ^ * v}، quad text {for all (v in V ).}
نهاية {المعادلة *}

دليل - إثبات. لاحظ أن

ابدأ {المعادلة *}
ابدأ {تقسيم}
text { (T ) عادي} & Longleftrightarrow T ^ * T-TT ^ * = 0
& Longleftrightarrow inner {(T ^ * T-TT ^ *) v} {v} = 0، quad text {for all (v in V )}
& Longleftrightarrow inner {TT ^ * v} {v} = inner {T ^ * T v} {v}، quad text {for all (v in V )}
& Longleftrightarrow norm {Tv} ^ 2 = norm {T ^ * v} ^ 2، quad text {for all (v in V ).}
نهاية {تقسيم}
نهاية {المعادلة *}

النتيجة الطبيعية 11.2.4. يترك (T in mathcal {L} (V) ) يكون عاملا عاديا.

  1. ( kernel (T) = kernel (T ^ *) ).
  2. لو ( lambda in mathbb {C} ) هي قيمة ذاتية لـ (T ) ، من ثم ( overline { lambda} ) هي قيمة ذاتية لـ (T ^ * ) مع نفس eigenvector.
  3. لو ( lambda، mu in mathbb {C} ) هي قيم ذاتية مميزة لـ (T ) مع المتجهات الذاتية المرتبطة (ت ، ث في الخامس ) ، على التوالي ، إذن ( الداخلية {v} {w} = 0 ).
دليل - إثبات. لاحظ أن الجزء ~ 1 يتبع من الاقتراح 11.2.3 والتحديد الإيجابي للقاعدة.

لإثبات الجزء ~ 2 ، تحقق أولاً من أنه إذا كان (T ) أمرًا طبيعيًا ، فإن (T- lambda I ) طبيعي أيضًا مع ((T- lambda I) ^ * = T ^ * - overline { lambda} أنا ). لذلك ، من خلال الاقتراح 11.2.3 ، لدينا
ابدأ {المعادلة *}
0 = norm {(T- lambda I) v} = norm {(T- lambda I) ^ * v} = norm {(T ^ * - overline { lambda} I) v}،
نهاية {المعادلة *}
وهكذا ، فإن (v ) هو متجه ذاتي لـ (T ^ * ) مع قيمة ذاتية ( overline { lambda} ).

باستخدام الجزء ~ 2 ، لاحظ ذلك

ابدأ {المعادلة *}
( lambda- mu) inner {v} {w} = inner { lambda v} {w} - inner {v} { overline { mu} w}
= inner {Tv} {w} - inner {v} {T ^ * w} = 0.
نهاية {المعادلة *}

بما أن ( lambda- mu neq 0 ) يتبع ذلك ( inner {v} {w} = 0 ) ، إثبات الجزء ~ 3.


11.2: عامل الجبر

  • بمساهمة مارسيا ليفيتوس
  • أستاذ مشارك (معهد Biodesign) بجامعة ولاية أريزونيا

دع & rsquos تبدأ بتعريف عامل الهوية ، الذي يُشار إليه عادةً بـ ( hat E ) أو ( hat I ). يترك عامل الهوية العنصر الذي يعمل عليه دون تغيير: ( hat E f (x) = f (x) ). هذا يماثل الضرب في الرقم 1.

يمكننا إضافة عوامل التشغيل على النحو التالي:

[( hat A + hat B) f = hat A f + hat B f. لا يوجد رقم]

[( قبعة x + dfrac) f = hat x f + dfrac= x و + dfrac لا يوجد رقم]

(تذكر أن ( hat x ) يعني & ldquomultiply by (x ) & rdquo).

يُعرَّف المنتج بين اثنين من المشغلين بأنه العملية المتتالية للمشغلين ، مع تشغيل المشغل الموجود في الجهة اليمنى أولاً. على سبيل المثال ، (( hat x dfrac) و = قبعة x (dfrac) = x dfrac). نقوم أولاً بتطبيق عامل التشغيل على اليمين (في هذه الحالة & ldquot الحصول على مشتق الوظيفة فيما يتعلق (x ) & rdquo) ، ثم عامل التشغيل الموجود على اليسار (& ldquomultiply by (x ) كل ما حصلت عليه في الأول الخطوة و rdquo). يمكننا استخدام هذا التعريف لحساب مربع عامل التشغيل. على سبيل المثال ، إذا حددنا عامل التشغيل ( hat A ) على أنه ( hat A = dfrac) ، عامل التشغيل ( hat A ^ 2 ) هو ( hat A hat A = dfrac dfrac = dfrac).

الضرب في عامل التشغيل ليس بشكل عام تبادليًا: ( hat A hat B neq hat B hat A ). بمعنى آخر ، بشكل عام ، ترتيب العمليات مهم. من قبل ، رأينا ذلك (( hat x dfrac) و = x dfrac). دع & rsquos يعيد ترتيب العملية: (( dfrac قبعة س) و ). الآن ، نضرب الدالة أولاً في (x ) ثم نأخذ مشتق النتيجة: (( dfrac قبعة x) و = dfrac(xf) = x dfrac+ و ). في الخطوة الأخيرة ، حسبنا مشتق المنتج باستخدام قواعد التفاضل المألوفة لدينا.

لقد أثبتنا للتو أن ( hat x dfrac neq dfrac hat x ) ، أو بعبارة أخرى ، الترتيب الذي نطبق به هذين العاملين مهم (أي ما إذا كنا نأخذ المشتق أولاً ثم نضرب في (x ) ، أو نضرب أولاً في (x ) ثم خذ المشتق). سواء كان الأمر مهمًا أم لا ، فإن له عواقب مهمة جدًا في ميكانيكا الكم ، لذلك من المفيد تحديد ما يسمى بالعاكس ، والذي يُعرف بأنه

[ضع الكلمة المناسبة [ قبعة أ ، قبعة ب] = قبعة أ قبعة ب - قبعة ب قبعة أ ]

على سبيل المثال ، عاكس عوامل التشغيل ( hat x ) و ( dfrac) ، يُرمز إليها بـ ([ hat x، dfrac] ) ، بالتعريف ( hat x dfrac - dfracقبعة س). عندما ([ قبعة أ ، قبعة ب] = 0 ) ، يُطلب من المشغلين ( قبعة أ ) و ( قبعة ب ) التنقل. لذلك ، إذا كان العاملون ( hat A ) و ( hat B ) ينتقلون ، ثم ( hat A hat B = hat B hat A ). عندما لا يتنقل العاملون ( hat A ) و ( hat B ) ، ( hat A hat B neq hat B hat A ) ، والمبدل ([ hat A ، hat B] neq 0 ).

قبل أن نمضي قدمًا ، من المهم أن ندرك أن منتج اثنين من المشغلين هو أيضًا عامل. على سبيل المثال ، دع & rsquos تنظر في المنتج ( dfrac قبعة س). هذا عامل ، عند تطبيقه على دالة (f ) ، يعطي وظيفة جديدة (x dfrac+ و ). على سبيل المثال ، إذا (f = sin (kx) ) ، ( dfrac hat x f = kx cos (kx) + sin (kx) ). بالإضافة إلى ذلك ، لاحظ أن عامل التشغيل ( dfrac hat x ) يمكن التعبير عنها كـ ( hat E + hat x dfrac) ، حيث ( hat E ) هو عامل الهوية. عندما عامل التشغيل ( hat E + hat x dfrac) تعمل على دالة (f ) ، والنتيجة هي الوظيفة نفسها (مضروبة بواحد) زائد (x ) مضروبًا في مشتق الوظيفة ، وهو بالضبط ما نحصل عليه عندما نؤدي ( dfrac قبعة × و ).

وبالمثل ، فإن المبدل بين اثنين من المشغلين هو أيضًا عامل:

لاحظ أنه في المثال الموجود على الجانب الأيمن من الشكل أوضحنا أن العامل ([ hat x، dfrac] ) يساوي عامل التشغيل (- hat E ) (& ldquomultiply بواسطة -1 & rdquo). بمعنى آخر ، عند المبدل ([ hat x، dfrac] ) (عامل) يعمل على دالة (f ) ، والنتيجة هي (- f ). لأن ([ hat x، dfrac] neq 0 ) والعوامل ( hat x ) و ( dfrac) لا تسافر. يرتبط هذا ارتباطًا مباشرًا بمبدأ عدم اليقين ، والذي ينص (في أبسط أشكاله) على أنه كلما تم تحديد موضع بعض الجسيمات بدقة ، كلما قلت دقة معرفة زخمها. سنرى العلاقة بين هذا البيان والمحول في لحظة ، وسوف تناقش هذا في الكثير من التفاصيل في دورات الكيمياء الفيزيائية المستقبلية الخاصة بك.

تذكر أن المبدل عامل ، لذا يجب أن تكون إجابتك عاملًا أيضًا (أي ، يجب ألا تحتوي على دالة). من أجل & lsquosee & rsquo ما يفعله المبدل (حتى نتمكن من كتابة العامل المكافئ) ، نطبق دالة عشوائية:

تذكر أنه عندما يكون لدينا تعبيرات مثل ( dfrac hat x ^ 2 f ) علينا الانتقال من اليمين إلى اليسار ، أي أننا نضرب أولاً في (x ^ 2 ) ثم نأخذ المشتق الثاني فقط.

[[ hat x ^ 2، dfrac] = displaystyle -4 قبعة x dfrac-2 قبعة E> nonumber ]

مرة أخرى ، يجب أن تكون النتيجة عامل تشغيل ، وبالتالي يجب ألا تحتوي على الوظيفة (f ). لأن ([ hat x ^ 2، dfrac] neq 0 ) ، لا يتنقل العاملان.


مقابل 1: $ | Tv | ^ 2 = langle Tv، Tv rangle = langle T ^ * Tv، v rangle = langle TT ^ * v، v rangle = | T ^ * v | ^ 2. $

بالنسبة إلى 2 ، ما تقوله سينجح إذا كان $ T $ قابلًا للعكس ، لكن لا أحد يقول ذلك. ولن تستخدم فرضية البعد المحدود.

إذا نظرت إلى تحليل Schur لـ $ T $ ، فلديك $ T = VXV ^ * $ ، مع $ V $ وحيد ومثلث علوي $ X $. تعني المساواة $ TT ^ * = T ^ 2 $ XX ^ * = X ^ 2 $.

المدخلات القطرية $ XX ^ * $ غير سالبة ، وتتفق مع الإدخالات القطرية لـ $ X ^ 2 $ ، وهي $ X_^ 2 $ (بما أن $ X $ مثلث). إذن الأرقام $ X_^ 2 $ غير سالب ، مما يعني أن $ X_$ حقيقي لكل $ k $. المدخلات القطرية لـ $ X ^ 2 $ هي $ X_ <11> ^ 2، X_ <22> ^ 2، ldots، X_^ 2 $ والإدخالات القطرية XX ^ * $ $ X_ <11> ^ 2 ، | X_ <12> | ^ 2 + X_ <22> ^ 2 ، | X_ <13> | ^ 2 + | X_ < 23> | ^ 2 + X_ <33> ^ 2، ldots، | X_ <11> | ^ 2 + cdots + | X_ <1، n-1> | ^ 2 + X_^ 2. $ لذا فإن المساواة $ XX ^ * = X ^ 2 $ تعني أن $ X_= 0 $ إذا $ j & gtk $. وهذا يعني أن $ X $ قطري بقطر حقيقي ، لذا فهو متماسك ذاتيًا. ثم $ T $ هو selfadjoint.


الإجراءات التكرارية للمشغلين العاديين ☆

يترك أ يكون عاملًا عاديًا في مساحة هيلبرت H ، واجعل G ⊂ H مجموعة قابلة للعد من المتجهات. نحن نحقق في العلاقات بين أو G و إل التي تجعل نظام التكرارات مكتملًا أو Bessel أو أساسًا أو إطارًا لـ H. تحفز المشكلة مشكلة أخذ العينات الديناميكية وترتبط بعدة مواضيع في التحليل الوظيفي ، بما في ذلك نظرية الإطار والنظرية الطيفية. كما أن لها علاقات بموضوعات في التحليل التوافقي التطبيقي بما في ذلك نظرية المويجات وتحليل التردد الزمني.


محتويات

قام أرخميدس بحساب أحجام الأسطح الرباعية المعينة للثورة. [2] قدم تطور حساب التفاضل والتكامل في القرن السابع عشر طريقة أكثر منهجية لحسابها. [3] درس أويلر تقوس الأسطح العامة لأول مرة. في عام 1760 [4] أثبت وجود صيغة لانحناء مقطع مستوٍ من السطح وفي عام 1771 [5] اعتبر الأسطح ممثلة في شكل حدودي. وضع مونجي أسس نظريتهم في مذكراته الكلاسيكية L'application de l'analyse à la géometrie التي ظهرت في عام 1795. المساهمة المحددة في نظرية الأسطح قدمها غاوس في ورقتين رائعتين كُتبتا في عامي 1825 و 1827. [1] وهذا يمثل خروجًا جديدًا عن التقليد لأنه لأول مرة اعتبر غاوس أن حقيقي هندسة السطح ، الخصائص التي يتم تحديدها فقط من خلال المسافات الجيوديسية بين النقاط على السطح بشكل مستقل عن الطريقة الخاصة التي يقع بها السطح في الفضاء الإقليدي المحيط. نتيجة التتويج ، Theorema Egregium of Gauss ، أثبتت أن الانحناء الغاوسي هو ثابت جوهري ، أي ثابت في ظل التساوي القياس المحلي. وسعت وجهة النظر هذه إلى المساحات عالية الأبعاد بواسطة ريمان وأدت إلى ما يعرف اليوم بالهندسة الريمانية. كان القرن التاسع عشر العصر الذهبي لنظرية الأسطح ، من وجهة نظر طوبولوجية وهندسية تفاضلية ، حيث كرست معظم المقاييس الهندسية الرائدة نفسها لدراستها. [ بحاجة لمصدر ] جمع Darboux العديد من النتائج في أطروحته المكونة من أربعة مجلدات Théorie des Surface (1887–1896).

من المألوف تمامًا أن نقول إن ورقة النبات ، أو سطح الزجاج ، أو شكل الوجه ، منحنية بطرق معينة ، وأن كل هذه الأشكال ، حتى بعد تجاهل أي علامات مميزة ، لها أشكال هندسية معينة السمات التي تميز بعضها عن بعض. تهتم الهندسة التفاضلية للأسطح بالفهم الرياضي لمثل هذه الظواهر. أدت دراسة هذا المجال ، التي بدأت في شكلها الحديث في القرن الثامن عشر ، إلى تطوير هندسة ذات أبعاد أعلى وهندسة مجردة ، مثل الهندسة الريمانية والنسبية العامة. [ البحث الأصلي؟ ]

الكائن الحسابي الأساسي هو أ سطح عادي. على الرغم من اختلاف الاصطلاحات في تعريفها الدقيق ، إلا أنها تشكل فئة عامة من مجموعات فرعية من الفضاء الإقليدي ثلاثي الأبعاد (ℝ 3) التي تلتقط جزءًا من المفهوم المألوف لـ "السطح". من خلال تحليل فئة المنحنيات الموجودة على مثل هذا السطح ، والدرجة التي تجبرها الأسطح عندها على الانحناء بمقدار 3 ، يمكن للمرء ربط كل نقطة من السطح برقمين ، يطلق عليهما الانحناءات الرئيسية. متوسطهم يسمى يعني الانحناء من السطح ، ويطلق على منتجهم اسم انحناء غاوسي.

هناك العديد من الأمثلة الكلاسيكية للأسطح العادية ، بما في ذلك:

  • أمثلة مألوفة مثل الطائرات ، والأسطوانات ، والمجالات ، والتي يتم تحديدها من خلال الخاصية التي تشير إلى أن متوسط ​​انحناءها يساوي صفرًا في كل نقطة. وأشهر الأمثلة على ذلك هي الكاتينويدات والمركبات الحلزونية ، على الرغم من اكتشاف المزيد منها. يمكن أيضًا تحديد الأسطح الدنيا من خلال الخصائص المتعلقة بمساحة السطح ، ونتيجة لذلك توفر نموذجًا رياضيًا لشكل أغشية الصابون عند شدها عبر إطار سلكي ، وهي أسطح بها خط مستقيم واحد على الأقل يمر عبر كل نقطة تتضمن الأمثلة الأسطوانة والقطع الزائد للورقة الواحدة.

أظهرت نتيجة مدهشة لكارل فريدريش جاوس ، والمعروفة باسم نظرية egregium ، أن الانحناء الغاوسي للسطح ، والذي يرتبط بتعريفه بكيفية تغيير المنحنيات على السطح للاتجاهات في الفضاء ثلاثي الأبعاد ، يمكن قياسه فعليًا بالأطوال منحنيات ملقاة على الأسطح مع الزوايا التي تتكون عند تقاطع منحنيين على السطح. من الناحية اللغوية ، يشير هذا إلى أنه يمكن حساب الانحناء الغاوسي من أول شكل أساسي (وتسمى أيضًا موتر متري) للسطح. ال الشكل الأساسي الثانيعلى النقيض من ذلك ، هو كائن يشفر كيفية تشوه أطوال وزوايا المنحنيات على السطح عند دفع المنحنيات بعيدًا عن السطح.

على الرغم من قياس الجوانب المختلفة للطول والزاوية ، فإن الشكلين الأساسيين الأول والثاني ليسا مستقلين عن بعضهما البعض ، وهما يستوفيان قيودًا معينة تسمى معادلات Gauss-Codazzi. تؤكد النظرية الرئيسية ، التي يطلق عليها غالبًا النظرية الأساسية للهندسة التفاضلية للأسطح ، أنه عندما يرضي كائنان قيود Gauss-Codazzi ، سيظهران كأول وثاني شكلين أساسيين للسطح العادي.

باستخدام النموذج الأساسي الأول ، من الممكن تحديد كائنات جديدة على سطح عادي. الجيوديسيا هي منحنيات على السطح تحقق معادلة تفاضلية عادية من الدرجة الثانية والتي تحددها الصيغة الأساسية الأولى. ترتبط ارتباطًا مباشرًا جدًا بدراسة أطوال المنحنيات ، وسيكون دائمًا منحنى الجيوديسيا ذات الطول القصير بدرجة كافية أقصر الطول على السطح الذي يربط بين نقطتي النهاية. وبالتالي ، تعتبر الجيوديسيا أساسية لمشكلة التحسين المتمثلة في تحديد أقصر مسار بين نقطتين معينتين على سطح عادي.

يمكن للمرء أن يعرف أيضا النقل الموازي على طول أي منحنى معين ، مما يعطي وصفة طبية لكيفية تشويه متجه المماس للسطح عند نقطة واحدة من المنحنى إلى متجهات مماسة في جميع النقاط الأخرى من المنحنى. يتم تحديد الوصفة من خلال معادلة تفاضلية عادية من الدرجة الأولى والتي تحددها الصيغة الأساسية الأولى.

المفاهيم المذكورة أعلاه تتعلق أساسًا بحساب التفاضل والتكامل متعدد المتغيرات. ال نظرية جاوس بونيه هي نتيجة أكثر شمولية ، والتي تربط الانحناء الغاوسي للسطح مع نوعه الطوبولوجي. يؤكد أن القيمة المتوسطة للانحناء الغوسي يتم تحديدها بالكامل بواسطة خاصية أويلر للسطح مع مساحة سطحه.

مفهوم مشعب ريماني و سطح ريمان هما تعميمان للأسطح العادية التي تمت مناقشتها أعلاه. على وجه الخصوص ، فإن كل نظرية الأسطح المنتظمة كما تمت مناقشتها هنا لها تعميم في نظرية المشعبات الريمانية. ليس هذا هو الحال بالنسبة لأسطح Riemann ، على الرغم من أن كل سطح عادي يعطي مثالاً لسطح Riemann.

تحرير التعريف

من الواضح بشكل بديهي أن الكرة سلسة ، في حين أن المخروط أو الهرم ليس كذلك بسبب قمة الرأس أو الحواف. إن فكرة "السطح المنتظم" هي إضفاء الطابع الرسمي على فكرة السطح الأملس. يستخدم التعريف التمثيل المحلي للسطح عبر الخرائط بين المساحات الإقليدية. هناك مفهوم قياسي للسلاسة لمثل هذه الخرائط ، تكون الخريطة بين مجموعتين فرعيتين مفتوحتين من الفضاء الإقليدي سلسة إذا كانت مشتقاتها الجزئية لكل ترتيب موجودة في كل نقطة من المجال. [6] [7] [8]

يعطي ما يلي ثلاث طرق مكافئة لتقديم التعريف ، ربما يكون التعريف الأوسط هو الأكثر سهولة من الناحية المرئية ، لأنه يقول بشكل أساسي أن السطح العادي هو مجموعة فرعية من ℝ 3 وهو الرسم البياني المحلي لوظيفة سلسة (سواء فوق منطقة في yz الطائرة xz الطائرة أو س ص طائرة).

  • و ، كدالة الخامس → ℝ 3 ، قابل للتفاضل بلا حدود (أي سلس)
  • لكل نقطة من V ، المشتقتان الجزئيتان ∂شF و ∂الخامسF مستقلة خطيًا كعناصر ℝ 3. [9] [10] [11] [12]
  • سيو = <(ح(ش, الخامس), ش, الخامس) : (ش, الخامس) ∈ الخامس >
  • سيو = <(ش, ح(ش, الخامس), الخامس) : (ش, الخامس) ∈ الخامس >
  • سيو = <(ش, الخامس, ح(ش, الخامس)) : (ش, الخامس) ∈ الخامس >.
  • سيو = <(x, ذ, ض) ∈ يو : F(x, ذ, ض) = 0 >
  • في كل نقطة من سيو ، مشتق جزئي واحد على الأقل من F غير صفري.

تُعرف الأشكال المتماثلة التي تظهر في التعريف الأول باسم البارامترات المحلية أو أنظمة الإحداثيات المحلية أو المخططات المحلية على S. [13] يؤكد التكافؤ بين التعريفين الأولين أنه ، حول أي نقطة على سطح منتظم ، توجد دائمًا معاملات محلية للنموذج (ش, الخامس) ↦ (ح(ش, الخامس), ش, الخامس) , (ش, الخامس) ↦ (ش, ح(ش, الخامس), الخامس) ، أو (ش, الخامس) ↦ (ش, الخامس, ح(ش, الخامس)) ، معروف ك بقع مونجي . تسمى الوظائف F كما في التعريف الثالث وظائف تحديد محلية. يتبع تكافؤ جميع التعاريف الثلاثة من نظرية الوظيفة الضمنية. [14] [15] [16]

إعطاء أي اثنين من المعاملات المحلية F : الخامسيو و F ′ : الخامس ′→ يو ′ من سطح عادي التكوين F −1 ∘ F ′ سلس بالضرورة كخريطة بين مجموعات فرعية مفتوحة من ℝ 2. [17] وهذا يدل على أن أي سطح عادي له بشكل طبيعي هيكل مشعب سلس ، مع وجود أطلس سلس يتم تقديمه بواسطة مقلوب البارامترات المحلية.

في النظرية الكلاسيكية للهندسة التفاضلية ، عادة ما تدرس الأسطح فقط في الحالة العادية. [7] [18] ومع ذلك ، فمن الشائع أيضًا دراسة الأسطح غير المنتظمة ، حيث المشتقات الجزئية ∂شF و ∂الخامسF من المعلمات المحلية قد تفشل في أن تكون مستقلة خطيًا. في هذه الحالة ، قد يكون لـ S تفردات مثل حواف الحدبة. عادة ما يتم دراسة هذه الأسطح في نظرية التفرد. تحدث الأشكال الضعيفة الأخرى للأسطح العادية في التصميم بمساعدة الكمبيوتر ، حيث يتم تقسيم السطح إلى قطع منفصلة ، مع فشل مشتقات البارامترات المحلية في أن تكون مستمرة على طول الحدود. [ بحاجة لمصدر ]


اسمحوا أن تكون مساحة هيلبرت معقدة ، ودعونا تكون عامل عادي. إذا كان الطيف هو ، فهناك مقياس طيفي فريد يحث على تشكل الجبر الأحادي

أين هي المقاييس العددية المرتبطة.

نحن مهتمون بشكل خاص بالحالة الخاصة لمساحة هيلبرت الحقيقية والمشغل العادي ، مع تطبيق المناقشة السابقة على المشغل العادي ، مع المقياس الطيفي. نظرًا لأن فضاء هيلبرت الحقيقي ليس بالضرورة ثابتًا تحت المقياس الطيفي ، سنحاول تمييز مجموعات Borel الفرعية على هذا النحو.

لمجموعة فرعية تعسفية ، نضع. لاستخدام لاحق ، نحدده بإغلاق المجموعة الفرعية التعسفية.


11.1. و او لا ¶

هناك ثلاثة العوامل المنطقية: و ، أو ، و لا. الدلالات (المعنى) لهؤلاء المشغلين تشبه معناها في اللغة الإنجليزية. على سبيل المثال ، x & gt 0 و x & lt 10 تكون صحيحة فقط إذا كانت x أكبر من 0 و في نفس الوقت ، x أقل من 10. كيف تصف هذا بالكلمات؟ يمكنك القول أن x يقع بين 0 و 10 ، ولا يشمل نقاط النهاية.

n٪ 2 == 0 أو n٪ 3 == 0 يكون صحيحًا إذا إما من الشروط صحيحة ، أي إذا كان الرقم قابلاً للقسمة على 2 أو قابل للقسمة على 3. في هذه الحالة ، يجب أن يكون أحد الجزأين أو كلا الجزأين صحيحًا حتى تكون النتيجة صحيحة.

أخيرًا ، ينفي عامل التشغيل not تعبيرًا منطقيًا ، لذلك لا تكون & # 160 x & gt y صحيحة إذا كانت x & gt y خطأ ، أي إذا كانت x أقل من أو تساوي y.

هناك خطأ شائع جدًا يحدث عندما يحاول المبرمجون كتابة تعبيرات منطقية. على سبيل المثال ، ماذا لو كان لدينا رقم متغير وأردنا التحقق لمعرفة ما إذا كانت قيمته هي 5،6 أو 7. وبكلمات قد نقول: "رقم يساوي 5 أو 6 أو 7". ومع ذلك ، إذا ترجمنا هذا إلى Python ، الرقم == 5 أو 6 أو 7 ، فلن يكون صحيحًا. يجب أن ينضم عامل التشغيل أو إلى نتائج ثلاث عمليات تحقق من المساواة. الطريقة الصحيحة لكتابة هذا هي الرقم == 5 أو الرقم == 6 أو الرقم == 7. قد يبدو هذا كثيرًا من الكتابة ولكنه ضروري للغاية. لا يمكنك أن تأخذ اختصار.

11.1.1. تأكد من فهمك¶

logical-Operators2: ما هو تعبير Python الصحيح للتحقق مما إذا كان الرقم المخزن في متغير x يقع بين 0 و 5؟


11.2: عوامل التشغيل العادية

المثيل المشتق هو تصريح عن مثيل يتم إنشاؤه تلقائيًا بالتزامن مع بيانات أو إعلان نوع جديد. يتم اشتقاق نص إعلان المثيل المشتق بشكل نحوي من تعريف النوع المرتبط. المثيلات المشتقة ممكنة فقط للفئات المعروفة للمترجم: تلك المحددة إما في Prelude أو مكتبة قياسية. في هذا الفصل ، نصف اشتقاق الفئات التي حددتها المقدمة.

إذا كانت T هي نوع بيانات جبري تم التصريح عنه بواسطة:

  1. C هي واحدة من Eq أو Ord أو Enum أو Bounded أو Show أو Read.
  2. يوجد سياق cx & رئيسى مثل cx & prime & # x00A0 & rArr & # x00A0C & # x00A0t اي جاي يحمل لكل نوع من أنواع المكونات t اي جاي .
  3. إذا كانت C مقيدة ، فيجب أن يكون النوع إما تعدادًا (يجب أن تكون جميع المنشئات خالية) أو أن يكون لها مُنشئ واحد فقط.
  4. إذا كانت C هي Enum ، يجب أن يكون النوع تعدادًا.
  5. يجب ألا يكون هناك إعلان صريح عن المثيل في أي مكان آخر في البرنامج الذي يجعل T & # x00A0u 1 & # x00A0 & hellip & # x00A0u ك مثيل لـ C.
  6. إذا كان إعلان البيانات لا يحتوي على مُنشئين (أي عندما ن = 0) ، فلا توجد فئات قابلة للاشتقاق (أي م = 0)

لأغراض المثيلات المشتقة ، يتم التعامل مع إعلان نوع جديد كإعلان بيانات مع مُنشئ واحد.

إذا كان نموذج الاشتقاق موجودًا ، فسيتم إنشاء إعلان المثيل تلقائيًا لـ T & # x00A0u 1 & # x00A0 & hellip & # x00A0u ك على كل فئة ج أنا . إذا كان إعلان المثيل المشتق مستحيلًا لأي من C أنا ثم ينتج خطأ ثابت. إذا لم تكن هناك حاجة إلى مثيلات مشتقة ، فيمكن حذف نموذج الاشتقاق أو استخدام النموذج المشتق & # x00A0 ().

سيكون لكل إعلان مثيل مشتق الشكل: مثيل & # x00A0 (cx، & # x00A0 cx & prime) & # x00A0 = & # x003E & # x00A0C أنا & # x00A0 (T & # x00A0u 1 & # x00A0 & hellip & # x00A0u ك ) & # x00A0 حيث & # x00A0 <& # x00A0d & # x00A0> حيث يتم اشتقاق d تلقائيًا اعتمادًا على C أنا وإعلان نوع البيانات لـ T (كما سيتم وصفه في الجزء المتبقي من هذا القسم).

السياق Cx & Prime هو أصغر نقطة ترضي السياق (2) أعلاه. بالنسبة لأنواع البيانات المتآكلة بشكل متبادل ، قد يحتاج المترجم إلى إجراء عملية حسابية لنقطة الإصلاح لحسابها.

يتم الآن تقديم التفاصيل المتبقية للمثيلات المشتقة لكل فئة من فئات Prelude المشتقة. تشير المتغيرات والمنشآت المجانية المستخدمة في هذه الترجمات دائمًا إلى الكيانات المحددة بواسطة Prelude.

11.1 مثيلات مشتقة من Eq و Ord

طرق الفصل التي يتم تقديمها تلقائيًا بواسطة المثيلات المشتقة من Eq و Ord هي (==) ، (/ =) ، قارن ، (& # x003C) ، (& # x003C =) ، (& # x003E) ، (& # x003E =) و max و min. يتم تعريف العوامل السبعة الأخيرة لمقارنة حججهم بطريقة معجمية فيما يتعلق بمجموعة المُنشئ المُعطاة ، مع المُنشئات السابقة في إعلان نوع البيانات التي تعتبر أصغر من تلك اللاحقة. على سبيل المثال ، بالنسبة لنوع بيانات Bool ، لدينا ذلك (True & # x00A0 & # x003E & # x00A0False) & # x00A0 == & # x00A0True.

تجتاز المقارنات المشتقة دائمًا المنشئات من اليسار إلى اليمين. توضح هذه الأمثلة هذه الخاصية:

جميع العمليات المشتقة للفئة Eq و Ord صارمة في كلا الوسيطتين. على سبيل المثال ، False & # x00A0 & # x003C = & # x00A0 & perp هي & perp ، على الرغم من أن False هي أول مُنشئ من النوع Bool.

11.2 مثيلات Enum المشتقة

تكون إعلانات المثيلات المشتقة للفئة Enum ممكنة فقط للتعدادات (أنواع البيانات ذات المنشئات الفارغة فقط).

يُفترض أن المنشئات الصفرية مرقمة من اليسار إلى اليمين بالمؤشرات من 0 إلى n & ناقص 1. يعطي العاملان succ و pre قيمة للخلف والسلف على التوالي ، بموجب مخطط الترقيم هذا. من الخطأ تطبيق succ على الحد الأقصى للعنصر ، أو قبل الحد الأدنى للعنصر.

يقوم عامل التشغيل toEnum و fromEnum بتعيين القيم التي تم تعدادها من وإلى النوع Int toEnum مما يؤدي إلى حدوث خطأ في وقت التشغيل إذا لم تكن الوسيطة Int هي فهرس أحد المُنشئين.

تعريفات الطرق المتبقية هي

حيث firstCon و lastCon هما على التوالي المنشئين الأول والأخير المدرجين في إعلان البيانات. على سبيل المثال ، بالنظر إلى نوع البيانات:

11.3 مثيلات مشتقة من Bounded

تقدم فئة Bounded طرق الصنف minBound و maxBound ، والتي تحدد العناصر الدنيا والقصوى من النوع. بالنسبة للتعداد ، فإن المُنشئين الأول والأخير المُدرجين في إعلان البيانات هما الحدود. بالنسبة إلى نوع ذي مُنشئ واحد ، يتم تطبيق المُنشئ على حدود الأنواع المكونة. على سبيل المثال ، نوع البيانات التالي:

سيُنشئ مثيل Bounded التالي:

11.4 مثيلات مشتقة من القراءة والعرض

طرق الفصل التي يتم تقديمها تلقائيًا بواسطة المثيلات المشتقة من Read and Show هي showPrec و readsPrec و showList و readList. يتم استخدامها لإجبار القيم على سلاسل وتحويلها إلى قيم.

تعرض الوظيفةPrec & # x00A0d & # x00A0x & # x00A0r يقبل مستوى الأولوية d (رقم من 0 إلى 11) ، وقيمة x ، وسلسلة r. تقوم بإرجاع سلسلة تمثل x متسلسلة إلى r. showPrec يفي بالقانون: showsPrec & # x00A0d & # x00A0x & # x00A0r & # x00A0 ++ & # x00A0s & # x00A0 & # x00A0 == & # x00A0 & # x00A0showsPrec & # x00A0d & # x00A0 & # x00A0 (r & # x00A0) # x00A0s) سيتم وضع التمثيل بين قوسين إذا كانت أسبقية مُنشئ المستوى الأعلى في x أقل من d. وبالتالي ، إذا كانت d تساوي 0 ، فلن تكون النتيجة محاطة أبدًا بأقواس إذا كانت d تساوي 11 ، فستكون دائمًا محاطة بأقواس ، ما لم يكن تعبيرًا ذريًا (تذكر أن تطبيق الوظيفة له الأسبقية 10). تعد المعلمة الإضافية r ضرورية إذا كانت الهياكل الشبيهة بالشجرة ستطبع في الوقت الخطي بدلاً من الوقت التربيعي في حجم الشجرة.

تقبل الدالة readsPrec & # x00A0d & # x00A0s مستوى أسبقية d (رقم من 0 إلى 10) وسلسلة s ، وتحاول تحليل قيمة من مقدمة السلسلة ، وإرجاع قائمة (القيمة المحللة ، السلسلة المتبقية ) أزواج. إذا لم يكن هناك تحليل ناجح ، فستكون القائمة التي تم إرجاعها فارغة. ينجح تحليل تطبيق مشغل infix غير المقوس فقط إذا كانت أسبقية المشغل أكبر من أو تساوي d.

يجب أن يكون هذا هو الحال

وهذا يعني أن readsPrec يجب أن يكون قادرًا على تحليل السلسلة التي تم إنتاجها بواسطة showPrec ، ويجب أن يقدم القيمة التي بدأت بـ readsPrec.

تسمح showList و readList بتمثيل قوائم الكائنات باستخدام دلالات غير قياسية. هذا مفيد بشكل خاص للسلاسل (قوائم Char).

ستحلل readsPrec أي تمثيل صالح للأنواع القياسية بصرف النظر عن السلاسل ، التي يتم قبول السلاسل المقتبسة فقط لها ، والقوائم الأخرى ، التي يُقبل لها فقط الشكل الموجود بين قوسين [& hellip]. راجع الفصل & # x00A09 للحصول على التفاصيل الكاملة.

نتيجة العرض عبارة عن تعبير هاسكل صحيح نحويًا يحتوي على ثوابت فقط ، نظرًا لإعلانات الثبات السارية في النقطة التي تم فيها إعلان النوع. يحتوي فقط على أسماء المُنشئ المحددة في نوع البيانات والأقواس والمسافات. عند استخدام حقول المُنشئ المسماة ، يتم أيضًا استخدام الأقواس الكبيرة والفواصل وأسماء الحقول وعلامات التساوي. يتم إضافة الأقواس فقط عند الحاجة ، متجاهلة الترابطية. لا يتم إضافة فواصل أسطر. يمكن قراءة نتيجة العرض بالقراءة إذا كانت جميع أنواع المكونات قابلة للقراءة. (هذا صحيح بالنسبة لجميع الحالات المحددة في المقدمة ولكن قد لا يكون صحيحًا بالنسبة للحالات التي يحددها المستخدم.)

  • إذا تم تعريف المُنشئ على أنه عامل infix ، فسيتم تحليل مثيل القراءة المشتق فقط لتطبيقات المُنشئ (وليس نموذج البادئة).
  • الترابطية لا تستخدم لتقليل حدوث الأقواس ، على الرغم من أن الأسبقية قد تكون كذلك. على سبيل المثال ، معطى

  • show & # x00A0 (1 & # x00A0: $ & # x00A02 & # x00A0: $ & # x00A0NT) ينتج السلسلة "1 & # x00A0: $ & # x00A0 (2 & # x00A0: $ & # x00A0NT)".
  • نجح read & # x00A0 "1 & # x00A0: $ & # x00A0 (2 & # x00A0: $ & # x00A0NT)" ، وكانت النتيجة واضحة.
  • read & # x00A0 "1 & # x00A0: $ & # x00A02 & # x00A0: فشل $ & # x00A0NT".
  • لا يمكن طباعة الهياكل الدائرية أو قراءتها بواسطة هذه الحالات.
  • تفقد الطابعة البنية التحتية المشتركة ، وقد يكون التمثيل المطبوع للكائن أكبر بكثير من اللازم.
  • إن تقنيات الإعراب التي يستخدمها القارئ هي قراءة غير فعالة للغاية ، وقد يكون الهيكل الكبير بطيئًا للغاية.
  • لا يوجد تحكم للمستخدم في طباعة الأنواع المحددة في المقدمة. على سبيل المثال ، لا توجد طريقة لتغيير تنسيق أرقام الفاصلة العائمة.

11.5 مثال

كمثال كامل ، ضع في اعتبارك نوع بيانات الشجرة:

الاشتقاق التلقائي لإعلانات المثيلات لـ Bounded و Enum غير ممكن ، لأن Tree ليست تعدادًا أو نوع بيانات مُنشئ فردي. يتم عرض تعريفات المثيل الكاملة للشجرة في الشكل & # x00A011.1 ، لاحظ الاستخدام الضمني لتعريفات طريقة الفئة الافتراضية & # 8212 على سبيل المثال ، فقط & # x003C = معرّف لـ Ord ، مع طرق الفئات الأخرى (& # x003C ، & # يتم تعريف x003E، & # x003E =، max، and min) من خلال القيم الافتراضية الواردة في إعلان الفئة الموضح في الشكل & # x00A06.1.


في Python 3.x ، سيعود 5/2 2.5 و 5 // 2 سيعود 2. الأول هو تقسيم النقطة العائمة ، والأخير هو تقسيم الطابق، وأحيانًا تسمى أيضًا تقسيم صحيح.

في Python 2.2 أو ما بعده في السطر 2.x ، لا يوجد فرق بين الأعداد الصحيحة إلا إذا قمت بإجراء قسم استيراد من __future__ ، مما يجعل Python 2.x يتبنى السلوك 3.x.

بصرف النظر عن الاستيراد المستقبلي ، سيعيد 5.0 // 2 2.0 نظرًا لأن هذا هو نتيجة تقسيم الأرضية للعملية.

توضيح Python 2.x:

لتوضيح سطر Python 2.x / ، ليس تقسيم الأرضية ولا تقسيم حقيقي.

/ هو تقسيم الأرضية عندما على حد سواء args هي عدد صحيح ، لكنها تقسيم صحيح عندما إما من args تطفو.

// تنفذ "تقسيم الأرضية" ، بغض النظر عن نوعك. إذن 1.0 / 2.0 سيعطي 0.5 ، لكن كل من 1/2 و 1 // 2 و 1.0 // 2.0 سيعطي 0.

/ -> تقسيم الفاصلة العائمة

// -> تقسيم الطوابق

دعنا نرى بعض الأمثلة في كل من Python 2.7 و Python 3.5.

Python 2.7.10 مقابل Python 3.5

Python 2.7.10 مقابل Python 3.5

الآن إذا كنت تريد (في python 2.7) الحصول على نفس الإخراج كما في Python 3.5 ، فيمكنك القيام بما يلي:

بايثون 2.7.10

حيث لا يوجد فرق بين تقسيم الأرضية في كل من Python 2.7 و Python 3.5

كما أجاب الجميع بالفعل ، // هو تقسيم الأرضية.

سبب أهمية ذلك هو أن // هو تقسيم أرضي لا لبس فيه ، في جميع إصدارات Python من 2.2 ، بما في ذلك إصدارات Python 3.x.

سلوك / يمكن أن يتغير اعتمادًا على:

  • نشط __future__ استيراد أم لا (وحدة محلية)
  • خيار سطر أوامر Python ، إما -Q old أو -Q new

Python 2.7 والإصدار الآخر القادم من Python:

يقسم المعامل الأيسر بواسطة المعامل الأيمن

قسمة المعاملات حيث تكون النتيجة هي حاصل القسمة الذي تتم فيه إزالة الأرقام بعد الفاصلة العشرية. ولكن إذا كان أحد المعاملات سالبًا ، فإن النتيجة تكون أرضية ، أي تقريبًا بعيدًا عن الصفر (باتجاه اللانهاية السالبة):

أمثلة: 9 // 2 = 4 و 9.0 // 2.0 = 4.0 ، -11 // 3 = -4 ، -11.0 // 3 = -4.0

يعمل كل من المشغل / Division و // floor Division بطريقة مماثلة.

الشرطة المائلة المزدوجة ، // ، هي تقسيم الأرضية:

// هو تقسيم الأرضية ، وسوف يمنحك دائمًا الأرضية الصحيحة للنتيجة. والآخر هو التقسيم "المنتظم".

The answer of the equation is rounded to the next smaller integer or float with .0 as decimal point.

The above answers are good. I want to add another point. Up to some values both of them result in the same quotient. After that floor division operator ( // ) works fine but not division ( / ) operator:

  • // is floor division, it will always give you the floor value of the result.
  • And the other one / is the floating-point division.

Followings are the difference between / and // I have run these arithmetic operations in Python 3.7.2

Python 3.x Clarification

Just to complement some previous answers.

It is important to remark that:

Is floor division. As in:

Is not int division. As in:

Is not round to 0 float division. As in:

As a consequence, the way of behaving is different when it comes to positives an negatives numbers as in the following example:

Python 3

  1. Also referred to as integer division. The resultant value is a whole integer, though the result’s type is not necessarily int. The result is always rounded towards minus infinity: 1//2 is 0 , (-1)//2 is -1 , 1//(-2) is -1 , and (-1)//(-2) is 0 .

Python 2

Notes:

1. For (plain or long) integer division, the result is an integer. The result is always rounded towards minus infinity: 1/2 is 0, (-1)/2 is -1, 1/(-2) is -1, and (-1)/(-2) is 0. Note that the result is a long integer if either operand is a long integer, regardless of the numeric value.

4. Deprecated since version 2.3: The floor division operator, the modulo operator, and the divmod() function are no longer defined for complex numbers. Instead, convert to a floating point number using the abs() function if appropriate.

5. Also referred to as integer division. The resultant value is a whole integer, though the result’s type is not necessarily int.


11.2: Normal operators

The usual comparison operators are available, as shown in Table 9.1.

Table 9.1. Comparison Operators

Operator وصف
& lt أقل من
& GT أكثر من
<= less than or equal to
>= greater than or equal to
= equal
<> or != not equal

The != operator is converted to <> in the parser stage. It is not possible to implement != and <> operators that do different things.

Comparison operators are available for all relevant data types. All comparison operators are binary operators that return values of type boolean expressions like 1 < 2 < 3 are not valid (because there is no < operator to compare a Boolean value with 3 ).

There are also some comparison predicates, as shown in Table 9.2. These behave much like operators, but have special syntax mandated by the SQL standard.

Table 9.2. Comparison Predicates

Predicate وصف
أ BETWEEN x و ذ between
أ NOT BETWEEN x و ذ not between
أ BETWEEN SYMMETRIC x و ذ between, after sorting the comparison values
أ NOT BETWEEN SYMMETRIC x و ذ not between, after sorting the comparison values
أ IS DISTINCT FROM ب not equal, treating null like an ordinary value
أ IS NOT DISTINCT FROM ب equal, treating null like an ordinary value
expression IS NULL is null
expression IS NOT NULL is not null
expression ISNULL is null (nonstandard syntax)
expression NOTNULL is not null (nonstandard syntax)
boolean_expression IS TRUE is true
boolean_expression IS NOT TRUE is false or unknown
boolean_expression IS FALSE is false
boolean_expression IS NOT FALSE is true or unknown
boolean_expression IS UNKNOWN is unknown
boolean_expression IS NOT UNKNOWN is true or false

The BETWEEN predicate simplifies range tests:

Notice that BETWEEN treats the endpoint values as included in the range. NOT BETWEEN does the opposite comparison:

BETWEEN SYMMETRIC is like BETWEEN except there is no requirement that the argument to the left of AND be less than or equal to the argument on the right. If it is not, those two arguments are automatically swapped, so that a nonempty range is always implied.

Ordinary comparison operators yield null (signifying “ unknown ” ), not true or false, when either input is null. For example, 7 = NULL yields null, as does 7 <> NULL . When this behavior is not suitable, use the IS [ NOT ] DISTINCT FROM predicates:

For non-null inputs, IS DISTINCT FROM is the same as the <> operator. However, if both inputs are null it returns false, and if only one input is null it returns true. Similarly, IS NOT DISTINCT FROM is identical to = for non-null inputs, but it returns true when both inputs are null, and false when only one input is null. Thus, these predicates effectively act as though null were a normal data value, rather than “ unknown ” .

To check whether a value is or is not null, use the predicates:

or the equivalent, but nonstandard, predicates:

يفعل ليس write expression = NULL because NULL is not “ equal to ” NULL . (The null value represents an unknown value, and it is not known whether two unknown values are equal.)

Some applications might expect that expression = NULL returns true if expression evaluates to the null value. It is highly recommended that these applications be modified to comply with the SQL standard. However, if that cannot be done the transform_null_equals configuration variable is available. If it is enabled, PostgreSQL will convert x = NULL clauses to x IS NULL .

If the expression is row-valued, then IS NULL is true when the row expression itself is null or when all the row's fields are null, while IS NOT NULL is true when the row expression itself is non-null and all the row's fields are non-null. Because of this behavior, IS NULL and IS NOT NULL do not always return inverse results for row-valued expressions in particular, a row-valued expression that contains both null and non-null fields will return false for both tests. In some cases, it may be preferable to write صف IS DISTINCT FROM NULL or صف IS NOT DISTINCT FROM NULL , which will simply check whether the overall row value is null without any additional tests on the row fields.

Boolean values can also be tested using the predicates

These will always return true or false, never a null value, even when the operand is null. A null input is treated as the logical value “ unknown ” . Notice that IS UNKNOWN and IS NOT UNKNOWN are effectively the same as IS NULL and IS NOT NULL , respectively, except that the input expression must be of Boolean type.

Some comparison-related functions are also available, as shown in Table 9.3.

Table 9.3. Comparison Functions

Function وصف مثال Example Result
num_nonnulls(VARIADIC "any") returns the number of non-null arguments num_nonnulls(1, NULL, 2) 2
num_nulls(VARIADIC "any") returns the number of null arguments num_nulls(1, NULL, 2) 1


شاهد الفيديو: Шефу нармални, здесь нармални.. Все все НАРМАЛНИ Галстян Рустам:D:D (شهر نوفمبر 2021).