كيفية استخدام وحدات على طول القيم ظيفة معلمة في الرياضيات

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

سؤال

وأود أن تمرير قيم المعلمات بالأمتار أو الكيلومترات (سواء أمكن) والحصول على النتيجة في متر / ثانية.

ولقد حاولت أن تفعل هذا في المثال التالي:

u = 3.986*10^14 Meter^3/Second^2;
v[r_, a_] := Sqrt[u (2/r - 1/a)];

Convert[r, Meter];

Convert[a, Meter];

إذا أنا أحاول أن استخدام وظيفة محددة والتحويل:

a = 24503 Kilo Meter;
s = 10198.5 Meter/Second;
r = 6620 Kilo  Meter;
Solve[v[r, x] == s, x]

وتقوم الدالة بإرجاع ما يلي:

{x -> (3310. Kilo Meter^3)/(Meter^2 - 0.000863701 Kilo Meter^2)}

والذي لا شكل سهل الاستعمال.

وعلى أي حال أود أن تحديد و r في متر أو كيلو والحصول على نتيجة الصورة في متر / ثانية (متر / الثانية).

وسأكون شاكرا جدا إذا كان أي شخص منكم يمكن تصحيح تعريف وظيفة معينة وبيانات أخرى من أجل الحصول على النتيجة المرغوبة.

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

المحلول

وهنا طريقة واحدة للقيام بذلك، حيث يمكنك استخدام حقيقة أن Solve بإرجاع قائمة من القواعد لاستبدال قيمة x إلى v[r, x]، ومن ثم استخدام Convert، والتي سوف تفعل تبسيط الضروري للتعبير جبري أدى أيضا:

With[{rule = First@Solve[v[r,x]==s,x] 
      (* Solve always returns a list of rules, because algebraic 
         equations may have multiple solutions. *)},
  Convert[v[r,x] /. rule, Meter/Second]]

وهذا سيعود (10198.5 Meter)/Second كما جوابك.

نصائح أخرى

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

SimplifyWithUnits[blabla_, unit_List]:= Simplify[blalba, (#>0)&/@unit];

وحتى إذا كنت الحصول على هذا الشيء القبيح، وكنت فقط ثم اكتب٪ ~ ~ {SimplifyWithUnits متر} أو أيا كان.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top