NDSolveValue में ग्रीक औपचारिक प्रतीक का उपयोग करते समय ट्रांज़िशन :: nmtx त्रुटि
बग को 12.0 या उससे पहले पेश किया गया, जो 12.2 से बना रहा।
NDSolveValue
ODE की प्रणाली के लिए 2 आश्रित चर के साथ निम्नलिखित कॉल पर विचार करें , जहाँ हम पहले निर्भर चर को चुन सकते हैं symbol
, सिवाय किसी भी प्रतीक के y
या t
:
solver[symbol : Except[y | t, _Symbol]] :=
NDSolveValue[
{symbol'[t] == 1, y'[t] == 1, symbol[0] == 0, y[0] == 0}
, {symbol, y}
, {t, 0, 1}
];
$Version
(* 12.0.0 for Linux x86 (64-bit) (April 7, 2019) *)
यदि हम साधारण लैटिन प्रतीकों, साधारण ग्रीक प्रतीकों या औपचारिक लैटिन प्रतीकों का चयन करते हैं, तो यह ठीक काम करता है:
solver[a]
solver[α]
solver[\[FormalA]]
(* OK *)
लेकिन अगर हम किसी भी औपचारिक यूनानी प्रतीक को चुनते हैं, तो हमें त्रुटियाँ मिलती हैं:
solver[\[FormalAlpha]]
Transpose::nmtx
: पहले दो स्तरों को{\[FormalAlpha], NDSolve`xs$2814}
स्थानांतरित नहीं किया जा सकता है।
Part::partw
: भाग 2 काTranspose[{\[FormalAlpha], NDSolve`xs$2814}]
अस्तित्व नहीं है।
आदि।
यह ग्रीक औपचारिक प्रतीकों के बारे में क्या है जो चीजों को तोड़ने का कारण बनता है?
दिलचस्प बात यह है कि, फॉर्मल ग्रीक वाले बहु-चरित्र प्रतीक ठीक हैं:
solver[a\[FormalAlpha]]
solver[\[FormalAlpha]\[FormalAlpha]]
(* OK *)
यह भी ध्यान दें कि यदि केवल 1 आश्रित चर नहीं है तो त्रुटि उत्पन्न होती है NDSolveValue
।
जवाब
v12.2ndode
चेतावनी से बाहर निकलता है । यह अनिर्दिष्ट फ़ंक्शन से संबंधित बग प्रतीत होता है Internal`ProcessEquations`FindDependentVariables
(मैं इसे इस पोस्ट BTW से जानता हूं ):
Table[
Internal`ProcessEquations`FindDependentVariables[{symbol'[t] == 1, y'[t] == 1,
symbol[0] == 0, y[0] == 0}, t], {symbol, {\[FormalAlpha], a\[FormalAlpha]}}]
(* {{y}, {a\[FormalAlpha], y}} *)
जैसा कि हम देख सकते हैं, यह एकल खोजने में विफल रहता है \[FormalAlpha]
। लेकिन यह फ़ंक्शन दिखाई नहीं देता है Trace[NDSolveValue[………], TraceInternal->True]
, और मुझे नहीं पता कि NDSolve
1 आश्रित चर मामले को संभालने में सफल क्यों होता है।
सौभाग्य से, समस्या को दरकिनार करना आसान है। बस DependentVariables
विकल्प सेट करें :
With[{symbol = \[FormalAlpha]},
NDSolveValue[{symbol'[t] == 1, y'[t] == 1, symbol[0] == 0, y[0] == 0}, {symbol, y},
{t, 0, 1}, DependentVariables -> {symbol, y}]]