NDSolveValue에서 그리스 형식 기호를 사용할 때 Transpose :: nmtx 오류
12.0 또는 이전에 도입 된 버그, 12.2까지 지속됩니다.
NDSolveValue
두 개의 종속 변수가있는 ODE 시스템에 대한 다음 호출을 고려하십시오. 여기서 or를 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
:의 파트 2Transpose[{\[FormalAlpha], NDSolve`xs$2814}]
가 존재하지 않습니다.
기타
물건을 깨뜨리는 그리스 형식의 상징은 무엇입니까?
흥미롭게도 형식 그리스어를 포함하는 다중 문자 기호 는 괜찮습니다.
solver[a\[FormalAlpha]]
solver[\[FormalAlpha]\[FormalAlpha]]
(* OK *)
또한에 종속 변수가 하나만있는 경우 오류가 발생하지 않습니다 NDSolveValue
.
답변
v12.2는 밖으로 뱉어 ndode
경고. 이것은 문서화되지 않은 기능 과 관련된 버그 인 것 같습니다 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]
. 하지만이 함수는에 나타나지 않으며 1 개의 종속 변수 케이스를 처리하는 데 성공한 Trace[NDSolveValue[………], TraceInternal->True]
이유를 모르겠습니다 NDSolve
.
다행히도이 문제는 쉽게 피할 수 있습니다. 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}]]