2014 dxdy logo

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

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




 
 Solve в MATLAB
Сообщение15.01.2018, 00:36 
Доброго времени суток, господа. Есть проблема с решением контрольной работы по матанализу в MATLAB, а именно с использованием функции solve.
Дано задание:
"Решить неравенство $x^3+3x^2+3>0$ получить точные и приближенные корни".
Суть проблемы в том, что в лабораторном практикуме - единственном, подразумеваемом преподом, источнике знаний (я учусь на ДО), вызов функции выглядит как:

Код:
>> syms x
>> maple('solve','{abs(x^2-3)>3}',x)
ans =
[{x<-6^(1/2)}, {6^(1/2)<x}]


На что мой Матлаб (R2013b) резонно заявляет: "не знаю ни каких маплов". С этим разобрался, пакет встроен, все такое.
Но вызов
Код:
solve(abs(x^2-3)>3)

вместо ожидаемых:
Код:
ans =
[{x<-6^(1/2)}, {6^(1/2)<x}]

как в методичке, выдает следующее:
Код:
ans =
  i
-i

Но перейдем к самому заданию контрольной работы
вызов
Код:
>> solve(x^3+3*x^2+3>0,x)

Приводит к следующему результату:
Код:
ans =
solve([0.0 < x^3 + 3.0*x^2 + 3.0], [x])


если использовать дополнительный параметр 'ReturnConditions' true можно увидеть следующее:
Код:
>> solve(x^3+3*x^2+3>0,x,'ReturnConditions',true)
Warning: 1 equations in 3 variables. New variables might be
introduced.
> In C:\MATLAB\R2013b\toolbox\symbolic\symbolic\symengine.p>symengine at 56
  In mupadengine.mupadengine>mupadengine.evalin at 97
  In mupadengine.mupadengine>mupadengine.feval at 150
  In solve at 170
Warning: Explicit solution could not be found.
> In solve at 179
ans =
[ empty sym ]
>>


Товарищи, я хз в какую сторону воевать D: Помогите кто чем может

 
 
 
 Re: Solve в MATLAB
Сообщение15.01.2018, 11:28 
Аватара пользователя
В MATLAB имеются две функции solve. Обе они принадлежат пакету Symbolic Math Toolbox, но одна из них находится в разделе Mathematics, а другая в разделе MuPAD. Когда вы обращаетесь к функции solve из Command Window, вы запускаете функцию solve из раздела Mathematics. Насколько я знаю, неравенства эта функция не решает.

Вам нужна функция solve из MuPAD, системы компьютерной алгебры, находящейся в разделе MuPAD. Есть разные способы обратиться к этой функции. Например, сначала можно перейти в MuPAD Notebook, введя для этого mupad в Command Window. В открывшемся окне если вы введете
Код:
solve(abs(x^2-3)>3,x,Real)
то получите верный ответ $(-\infty,-\sqrt{6})\cup(\sqrt{6},+\infty)$. Свою задачу можете решить аналогично.

Обратиться к функциям MuPAD можно и из Command Window. Например вот так:
Код:
evalin(symengine,'solve(abs(x^2-3)>3,x,Real)')

Кроме того, начиная с некоторого момента разработчики MATLAB стали рекомендовать использовать MATLAB Live Scripts вместо MuPAD Notebook. Для этого нужно открыть New --> Live Script и ввести тот самый код с evalin, который я привел выше.

 
 
 
 Re: Solve в MATLAB
Сообщение15.01.2018, 17:03 
ShMaxG в сообщении #1284207 писал(а):
В MATLAB имеются две функции solve. Обе они принадлежат пакету Symbolic Math Toolbox, но одна из них находится в разделе Mathematics, а другая в разделе MuPAD. Когда вы обращаетесь к функции solve из Command Window, вы запускаете функцию solve из раздела Mathematics. Насколько я знаю, неравенства эта функция не решает.

Вам нужна функция solve из MuPAD, системы компьютерной алгебры, находящейся в разделе MuPAD. Есть разные способы обратиться к этой функции. Например, сначала можно перейти в MuPAD Notebook, введя для этого mupad в Command Window. В открывшемся окне если вы введете
Код:
solve(abs(x^2-3)>3,x,Real)
то получите верный ответ $(-\infty,-\sqrt{6})\cup(\sqrt{6},+\infty)$. Свою задачу можете решить аналогично.

Обратиться к функциям MuPAD можно и из Command Window. Например вот так:
Код:
evalin(symengine,'solve(abs(x^2-3)>3,x,Real)')

Кроме того, начиная с некоторого момента разработчики MATLAB стали рекомендовать использовать MATLAB Live Scripts вместо MuPAD Notebook. Для этого нужно открыть New --> Live Script и ввести тот самый код с evalin, который я привел выше.



Спасибо огромное, сенсей! Я вроде пробовал через мюпад делать, но видать не так аргументы раскинул. Все вышло, со всем работает. Осталось, что бы препод оценил такой манёвр

 
 
 [ Сообщений: 3 ] 


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