Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как упростить формулу 
:(
    Опции темы
Sunbeam
Дата 3.6.2005, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 14.5.2005

Репутация: нет
Всего: нет



Как можно упростить формулу?

Например, есть строка ((1+x)+0).
Нужно убрать лишние скобки и посчитать значение. В итоге печатает 1+x.

Или x^(2-1). Печатает x.
PM MAIL   Вверх
Амортизатор
Дата 3.6.2005, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 17.4.2005
Где: в Караганде

Репутация: 1
Всего: 8



Тебе нужно написать ядро системы компьютерной математики? Обратись к разрабам Maple и Mathematica, только они и смогут тебе помочь... smile smile smile


--------------------
Поехали!
PM MAIL   Вверх
sergejzr
Дата 3.6.2005, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 11
Всего: 360



Это действительно не есть тривиально. Ведь часто могут существовать множества решения одной проблемы.
Например, что оптимальнее, 1+х или х+1?
smile
Но мелочи можно.
Например в твоём варианте можно собрать дерево.
Каждый "лист" дерева сделай обьектом mathObject .
Так же снабди каждый лист виртальной функцией simplify, которая будет возвращать упрощённый обьект.

например

Код

class sum extends mathObject implements simplifier
{
/**
*Свойствами суммы являются непосредственно оба слагаемых.
*/
mathObject  summand1;
mathObject  summand2;
/**
*Функция выполнения упрощения
*/
mathObject  simplify()
{
if(summand1==0) return summand2; //первое слагаемое = =0, можем выкинуть
if(summand2==0) return summand1;// аналогично со вторым
return this; //не упрощается
}



Вот само дерево:
skobka(sum(skobka(sum(1,x)),0))

Потом упрощать начиная "снаружи"

1: скобка не нужна, если она "корень" дерева


2: sum(something,0)=sumething;

3: 1+x не упрощается
получилось: (1+x)
заходим в цикл ещё раз
1: скобка не нужна, если она "корень" дерева

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

Кстати при наличии дерева очень легко реализовать и другие функции. Например берём производную "виртуальной" функцией derrive();


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Амортизатор
Дата 4.6.2005, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 17.4.2005
Где: в Караганде

Репутация: 1
Всего: 8



Очень интересно. А где можно почитать про энти самые деревья?
А вообще построение систем СКМ - сложнейшая проблема современности.

Это сообщение отредактировал(а) Амортизатор - 4.6.2005, 01:04


--------------------
Поехали!
PM MAIL   Вверх
cardinal
Дата 4.6.2005, 01:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 15
Всего: 99



Цитата
Обратись к разрабам Maple и Mathematica, только они и смогут тебе помочь...

Чтобы ты был в курсе: все что человеку надо проходят на первом курсе информатики в универе (в Германии)...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Амортизатор
Дата 4.6.2005, 01:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 17.4.2005
Где: в Караганде

Репутация: 1
Всего: 8



Но это была шутка. Я хотел лишь сказать, что это серьезная проблема.

З Ы Может ему многого и не нужно, но на первом курсе где-бы то не было невозможно получить знаний, достаточных для построения простейшей СКМ. У меня знакомый учится в МГУ на ВМК, так вот, ДАЖЕ ТАМ они серъезно рассматривать СКМ начали только на 3-ьем курсе (надеюсь ты не будешь ставить под сомнение несомненное преимущество московской школы символьной математики).


--------------------
Поехали!
PM MAIL   Вверх
cardinal
Дата 4.6.2005, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 15
Всего: 99



Да от его вопроса до твоих СКМ помоему очень далеко... smile Тут помоему все заканчивается на степени...
Цитата
надеюсь ты не будешь ставить под сомнение несомненное преимущество московской школы символьной математики

Перед чем? smile


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Pakshin A. S.
Дата 4.6.2005, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 5
Всего: 61



На всякий случай: разборки лучше не устраивать... smile
Давайте жить дружно... smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0482 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.