2014 dxdy logo

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

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





Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Проблемы с решением систем в Mathematica
Сообщение16.02.2017, 16:39 
Аватара пользователя


15/11/15
604
Москва
В чем проблема?
Код:
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 
Аватара пользователя


14/11/12
1078
Россия, Нижний Новгород
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 
Аватара пользователя


11/06/12
6828
Минск
SergeyGubanov, это всё мимо, не мешайтесь. Напиши хоть
Код:
x             ^2
(если вы это место имели в виду), всё посчитается. Это раз. Лишняя фигурная скобка и запятая в конце застопорят вычисления немедленно и выдадут ошибку. Это два.
Дело не в этом. Код
Код:
Solve[{x ^2 + y == 10, x == y^2 + 10}, {x, y}]
у меня на M11 выдаёт четыре комплексных корня. Вещественных нет, как подсказывает картинка:

Изображение

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

 Профиль  
                  
 
 Re: Проблемы с решением систем в Mathematica
Сообщение16.02.2017, 23:19 
Заслуженный участник
Аватара пользователя


27/04/09
19405
Уфа
А не могли ли x, y быть определены выше?

 Профиль  
                  
 
 Re: Проблемы с решением систем в Mathematica
Сообщение16.02.2017, 23:55 
Аватара пользователя


11/06/12
6828
Минск
Да запросто. Если это global scope, здесь любое приключиться может. Следите за переменными!

 Профиль  
                  
 
 Re: Проблемы с решением систем в Mathematica
Сообщение17.02.2017, 16:18 
Аватара пользователя


15/11/15
604
Москва
Эта проблема решена, но появилась другая: 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 
Аватара пользователя


29/05/11
205
Красноармейск, Донецкая обл.
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 
Аватара пользователя


11/06/12
6828
Минск
Rusit8800 в сообщении #1193386 писал(а):
плохо показывает корни
«Плохо показывает» значит «показывает не в радикалах»? Давно известно, что не каждое уравнение выше некоторой (вы вообще в курсе, какой именно?) степени может быть решено в радикалах. Есть функция ToRadicals, можно попробовать.
Rusit8800 в сообщении #1193386 писал(а):
С квадратным уравнением вроде норм
Да неужели.

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

 Профиль  
                  
 
 Re: Проблемы с решением систем в Mathematica
Сообщение18.02.2017, 15:11 
Аватара пользователя


15/11/15
604
Москва
Aritaborian в сообщении #1193401 писал(а):
«Плохо показывает» значит «показывает не в радикалах»?

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

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

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

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

 Профиль  
                  
 
 Re: Проблемы с решением систем в Mathematica
Сообщение18.02.2017, 16:36 
Заслуженный участник
Аватара пользователя


27/04/09
19405
Уфа
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 
Аватара пользователя


15/11/15
604
Москва
Код:
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 
Заслуженный участник
Аватара пользователя


27/04/09
19405
Уфа
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 
Аватара пользователя


15/11/15
604
Москва
Еще одна странная вещь:
Код:
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 
Заслуженный участник


25/02/11
1457
Другие это какие? По умолчанию математика рассматривает случай общего положения. А у системы с ненулевым определителем только одно решение.

 Профиль  
                  
 
 Re: Проблемы с решением систем в Mathematica
Сообщение25.02.2017, 22:17 
Заслуженный участник
Аватара пользователя


27/04/09
19405
Уфа
Ага, это нормальное поведение Solve. Чтобы получить все решения, используйте или Reduce (только тут вместо списка уравнений надо их объединить конъюнкциями: уравн1 && уравн2 && …), или функции для решения линейных систем, заданных матрицами: LinearSolve[матрица, вектор] (снова выдаёт частное, но оно понадобится, чтобы получить общее, складывая с произвольными линейными комбинациями векторов из ядра) и NullSpace[матрица] (ядро).

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.

Модераторы: Toucan, maxal, Karan, PAV, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group