2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Solve в MATLAB
Сообщение15.01.2018, 00:36 


15/01/18
2
Доброго времени суток, господа. Есть проблема с решением контрольной работы по матанализу в 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 
Заслуженный участник
Аватара пользователя


11/04/08
2737
Физтех
В 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 


15/01/18
2
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 ] 

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



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

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


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

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