Форум: "Потрепаться";
Текущий архив: 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