Transpose :: NDSolveValue'da Yunanca Biçimsel sembolü kullanırken nmtx hatası
12.0 veya önceki sürümlerde ortaya çıkan hata, 12.2.
NDSolveValue
İlk bağımlı değişkeni veya symbol
dışında herhangi bir sembol olarak seçebileceğimiz 2 bağımlı değişkenli bir ODE sistemi için aşağıdaki çağrıyı düşünün :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) *)
Sıradan Latin sembollerini, sıradan Yunan sembollerini veya Resmi Latin sembollerini seçersek, bu iyi çalışır:
solver[a]
solver[α]
solver[\[FormalA]]
(* OK *)
Ancak herhangi bir Resmi Yunan sembolü seçersek, hatalar alırız:
solver[\[FormalAlpha]]
Transpose::nmtx
: İlk iki seviyenin yeri{\[FormalAlpha], NDSolve`xs$2814}
değiştirilemez.
Part::partw
: Bölüm 2Transpose[{\[FormalAlpha], NDSolve`xs$2814}]
mevcut değil.
vb.
Şeylerin bozulmasına neden olan Yunan Biçimsel sembolleriyle ilgili nedir?
İlginç bir şekilde, Biçimsel Yunanca içeren çok karakterli semboller uygundur :
solver[a\[FormalAlpha]]
solver[\[FormalAlpha]\[FormalAlpha]]
(* OK *)
Ayrıca, içinde yalnızca 1 bağımlı değişken varsa, hatanın oluşmayacağına dikkat edin NDSolveValue
.
Yanıtlar
v12.2 tükürüyor ndode
uyarı. Bu , belgelenmemiş işlevle ilgili bir hata gibi görünüyor Internal`ProcessEquations`FindDependentVariables
(bunu bu BTW gönderisinden biliyorum ):
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}} *)
Gördüğümüz gibi single'ı bulamıyor \[FormalAlpha]
. Ancak bu işlev görünmüyor ve 1 bağımlı değişken durumunu ele almakta Trace[NDSolveValue[………], TraceInternal->True]
neden NDSolve
başarılı olduğuna dair hiçbir fikrim yok .
Neyse ki, sorunun üstesinden gelmek kolaydır. Sadece DependentVariables
seçeneği ayarlayın :
With[{symbol = \[FormalAlpha]},
NDSolveValue[{symbol'[t] == 1, y'[t] == 1, symbol[0] == 0, y[0] == 0}, {symbol, y},
{t, 0, 1}, DependentVariables -> {symbol, y}]]