2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2  След.
 
 Проблемы с решением систем в Mathematica
Сообщение16.02.2017, 16:39 
Аватара пользователя
В чем проблема?
Код:
In[21]:= Solve[{x ^2 + y == 10, x == y^2 + 10}, {x, y}]},
RecursionLimit::reclim2: Recursion depth of 1024 exceeded during evaluation of (-1+x)^2.
Out[21]:= Hold[{{Solve[{x^2 + y == 10, x == y^2 + 10}, {x, y}]}, {Null}}]

 
 
 
 Re: Проблемы с решением систем в Mathematica
Сообщение16.02.2017, 17:45 
Аватара пользователя
Rusit8800 в сообщении #1193187 писал(а):
В чем проблема?
Код:
In[21]:= Solve[{x ^2 + y == 10, x == y^2 + 10}, {x, y}]},
RecursionLimit::reclim2: Recursion depth of 1024 exceeded during evaluation of (-1+x)^2.
Out[21]:= Hold[{{Solve[{x^2 + y == 10, x == y^2 + 10}, {x, y}]}, {Null}}]
Ну, уберите лишний пробел, лишнюю фигурную скобку и запятую. На Wolfram Alpha оно работает.

 
 
 
 Re: Проблемы с решением систем в Mathematica
Сообщение16.02.2017, 22:14 
Аватара пользователя
SergeyGubanov, это всё мимо, не мешайтесь. Напиши хоть
Код:
x             ^2
(если вы это место имели в виду), всё посчитается. Это раз. Лишняя фигурная скобка и запятая в конце застопорят вычисления немедленно и выдадут ошибку. Это два.
Дело не в этом. Код
Код:
Solve[{x ^2 + y == 10, x == y^2 + 10}, {x, y}]
у меня на M11 выдаёт четыре комплексных корня. Вещественных нет, как подсказывает картинка:

Изображение

Rusit8800, какой версией Математики вы пользуетесь? Не исключено, что это баг, о котором неплохо бы сообщить разработчикам. Ну или я не вижу здесь чего-то, бросающегося в глаза.

 
 
 
 Re: Проблемы с решением систем в Mathematica
Сообщение16.02.2017, 23:19 
А не могли ли x, y быть определены выше?

 
 
 
 Re: Проблемы с решением систем в Mathematica
Сообщение16.02.2017, 23:55 
Аватара пользователя
Да запросто. Если это global scope, здесь любое приключиться может. Следите за переменными!

 
 
 
 Re: Проблемы с решением систем в Mathematica
Сообщение17.02.2017, 16:18 
Аватара пользователя
Эта проблема решена, но появилась другая: Mathematica 11 плохо показывает корни
Код:
Solve[{x^6 + x - 1 == 0}, {x}]
{{x -> Root[-1 + #1 + #1^6 &, 1]}, {x ->
   Root[-1 + #1 + #1^6 &, 2]}, {x -> Root[-1 + #1 + #1^6 &, 3]}, {x ->
    Root[-1 + #1 + #1^6 &, 4]}, {x ->
   Root[-1 + #1 + #1^6 &, 5]}, {x -> Root[-1 + #1 + #1^6 &, 6]}}


-- 17.02.2017, 17:19 --

С квадратным уравнением вроде норм:
Код:
Solve[{x^2 + x - 1 == 0}, {x}]
{{x -> 1/2 (-1 - Sqrt[5])}, {x -> 1/2 (-1 + Sqrt[5])}}


-- 17.02.2017, 17:22 --

Еще проблема: не решает уравнения с коэффициентами:
Код:
Solve[{ax^2 + bx + c = 0}, {x}]
Set::write: Tag Plus in ax^2+bx+c is Protected.
Solve::naqs: 0 is not a quantified system of equations and inequalities.

 
 
 
 Re: Проблемы с решением систем в Mathematica
Сообщение17.02.2017, 16:37 
Аватара пользователя
Rusit8800 в сообщении #1193386 писал(а):
Эта проблема решена, но появилась другая: Mathematica 11 плохо показывает корни
Код:
Solve[{x^6 + x - 1 == 0}, {x}]
{{x -> Root[-1 + #1 + #1^6 &, 1]}, {x ->
   Root[-1 + #1 + #1^6 &, 2]}, {x -> Root[-1 + #1 + #1^6 &, 3]}, {x ->
    Root[-1 + #1 + #1^6 &, 4]}, {x ->
   Root[-1 + #1 + #1^6 &, 5]}, {x -> Root[-1 + #1 + #1^6 &, 6]}}
В каком виде, Вы хотите, чтоб они были?
Rusit8800 в сообщении #1193386 писал(а):
Код:
Solve[{x^6 + x - 1 == 0}, {x}]
Код:
Solve[{ax^2 + bx + c = 0}, {x}]
Уравнение записано по-разному. Речь идёт не только о коэффициентах.

 
 
 
 Re: Проблемы с решением систем в Mathematica
Сообщение17.02.2017, 16:45 
Аватара пользователя
Rusit8800 в сообщении #1193386 писал(а):
плохо показывает корни
«Плохо показывает» значит «показывает не в радикалах»? Давно известно, что не каждое уравнение выше некоторой (вы вообще в курсе, какой именно?) степени может быть решено в радикалах. Есть функция ToRadicals, можно попробовать.
Rusit8800 в сообщении #1193386 писал(а):
С квадратным уравнением вроде норм
Да неужели.

А в последнем случае вы напортачили с синтаксисом, элементарная невнимательность.

 
 
 
 Re: Проблемы с решением систем в Mathematica
Сообщение18.02.2017, 15:11 
Аватара пользователя
Aritaborian в сообщении #1193401 писал(а):
«Плохо показывает» значит «показывает не в радикалах»?

Нет радикалы он показывает, я так скопировал.
Aritaborian в сообщении #1193401 писал(а):
Давно известно, что не каждое уравнение выше некоторой (вы вообще в курсе, какой именно?) степени может быть решено в радикалах.

Ну тогда бы программа так и написала, зачем ей выдавать что-то непонятное?
Mysterious Light в сообщении #1193399 писал(а):
Уравнение записано по-разному. Речь идёт не только о коэффициентах.

И почему-то по втором случае Mathematica не решает уравнение.
Mysterious Light в сообщении #1193399 писал(а):
В каком виде, Вы хотите, чтоб они были?

Чтоб не было этих решеток(тут я уже скопировал как есть), да и вообще меня бесят фигурные скобки в выводе и эти стрелочки вместо знака =.

 
 
 
 Re: Проблемы с решением систем в Mathematica
Сообщение18.02.2017, 16:36 
Rusit8800 в сообщении #1193584 писал(а):
Ну тогда бы программа так и написала, зачем ей выдавать что-то непонятное?
Так она с этими Root[...] умеет вычисления делать, например. :-) Потом, там есть справка, хотя и на английском, где поясняется практически всё, что каждая функция может принимать и что (и почему) выдавать.

Rusit8800 в сообщении #1193584 писал(а):
И почему-то по втором случае Mathematica не решает уравнение.
Это был намёк на то, что во втором случае = (присваивание) вместо ==, ну и там у вас нет переменной x, зато есть две переменные ax, bx, первая из которых возводится в квадрат. Т. к. переменные могут иметь многобуквенные имена, при умножении однобуквенные переменные надо разделять пробелами: a x^2, b x (в случаях типа 2x можно не писать, хотя если умножать на число справа, пробел тоже нужен, т. к. x2 — допустимое имя для переменной).

Rusit8800 в сообщении #1193584 писал(а):
да и вообще меня бесят фигурные скобки в выводе и эти стрелочки вместо знака =
Можно сделать x /. Solve[...], тогда эти стрелочки подставят значения вместо икса и получится список корней. Можно использовать Reduce, и будет конъюнкция равенств (но всё равно в виде ==, т. к. = сразу вычисляется и присваивает значение правого аргумента левому). Можно ещё что-то сделать, но в любом случае стрелочки ничего страшного не представляют. Don’t worry, be happy.

 
 
 
 Re: Проблемы с решением систем в Mathematica
Сообщение19.02.2017, 13:30 
Аватара пользователя
Код:
In[17]:= solve[{a x + b x + 1 == 0}, {x}]
Out[17]= solve[{1 + a x + b x == 0}, {x}]

Снова показывает что-то не то. Мне надо, чтобы он выразил $x$ через коэффициенты.

-- 19.02.2017, 14:31 --

arseniiv в сообщении #1193593 писал(а):
Это был намёк на то, что во втором случае = (присваивание) вместо ==, ну и там у вас нет переменной x, зато есть две переменные ax, bx, первая из которых возводится в квадрат. Т. к. переменные могут иметь многобуквенные имена, при умножении однобуквенные переменные надо разделять пробелами: a x^2, b x (в случаях типа 2x можно не писать, хотя если умножать на число справа, пробел тоже нужен, т. к. x2 — допустимое имя для переменной).

Я не понял, почему без пробела не работает.

-- 19.02.2017, 14:31 --

arseniiv в сообщении #1193593 писал(а):
x /. Solve[...]

Это команда такая?

-- 19.02.2017, 14:35 --

А если писать solve с большой буквы, то он выражает:
Код:
In[24]:= Solve[{a x + b x + 1 == 0}, {x}]
Out[24]= {{x -> -(1/(a + b))}}

Чудеса!

-- 19.02.2017, 14:39 --

Еще вопрос, как сделать так, чтобы программа "принимала" индексы?
Код:
In[31]:= Solve[{a_ 1 x + b_ 1 y + c_ 1 z == 0,  a_ 2 x + b_ 2 y + c_ 2 z == 0, a_ 3 x + b y + c_ 3 z == 0 }, {x, y,  z}]

During evaluation of In[31]:= Solve::svars: Equations may not give solutions for all "solve" variables.

Out[31]= {{y -> 0, z -> -((x a_)/c_)}}


 
 
 
 Re: Проблемы с решением систем в Mathematica
Сообщение19.02.2017, 22:40 
Rusit8800 в сообщении #1193742 писал(а):
Снова показывает что-то не то. Мне надо, чтобы он выразил $x$ через коэффициенты.
Rusit8800 в сообщении #1193742 писал(а):
А если писать solve с большой буквы, то он выражает: <…> Чудеса!
Это просто регистрозависимый язык, для него AB, Ab, aB, ab — четыре разных имени. Во многих современных языках программирования так принято (язык системы комп. алгебры обычно является специализированным языком программирования).

Rusit8800 в сообщении #1193742 писал(а):
Я не понял, почему без пробела не работает.
ax распознаётся как имя одной переменной целиком, a x как произведение переменных a и x.

Rusit8800 в сообщении #1193742 писал(а):
Это команда такая?
Да, если вместо многоточия подставить что-то реальное. Означает «сделать подстановки, указанные справа от /., в выражении слева от /., а запись со стрелочками как раз описывает подстановку, и Solve выдаёт всё так, чтобы в результате подстановки получался список выражений по одному на найденное решение.

Rusit8800 в сообщении #1193742 писал(а):
Еще вопрос, как сделать так, чтобы программа "принимала" индексы?
Можно указывать их в квадратных скобках: a[1], a[2]

 
 
 
 Re: Проблемы с решением систем в Mathematica
Сообщение25.02.2017, 19:36 
Аватара пользователя
Еще одна странная вещь:
Код:
In[18]:= Solve[{a[1] x + b[1] y + c[1] z == 0, a[2] x + b[2] y + c[2] z == 0, a[3] x + b[3] y + c[3] z == 0}, {x, y, z}]
Out[18]= {{x -> 0, y -> 0, z -> 0}}

Программа пишет только очевидное нулевое решение, но все остальные решения не ищет.

 
 
 
 Re: Проблемы с решением систем в Mathematica
Сообщение25.02.2017, 22:14 
Другие это какие? По умолчанию математика рассматривает случай общего положения. А у системы с ненулевым определителем только одно решение.

 
 
 
 Re: Проблемы с решением систем в Mathematica
Сообщение25.02.2017, 22:17 
Ага, это нормальное поведение Solve. Чтобы получить все решения, используйте или Reduce (только тут вместо списка уравнений надо их объединить конъюнкциями: уравн1 && уравн2 && …), или функции для решения линейных систем, заданных матрицами: LinearSolve[матрица, вектор] (снова выдаёт частное, но оно понадобится, чтобы получить общее, складывая с произвольными линейными комбинациями векторов из ядра) и NullSpace[матрица] (ядро).

 
 
 [ Сообщений: 17 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group