Другие ответы хороши, но если вы делаете много такого рода вещей, я рекомендую называть ваши переменные и коэффициенты более систематическим образом. Это не только позволит вам написать гораздо более простое правило, но и значительно упростит изменения, когда придет время перейти от 3 уравнений к 4. Например:
In[1]:= vars = Array[y, 3]
Out[1]= {y[1], y[2], y[3]}
In[2]:= coeffs = Array[p, 4]
Out[2]= {p[1], p[2], p[3], p[4]}
Вы можете быть немного прихотливы, когда составляете уравнение:
In[3]:= vars . Most[coeffs] == Last[coeffs]
Out[3]= p[1] y[1] + p[2] y[2] + p[3] y[3] == p[4]
Подстановка случайных чисел для коэффициентов теперь является одним из самых основных правил:
In[4]:= sub = eqn /. p[_] :> RandomReal[]
Out[4]= 0.281517 y[1] + 0.089162 y[2] + 0.0860836 y[3] == 0.915208
Правило в конце также может быть написано _p :> RandomReal[]
, если вы предпочитаете. Вам также не нужно много печатать, чтобы решить эту проблему.
In[5]:= Reduce[sub]
Out[5]= y[1] == 3.25099 - 0.31672 y[2] - 0.305785 y[3]
Как сказал Эндрю Уокер , вы используете Reduce
, чтобы найти все решения, а не только некоторые из них. Вы можете заключить это в функцию, которая параметризует количество переменных следующим образом:
In[6]:= reduceRandomEquation[n_Integer] :=
With[{vars = Array[y, n], coeffs = Array[p, n+1]},
Reduce[vars . Most[coeffs]]
In[7]:= reduceRandomEquation[4]
Out[7]= y[1] == 2.13547 - 0.532422 y[2] - 0.124029 y[3] - 2.48944 y[4]