الظروف الأولية مع قصيدة غير خطي في الرياضيات

StackOverflow https://stackoverflow.com/questions/3061981

  •  28-09-2019
  •  | 
  •  

سؤال

أحاول استخدام ndsolve من Mathematica [] لحساب الجيوديسية على طول كرة باستخدام قصيدة مقترنة:

x" - (x" . x) x = 0

المشكلة هي أنه لا يمكنني سوى إدخال الشروط الأولية لـ x (0) و x '(0) وأن المحلل سعيدًا بالحل حيث x "= 0. المشكلة "(0) = -x (0) ، والتي ليس لدي أي فكرة عن كيفية إخبار Mathematica. إذا قمت بإضافة هذا كشرط ، فإنني تقول إنني أضيف إلى قائمة الشروط.

ها هو رمزتي:

s1 = NDSolve[{x1''[t] - (x1[t] * x1''[t] + x2[t] * x2''[t] + x3[t]*x3''[t]) * x1[t] == 0, x2''[t] -  (x1[t] * x1''[t] + x2[t] * x2''[t] + x3[t]*x3''[t]) * x2[t] == 0, x3''[t] - (x1[t] * x1''[t] + x2[t] * x2''[t] + x3[t]*x3''[t]) * x3[t] == 0, x1[0] == 1, x2[0] == 0, x3[0] == 0, x1'[0] == 0, x2'[0] == 0, x3'[0] == 1} , { x1, x2, x3}, {t, -1, 1}][[1]]

أرغب في تعديل هذا حتى لا يكون التسارع الأولي صفرًا ولكن -x(0).

شكرًا

هل كانت مفيدة؟

المحلول 2

لقد أصلحت هذه المشكلة من خلال إعادة ترتيب رياضي بدلاً من معالجة مشكلتي الأصلية:

دع v (t) يكون حقل متجه على طول x (t).

x. v = 0 يعني d/dt (x. v) = (x '. v) + (x. v') = 0

وبالتالي فإن المعادلة d/dt v = v ' - (x. v') x = v ' + (x'. v) x تحمل هذا يعني أن المعادلة الجيوديسية تصبح: x " + (x '. x') x = 0 وهكذا يمكن حلها باستخدام الظروف الأولية التي كان لدي في الأصل.

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

نصائح أخرى

حسنًا ، كما تقول رسالة الخطأ - تقبل NDSolve فقط الشروط الأولية لمشتقات الطلبات أقل تمامًا من الحد الأقصى الذي يظهر في القصيدة.
لدي شعور بأن هذا هو أكثر من سؤال الرياضيات. رياضيا ، {x''[0]=-x0, x[0]==x0}, ، لا تحدد حلًا فريدًا - يجب عليك القيام بشيء ما على غرار {x0.x''[0]==-1, x[0]==x0, x'[0]-x0 x0.x'[0]==v0} لكي ينجح هذا الأمر (سيظل NDSOLVE يفشل بنفس الخطأ). هل تدرك أنك ستحصل على دائرة رائعة على كرة الوحدة ، أليس كذلك؟

بالمناسبة ، إليكم كيف كنت سأشفر مثالك:

x[t_] = Table[Subscript[x, j][t], {j, 3}];
s1 = NDSolve[Flatten[Thread /@ #] &@{
       x''[t] - (x''[t].x[t]) x[t] == {0, 0, 0},
       x[0] == {1, 0, 0}, 
       x'[0] == {0, 0, 1}
     }, x[t], {t, -1, 1}]
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top