Русскоязычный форум закрыт из-за отсутствия активности (доступен только для чтения).
Пожалуйста, пользуйтесь англоязычной его версией. Приносим извинения за неудобства
Добро пожаловать, Гость! Чтобы использовать все возможности Вход. Новые регистрации запрещены.

Уведомление

Icon
Error

Вход


Опции
К последнему сообщению К первому непрочитанному
Offline Ralf  
#1 Оставлено : 16 декабря 2008 г. 21:25:29(UTC)
Ralf

Статус: Newbie

Группы: Registered
Зарегистрирован: 16.12.2008(UTC)
Сообщений: 2
Откуда: SPb

Каким образом можно объявить символьную переменную и работать далее с нее, наподобии команды syms в Matlab'e?

Нпример мне надо посчитать выражение C*((s*I-A)^(-1))*B, где A, B, C, I - матрицы, s - это s.

Wanna join the discussion?! Login to your Форум проекта SMath forum account. Новые регистрации запрещены.

Offline smath  
#2 Оставлено : 16 декабря 2008 г. 23:43:42(UTC)
smath


Статус: Administration

Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Мужчина
Российская Федерация

Сказал «Спасибо»: 640 раз
Поблагодарили: 262 раз в 102 постах
Объявлять символьные переменные специально не нужно. Все переменные программы имеют одинаковый статус. Как же программа отличает символьные действия от численных? Для этого предусмотрены два разных оператора вычисления выражений:

  • Численный - по нажатию на "=" на клавиатуре или соответствующую иконку на панеле интструментов "="

    В данном режиме, если при вычислении программа обнаружит в выражении переменную, не имеющую явно заданного значения, она сообщит об этом как об ошибке вычисления, а само вычисление прекратит.

  • Символьный - по нажатию на "Ctrl+." на клавиатуре или соответствующую иконку на панеле интструментов "->"

    В символьном режиме программа будет работать с переменной в выражении не выдавая никаких ошибок. Она будет лишь стараться упростить итоговое выражение.

Ваш пример решается довольно просто: объявляйте все параметры, которые имеют значения - автоматически, всё, что не указано будет считаться переменными. После чего записываете выражение C*((s*I-A)^{-1})*B и жмёте "Символьное вычисление".

Напоследок хочется отметить, что работа над символьным упрощением ведётся и, в данный момент, результаты вычислений не всегда могут быть "красивыми".

Отредактировано пользователем 17 декабря 2008 г. 4:47:38(UTC)  | Причина: Не указана

Offline Ralf  
#3 Оставлено : 17 декабря 2008 г. 15:10:31(UTC)
Ralf

Статус: Newbie

Группы: Registered
Зарегистрирован: 16.12.2008(UTC)
Сообщений: 2
Откуда: SPb

В версии 0.70 не работало Good. Сейчас взял 0.73 - все прекрасно, большое спасибо за столь полезный продукт Good.
Offline smath  
#4 Оставлено : 17 декабря 2008 г. 17:00:39(UTC)
smath


Статус: Administration

Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Мужчина
Российская Федерация

Сказал «Спасибо»: 640 раз
Поблагодарили: 262 раз в 102 постах
Не за что.
Последние два месяца программа живёт в постоянном прогрессе, т.ч. есть некое неудобство с большим количеством выпущенных версий. В этом месяце по плану будет ещё одна промежуточная бета (на днях) и за неделю до конца декабря, или около того, будет долгожданный релиз стабильной сборки SMath Studio (в том числе и под Linux). После этого события будет взят небольшой таймаут, во время которого мы начнём работать над распространением программы за границей. Так что, по всей видимости будущая стабильная 0.75 будет актуальна, на протяжении месяца или более того.
Offline smath  
#5 Оставлено : 20 декабря 2008 г. 23:31:23(UTC)
smath


Статус: Administration

Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Мужчина
Российская Федерация

Сказал «Спасибо»: 640 раз
Поблагодарили: 262 раз в 102 постах
Всвязи с тем, что в последней версии программы (0.74) была исправлена досадная ошибка символьной работы с матрицами предыдущих версий, с удовольствием продемонстрирую рабочий пример по Вашему вопросу демонстрирующий самый, на мой взгляд, рациональный способ решения подобных задач. Надеюсь, кому-нибодь он пригодиться.


(скачать файл сохранения)
Offline ARGON  
#6 Оставлено : 21 апреля 2012 г. 14:57:39(UTC)
ARGON

Статус: Newbie

Группы: Registered
Зарегистрирован: 21.04.2012(UTC)
Сообщений: 4
Откуда: Иваново

Здравствуйте, Андрей! Огромное спасибо за проделанную работу!
У меня есть один вопрос... Скажите, пожалуйста, можно ли сделать так, чтобы программа при символьном вычислении "раскрывала скобки"?
( чтобы ответ был, например, не в виде (x+1)*(x+2) , а в виде x^2+3*x+2 )
Заранее спасибо!
Offline smath  
#7 Оставлено : 22 апреля 2012 г. 0:52:58(UTC)
smath


Статус: Administration

Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Мужчина
Российская Федерация

Сказал «Спасибо»: 640 раз
Поблагодарили: 262 раз в 102 постах
ARGON, здравствуйте.

На данный момент нельзя указать вид символьного ответа. Подумаю над тем, как это можно реализовать.

С уважением, Андрей Ивашов.
Offline ARGON  
#8 Оставлено : 22 апреля 2012 г. 9:20:35(UTC)
ARGON

Статус: Newbie

Группы: Registered
Зарегистрирован: 21.04.2012(UTC)
Сообщений: 4
Откуда: Иваново

Большое спасибо за скорый ответ!
Если это как-нибудь сможет помочь, то в MathCad есть функция expand, которая раскрывает все скобки
Пример: (a*x + b )(c*x + d) expand, x -> a*c*x^2 + a*d*x + b*c*x + b*d
и функция collect, которая может складывать коэффициенты при одинаковых степенях:
Пример: a*c*x^2 + a*d*x + b*c*x + b*d collect, x -> a*c*x^2 + (a*d + b*c)*x + b*d
Offline ARGON  
#9 Оставлено : 5 июля 2012 г. 23:05:45(UTC)
ARGON

Статус: Newbie

Группы: Registered
Зарегистрирован: 21.04.2012(UTC)
Сообщений: 4
Откуда: Иваново

Здравствуйте, Андрей. Скажите, пожалуйста, есть ли какой-либо прогресс в вопросе, затронутом мной в #6.
Дело в том, что по моему скромному и возможно необъективному мнению, преимуществом вашего проекта может стать именно возможность работы с символьными переменными. Что касается численной подстановки, то существуют такие проекты как MatLab или Scilab, и с ними тягаться на мой взгляд очень непросто. Именно в области символьного исчисления эти программы проигрывают, они не позволяют, например, делать аналитический вывод формул, что иногда очень важно.
Заранее спасибо!
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.