نمذجة تشابك الكم في C #

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

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

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

تستند المقالة على التفسير الشائع لظاهرة التشابك الكمي من Mermin:

وأوضح مفارقة ميرمين
من أجل التقرير الشعبي للمفارقة ، يقترح D.Mermin إنشاء جهاز بسيط [23]. يجب أن يتكون الجهاز من باعث الجسيمات وكاشفين. ينبعث منها جسيمين متطابقين. بعد التقاط الجسيم ، يعطي الكاشف إجابة ثنائية (0 أو 1) ، اعتمادًا على الجسيم ومفتاح الضبط ثلاثي المواضع. الكشف عن زوج من الجسيمات يجب أن يعطي نفس الإجابات:

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

تتطلب الخاصية الأولى أن تستخدم جميع أجهزة الكشف نفس الترميز ، وموضع التبديل هو ∈ {1،2،3} ↦ استجابة ∈ {0،1} ، بدون أي عنصر من العشوائية. أي ، يجب أن يتفقوا مسبقًا على أي من الإجابات ، 0 أو 1 ، تعطي موضع التبديل ، واختيار لكل جسيم واحد من ثمانية وظائف محتملة ، 000 ، 001 ، 010 ، 011 ، 100 ، 101 ، 110 و 111. سيؤدي اختيار 000 أو 111 إلى لمصادفة 100٪ من قراءات الكاشفات بغض النظر عن موضع مقبض التحكم. إذا قامت الكاشفات بتنفيذ إحدى الوظائف الست المتبقية ، يتم سحب أحد الأرقام عن طريق مفتاح مضبوط بشكل عشوائي في 2/3 من الحالات ، والآخر مع احتمال 1/3. احتمالية مصادفة الاجابتين ستكون (⅔) ² + (⅓) ² = 5/9. لذلك بغض النظر عن خوارزمية الأوتوماتون ، فإن الارتباط يتجاوز حتمًا 50 ٪ ، مما يخالف الشرط الثاني.

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

مأخوذة من هنا .

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

[تحديث] شرح وصف مرمين


على الرغم من مرور عدة أشهر منذ كتابة المقال ولن يعود أحد إليه ، فقد قررت توضيح الأمر لتهدئة ضميري.

لقد تعمقت قليلاً وتوصلت إلى استنتاج مفاده أن الوصف وفقًا لـ Mermin مبسط للغاية ومحاولات ربطه بالتجارب الفيزيائية الحقيقية لا معنى لها .

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

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

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

بالإضافة إلى ذلك ، سأضيف "شرحًا لتفسير" هذا المرمين نفسه ، لأنه لم يكتب بشكل لا لبس فيه:

أي ، يجب أن يتفقوا مسبقًا على أي من الإجابات ، 0 أو 1 ، تعطي موضع التبديل ، مع اختيار كل جزء واحد من ثماني وظائف محتملة ، 000 ، 001 ، 010 ، 011 ، 100 ، 101 ، 110 و 111.

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

سيؤدي اختيار 000 أو 111 إلى مطابقة 100٪ لقراءات الكاشف بغض النظر عن موضع مقبض الضبط.

إذا كانت الجسيمات يمكن أن تأخذ قيمة يمكن أن نتلقى عندها استجابة "1" لأي موضع مفتاح تحويل (وكذلك 0 لأي موضع مفتاح تحويل) ، فإن التجربة الثانية في هذه الحالات ستعطي مصادفة بنسبة 100٪. للوصول إلى 50٪ ، يمكن استبعاد هذه الخيارات.

إذا قامت الكاشفات بتنفيذ إحدى الوظائف الست المتبقية ، يتم سحب أحد الأرقام عن طريق مفتاح مضبوط بشكل عشوائي في 2/3 من الحالات ، والآخر مع احتمال 1/3.

هذا يعني أنه في كل من الثلاثيات الثلاث (001 ، 010 ، 011 ، 100 ، 101 ، 110) - يتطابق اثنان فقط من الأرقام الثلاثة (في الإصدار الأول ، اثنان من الثلاثة هم "0" ، وواحد من الثلاثة هو "1" )

لتقييم الاحتمال ، نقوم بتجميع جدول للحالة الأولى 001 :

موضع المستشعر 1موضع المستشعر 2قم بمطابقة القياسات
11+
12+
13-
21+
22+
23-
31-
32-
33+

يمكن ملاحظة أنه في خمس حالات من أصل تسعة قياسات تتزامن. سيكون الاحتمال نفسه لكل من هذه الخيارات الستة (بعد كل شيء ، الرقمان متماثلان في كل منهما).

القياسات


في كل من النماذج (الحتمية والتراكمية) ، سنجري تجربتين مع جسيمات متشابكة تتوافق مع الشرطين الأول والثاني وفقًا لـ Mermin:

  1. أولاً ، قم بتعيين كلا المستشعرين في نفس الوضع. في هذه الحالة ، سوف نحصل على نتائج متطابقة 100٪ (إذا مر الفوتون الأول من خلال المستقطب ، فإن الفوتون المرتبط يمر أيضًا من خلال المستقطب في نفس الزاوية).
  2. ثم سنقوم بتعيين موضع أجهزة الاستشعار بشكل عشوائي.

إليك رمز التجربة الأولى:

var totalAttempts = 10000; //   var coincidenceCount = 0; //    for (int attemptNumber = 1; attemptNumber <= totalAttempts; attemptNumber++) { var entanglementParticles = new EntanglementParticles(); //     var position = GetRandomInteger(1, 3); //        //            int firstSensorPosition = position; int secondSensorPosition = position; bool firstValue = entanglementParticles.First.GetValue(firstSensorPosition); //         bool secondValue = entanglementParticles.Second.GetValue(secondSensorPosition); //         if (firstValue == secondValue) //     coincidenceCount ++; } Console.WriteLine(" №1: {0}%  ", (decimal)coincidenceCount / totalAttempts * 100); //   

هنا هو رمز التجربة الثانية:

 var totalAttempts = 10000; //   var coincidenceCount = 0; //    for (int attemptNumber = 1; attemptNumber <= totalAttempts; attemptNumber++) { var entanglementParticles = new EntanglementParticles(); //     int firstSensorPosition = GetRandomInteger(1, 3); //      1 int secondSensorPosition = GetRandomInteger(1, 3); //      2 bool firstValue = entanglementParticles.First.GetValue(firstSensorPosition); //         bool secondValue = entanglementParticles.Second.GetValue(secondSensorPosition); //         if (firstValue == secondValue) //     coincidenceCount ++; } Console.WriteLine(" №2: {0}%  ", (decimal)coincidenceCount / totalAttempts * 100); 

ستكون نفس الاختبارات لجميع نماذج الجسيمات ، فقط رمز الجسيم سيكون مختلفًا للنماذج القطعية والتراكمية (المزيد عن هذا أدناه).

نموذج حتمي


إنتباه! انظر التحديث في نهاية المقال!

بالنسبة لأولئك الذين يرغبون في تشغيل التعليمات البرمجية على الفور ، يمكن القيام بذلك من المتصفح: dotnetfiddle.net/N5Xg18

لذا ، وفقًا لتفسير ميرمين ، لدينا جسيم كمي بثلاث معلمات:

 //   ( , ) public class Particle { private bool _measured = false; public bool A { get; private set; } //       1 public bool B { get; private set; } //       2 public bool C { get; private set; } //       3 public Particle(bool a, bool b, bool c) { A = a; B = b; C = c; } //         ( 3 ). public bool GetValue(int sensorPosition) { if (_measured) throw new InvalidOperationException("    !"); _measured = true; switch (sensorPosition) { case 1: return A; case 2: return B; case 3: return C; default: throw new ArgumentOutOfRangeException(); } } } 

نظرًا لأن النموذج حتمية ، تتم تهيئة جميع معلمات الجسيم في وقت إنشائه ، أي مباشرة في المنشئ. الشرط الوحيد هو أن القياس مسموح به مرة واحدة فقط!

التالي. زوج من الجسيمات المتشابكة:

 //    public class EntanglementParticles { public Particle First { get; private set; } //   public Particle Second { get; private set; } //   //     (   ,         ) public EntanglementParticles() { //         bool a; bool b; bool c; do { a = GetRandomBoolean(); //     1 b = GetRandomBoolean(); //     2 c = GetRandomBoolean(); ; //     3 } while (a == b && b == c); //   000  111 (    ,       ) First = new Particle(a, b, c); Second = new Particle(a, b, c); //       } } 


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

رمز المثال الكامل:

كود C # للنموذج القطعي (ثابت)
 using System; public class Program { private static readonly Random Random = new Random(); //   public class Particle { private bool _measured = false; public bool A { get; private set; } //       1 public bool B { get; private set; } //       2 public bool C { get; private set; } //       3 public Particle(bool a, bool b, bool c) { A = a; B = b; C = c; } //         ( 3 ). public bool GetValue(int sensorPosition) { if (_measured) throw new InvalidOperationException("    !"); _measured = true; switch (sensorPosition) { case 1: return A; case 2: return B; case 3: return C; default: throw new ArgumentOutOfRangeException(); } } } //    public class EntanglementParticles { public Particle First { get; private set; } //   public Particle Second { get; private set; } //   //     (   ,         ) public EntanglementParticles() { //         bool a; bool b; bool c; do { a = GetRandomBoolean(); //     1 b = GetRandomBoolean(); //     2 c = GetRandomBoolean();; //     3 } while (a == b && b == c); //   000  111 (   ,       ) First = new Particle(a, b, c); Second = new Particle(a, b, c); //       } } public static void Main(string[] args) { Experiment1(); Experiment2(); } private static void Experiment1() { var totalAttempts = 10000; //   var coincidenceCount = 0; //    for (int attemptNumber = 1; attemptNumber <= totalAttempts; attemptNumber++) { var entanglementParticles = new EntanglementParticles(); //     var position = GetRandomInteger(1, 3); //        //            int firstSensorPosition = position; int secondSensorPosition = position; bool firstValue = entanglementParticles.First.GetValue(firstSensorPosition); //         bool secondValue = entanglementParticles.Second.GetValue(secondSensorPosition); //         if (firstValue == secondValue) //     coincidenceCount ++; } Console.WriteLine(" №1: {0}%  ", (decimal)coincidenceCount / totalAttempts * 100); //   } private static void Experiment2() { var totalAttempts = 10000; //   var coincidenceCount = 0; //    for (int attemptNumber = 1; attemptNumber <= totalAttempts; attemptNumber++) { var entanglementParticles = new EntanglementParticles(); //     int firstSensorPosition = GetRandomInteger(1, 3); //      1 int secondSensorPosition = GetRandomInteger(1, 3); //      2 bool firstValue = entanglementParticles.First.GetValue(firstSensorPosition); //         bool secondValue = entanglementParticles.Second.GetValue(secondSensorPosition); //         if (firstValue == secondValue) //     coincidenceCount ++; } Console.WriteLine(" №2: {0}%  ", (decimal)coincidenceCount / totalAttempts * 100); } private static bool GetRandomBoolean() { return GetRandomInteger(0, 1) == 1; } private static int GetRandomInteger(int from, int to) { return Random.Next(from, to + 1); //          } } 


يمكنك تشغيله من المتصفح (مرة أخرى الرابط: dotnetfiddle.net/N5Xg18 ).

بعد الإطلاق ، هذه هي النتائج:

التجربة رقم 1: 100٪ من القيم تزامنت
التجربة رقم 2: 55.6700٪ من القيم المطابقة

تم اجتياز الاختبار الأول ، وهو يتوافق مع ما يحدث في الواقع. لكن الثانية - لا تتطابق ، لأنها يجب أن تحصل على 50 ٪!

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

نموذج تراكمي


على الفور رابط لرمز المثال ، لأولئك الذين يحبون التفاصيل (يمكن تشغيله في متصفح): dotnetfiddle.net/Mb7JqU

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

 //   public class Particle { private Particle _superluminalChannel; //         . private int? _measuredPosition; public bool? A { get; private set; } //       1 public bool? B { get; private set; } //       2 public bool? C { get; private set; } //       3 internal void CreateSuperluminalChannelWith(Particle particle) { _superluminalChannel = particle; } //         ( 3 ). public bool GetValue(int sensorPosition) { if (null != _measuredPosition) throw new InvalidOperationException("    !"); _measuredPosition = sensorPosition; if (null != _superluminalChannel._measuredPosition) //        { var measuredValue = _superluminalChannel.GetNakedValue(); //         (    ),   ,     . if (sensorPosition == _superluminalChannel._measuredPosition) return measuredValue; if (GetRandomInteger(1, 4) == 1) return measuredValue; return !measuredValue; } //  .        ,       -  . //   ! var value = GetRandomBoolean(); SetValue(sensorPosition, value); return value; } private bool GetNakedValue() //           ,    . { if (null == _measuredPosition) throw new InvalidOperationException(); switch (_measuredPosition.Value) { case 1: return A.Value; case 2: return B.Value; case 3: return C.Value; default: throw new InvalidOperationException(); } } private void SetValue(int position, bool value) { switch (position) { case 1: A = value; break; case 2: B = value; break; case 3: C = value; break; default: throw new ArgumentOutOfRangeException(); } } } 

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

داخل طريقة GetValue هو مجرد تكهنات. لا أحد يعرف كيف يتم ترتيب الجسيم في الداخل ، لكننا نعلم أنه يعمل بهذه الطريقة: عدم تطابق بنسبة 100٪ عند قياس نفس المعلمة و 50٪ عدم تطابق عند قياس المعلمات بترتيب عشوائي.

في نسختي من الشفرة ، يتحقق جسيم من خلال قناة فائقة السطوع مما إذا كان القياس قد تم الخلط معه ويتصرف على النحو التالي:

  1. إذا كانت المعلمة المقاسة لجسيم آخر هي نفسها التي نحاول قياسها ، فإنها تعطي نفس القيمة.
  2. إذا كانت المعلمة مختلفة ، ففي 1/4 من الحالات تعطي نفس القيمة ، وفي 3/4 من الحالات تعطي القيمة المعاكسة (حيث نحصل على 50/50).

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

بالمناسبة! يمكنك إعادة كتابة هذه الوظيفة بطريقة أخرى ، ولكن نتائج الاختبار هي نفسها. على الرغم من كل ذلك ، لا أحد يعرف كيف يتم ترتيب الجسيمات الأولية وكيف يتم تحقيق 50 ٪ للاختبار الثاني.

أصبح زوج من الجسيمات المتشابكة أسهل ، لأنه في لحظة التشابك لم يتم تعيين قيم (لم يتم تحديد القيم بعد):

 //    public class EntanglementParticles { public Particle First { get; private set; } //   public Particle Second { get; private set; } //   //     (  ,   ) public EntanglementParticles() { First = new Particle(); //   ,    Second = new Particle(); //   ,    //         First.CreateSuperluminalChannelWith(Second); Second.CreateSuperluminalChannelWith(First); } } 

رمز المثال الكامل:

نموذج تراكمي في C #
 using System; public class Program { private static readonly Random Random = new Random(); //   public class Particle { private Particle _superluminalChannel; //         . private int? _measuredPosition; public bool? A { get; private set; } //       1 public bool? B { get; private set; } //       2 public bool? C { get; private set; } //       3 internal void CreateSuperluminalChannelWith(Particle particle) { _superluminalChannel = particle; } //         ( 3 ). public bool GetValue(int sensorPosition) { if (null != _measuredPosition) throw new InvalidOperationException("    !"); _measuredPosition = sensorPosition; if (null != _superluminalChannel._measuredPosition) //        { var measuredValue = _superluminalChannel.GetNakedValue(); //         (    ),   ,     . if (sensorPosition == _superluminalChannel._measuredPosition) return measuredValue; if (GetRandomInteger(1, 4) == 1) return measuredValue; return !measuredValue; } //  .        ,       -  . //   ! var value = GetRandomBoolean(); SetValue(sensorPosition, value); return value; } private bool GetNakedValue() //           ,    . { if (null == _measuredPosition) throw new InvalidOperationException(); switch (_measuredPosition.Value) { case 1: return A.Value; case 2: return B.Value; case 3: return C.Value; default: throw new InvalidOperationException(); } } private void SetValue(int position, bool value) { switch (position) { case 1: A = value; break; case 2: B = value; break; case 3: C = value; break; default: throw new ArgumentOutOfRangeException(); } } } //    public class EntanglementParticles { public Particle First { get; private set; } //   public Particle Second { get; private set; } //   //     (  ,   ) public EntanglementParticles() { First = new Particle(); //   ,    Second = new Particle(); //   ,    //         First.CreateSuperluminalChannelWith(Second); Second.CreateSuperluminalChannelWith(First); } } public static void Main(string[] args) { Experiment1(); Experiment2(); } private static void Experiment1() { var totalAttempts = 10000; //   var coincidenceCount = 0; //    for (int attemptNumber = 1; attemptNumber <= totalAttempts; attemptNumber++) { var entanglementParticles = new EntanglementParticles(); //     var position = GetRandomInteger(1, 3); //        //            int firstSensorPosition = position; int secondSensorPosition = position; bool firstValue = entanglementParticles.First.GetValue(firstSensorPosition); //         bool secondValue = entanglementParticles.Second.GetValue(secondSensorPosition); //         if (firstValue == secondValue) //     coincidenceCount ++; } Console.WriteLine(" №1: {0}%  ", (decimal)coincidenceCount / totalAttempts * 100); //   } private static void Experiment2() { var totalAttempts = 10000; //   var coincidenceCount = 0; //    for (int attemptNumber = 1; attemptNumber <= totalAttempts; attemptNumber++) { var entanglementParticles = new EntanglementParticles(); //     int firstSensorPosition = GetRandomInteger(1, 3); //      1 int secondSensorPosition = GetRandomInteger(1, 3); //      2 bool firstValue = entanglementParticles.First.GetValue(firstSensorPosition); //         bool secondValue = entanglementParticles.Second.GetValue(secondSensorPosition); //         if (firstValue == secondValue) //     coincidenceCount ++; } Console.WriteLine(" №2: {0}%  ", (decimal)coincidenceCount / totalAttempts * 100); } private static bool GetRandomBoolean() { return GetRandomInteger(0, 1) == 1; } private static int GetRandomInteger(int from, int to) { return Random.Next(from, to + 1); //          } } 


النتائج:

التجربة رقم 1: 100٪ من القيم تزامنت
التجربة رقم 2: 49.7700٪ من القيم تزامنت

تشغيل في المستعرض: dotnetfiddle.net/Mb7JqU

الاستنتاجات


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

لسوء الحظ ، ليس لدي موارد الوقت لمعرفة أعمق بفيزياء الكم ، وآمل أن يتمكن أولئك الذين يعرفون من اتباع حذوتي وتقديم نماذج عمل أكثر دقة.

تحديث
إن تفسير ميرمين لا يتعلق بتصميم الكواشف. بمبادرة مني ، أضفت شرحًا إلى A و B و C على أنه إسقاط للدوران على المحور X و Y و Z على التوالي. أي ، أردت أن أضيف ربطًا للظواهر الفيزيائية في التعليقات على الشفرة حتى لا تكون جافة جدًا. وقد أخطأت في هذا ...

يتم تصحيح المقالة ويتم حذف جميع المحاولات العقيمة لربط تفسير مرمين بالتجارب الفيزيائية الحقيقية.

Source: https://habr.com/ru/post/ar420611/


All Articles