Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.03.27;
Скачать: [xml.tar.bz2];

Вниз

Выразить переменную из выражения.   Найти похожие ветки 

 
fool   (2003-03-10 13:40) [0]

Буду благодарен всем, кто поможет информацией по следующему вопросу:
Необходим алгоритм, позволяющий из произвольного выражения (операции только +,-,*,/), выражать требуемую переменную. Например, есть некое выражение, скажем (А+В)/Д=С*Р, алгоритм должен позволять выражать любую переменную через остальные.

Понимаю, что алгоритм в чистом виде врядтли у кого найдеться, подойдут ссылки по теме...


 
DiamondShark   (2003-03-10 16:14) [1]

В общем виде не решается. Пример:
A*X + B = C/X, выразить X.


 
Юрий Зотов   (2003-03-11 00:00) [2]

> DiamondShark © (10.03.03 16:14)

Элементарное квадратное уравнение с ОДЗ X<>0. То есть:
X1=(-B-Sqrt(B*B+4*A*C))/(2*A), X1<>0
X2=(-B+Sqrt(B*B+4*A*C))/(2*A), X2<>0

Вообще, если в уравнении встречаются только арифметические операции (то есть, оно не трансцендентное), то после избавления от всех знаменателей (последовательным домножением на них), переноса всех членов в левую часть, раскрытия всех скобок и группировки членов с одинаковой степенью неизвестного оно приводится к полиному. О полиномах же давно известно - если степень не выше 3-ей, то решение в радикалах существует. Если же выше, то в общем виде не существует, а в частных случаях - возможно.

То есть, предлагается на обсуждение такой алгоритм:

1. Все переносим в левую часть (в правой остается ноль).
2. Поочередно домножаем на каждый знаменатель (если надо, то при этом формируем ОДЗ).
3. Раскрываем все скобки.
4. Группируем члены с одинаковой степенью неизвестного и располагаем их в порядке убывания степени (то есть, приводим к каноническому полиному).
5. Если приходим к одному из трех случаев:
а). A*X + B = 0
б). A*X^2 + B*X + C = 0
в). A*X^3 + B*X^2 + C*X + D = 0
то используем соответствующую готовую формулу. В других случаях общего решения не существует.

Рассмотрим на примере (А+В)/D=С*B и выразим, например, B.
1. (A+B)/D-C*B=0
2. (A+B)-C*B*D=0, D<>0
3. A+B-C*B*D=0
4. (1-C*D)*B+A=0
5. Имеем случай а). Подставляем в готовую формулу наши коэффициенты и получаем:
B=(-A)/(1-C*D)

Главное, что здесь потребуется написать - это парсер арифметических выражений. Задача для курсового проекта.

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




 
Думкин   (2003-03-11 05:09) [3]


> Юрий Зотов © (11.03.03 00:00)
> - если степень не выше 3-ей,

Не выше 4-ой. То есть уже уравнение 5-ой степени не имеет общего решения в радикалах, и очень часто(в подавляющем большинстве) и не общего тоже.
В остальном - да, так видимо, и надо сделать.


 
fool   (2003-03-11 13:11) [4]

Юрий Зотов © (11.03.03 00:00)
Спасибо, вполне подходит. Выше второй степени у меня случаев не будет...

Что то я старею, такие вещи забывать стал :(



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2003.03.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.012 c
3-87791
bpv
2003-03-05 10:39
2003.03.27
драйвера доступа к базе данных


1-87952
An
2003-03-17 11:12
2003.03.27
Как таскать форму за клиентскую часть?


14-88168
Danger
2003-03-10 21:41
2003.03.27
Можно ли заставить написанное на Дельфи работать как скрипт??


8-88078
Yasha
2002-12-19 18:04
2003.03.27
печать графики


3-87873
Smirov
2003-03-07 07:59
2003.03.27
Перенос данных из удаленной базы в Excel





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский