Получение матричного ввода в Mathematica

Я хочу, чтобы пользователь ввел матрицу. У меня есть приведенный ниже код для этого.

rmatrix = {{Input["r11"], Input["r12"]}, {Input["r21"], Input["r22"]}}

Но он показывает отдельный диалог для каждого элемента. Я хочу получить полную матрицу в одном диалоге.

Я тоже пробовал по другому. проверьте код ниже.

form = FormFunction[{{"r11" -> "Number", 
     "r12" -> "Number"}, {"r21" -> "Number", "r22" -> "Number"}}, 
   MatrixForm];

Но я не знаю, как присвоить эти значения матрице.


person sheldon cooper    schedule 20.01.2017    source источник


Ответы (2)


rmatrix = DialogInput[{r11, r12, r21, r22}, Grid[{
     {"r11", InputField[Dynamic[r11], Number], "r12", 
      InputField[Dynamic[r12], Number]},
     {"r21", InputField[Dynamic[r21], Number], "r22", 
      InputField[Dynamic[r22], Number]},
     {
      Button["done", DialogReturn[{{r11, r12}, {r21, r22}}], 
       ImageSize -> Automatic]}}]];

введите здесь описание изображения

Если вы сделаете так, это не позволит вам выйти без ввода всех значений:

rmatrix = DialogInput[{r11, r12, r21, r22}, Grid[{
     {"r11", InputField[Dynamic[r11], Number], "r12", 
      InputField[Dynamic[r12], Number]},
     {"r21", InputField[Dynamic[r21], Number], "r22", 
      InputField[Dynamic[r22], Number]},
     { Button["done", DialogReturn[{{r11, r12}, {r21, r22}}], 
       ImageSize -> Automatic, 
       Enabled -> Dynamic[AllTrue[{r11, r12, r21, r22}, NumericQ]]]}}]];
person agentp    schedule 20.01.2017
comment
Спасибо, именно то, чего я пытался достичь. - person sheldon cooper; 23.01.2017

Interpretation[{
  r11 = MakeBoxes[0],
  r12 = MakeBoxes[0],
  r21 = MakeBoxes[0],
  r22 = MakeBoxes[0]}, Panel[Grid[{
    {InputField[Dynamic[r11], Boxes, FieldSize -> Tiny], 
     InputField[Dynamic[r12], Boxes, FieldSize -> Tiny]},
    {InputField[Dynamic[r21], Boxes, FieldSize -> Tiny], 
     InputField[Dynamic[r22], Boxes, FieldSize -> Tiny]}
    }]],
 With[{r11 = ToExpression[r11], r12 = ToExpression[r12], 
   r21 = ToExpression[r21], 
   r22 = ToExpression[r22]}, {{r11, r12}, {r21, r22}}]]

img

person Daniel    schedule 20.01.2017