1

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

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

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

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

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

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

ответ

1
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]}}]]; 

enter image description here

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

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]]]}}]]; 
+0

Спасибо, именно то, что я был пытаясь добиться. –

2
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