كيفية استخدام وحدات على طول القيم ظيفة معلمة في الرياضيات
-
07-07-2019 - |
سؤال
وأود أن تمرير قيم المعلمات بالأمتار أو الكيلومترات (سواء أمكن) والحصول على النتيجة في متر / ثانية.
ولقد حاولت أن تفعل هذا في المثال التالي:
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 متر} أو أيا كان.