Скачиваний:
36
Добавлен:
01.05.2014
Размер:
711.17 Кб
Скачать

Глава 22 Решатель уравнений

Естественной областью применения языка Пролог являются символьные вычисления. Например, программа на Прологе для символьного дифференцирования (типичная задача символьных вычислений) представляет собой, как показано в программе 3.29.непосредственную запись в определенном синтаксисе правил, дифференцирования.

В настоящей главе рассматривается программа для решения уравнений, представленных в символьной форме. Она является упрощенным, вариантом комплекса программ PRESS (Prolg Equation Solving System),разработанной группой математических исследований факультета искусственного интеллекта Эдинбургского университета. Программный комплекс PRESSрешает уравнения на уровне учащихся старших классов школ с математической ориентацией.

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

22.1. Обзор методов решения уравнений

Задача решения уравнения может быть описана синтаксически. Дано уравнение Lhs = Rhsс неизвестным X.Преобразуем это уравнение в эквивалентное уравнениеХ = Rhs1,правая часть которого Rhs1не содержит X.Полученное уравнение является решением. Два уравнения эквивалентны, если одно преобразуется в другое посредством конечного числа применений аксиом и правил алгебры.

Хорошие учащиеся не должны решать уравнения путем слепого применения аксиом алгебры. Вместо этого их учат развивать и использовать различные методы и стратегии решения, В нашем решателе уравнений, моделирующем такое поведение, соответственно реализован набор методов решения уравнений. Каждый метод преобразует уравнение посредством применения алгебраических тождеств, выраженных в виде правил преобразования. Эти методы принимают разнообразные формы. Они могут быть набором правил для решения уравнения определенного класса или алгоритмами, реализующими процедуру решения.

(1) cos(x)-(1-2* sin(x)) = 0,

(2) х2- 3-х+2=0,

(3) 2-5*2+ 16 =0.

Рис. 22.1.Примеры уравнений.

Абстрактно говоря, использование любого метода связано с проверкой условия его применимости и собственно применением.

Типы уравнений, которые может решать наша программа, показаны тремя примерами, представленными на рис. 22.1.Они состоят из алгебраических функций одного неизвестного (используются операции +, —, *, /и возведение в целую степень), а также из тригонометрических и показательных функций. Во всех трех уравненияххнеизвестное. Покажем коротко, как решается каждое из этих уравнений.

Первый шаг в решении уравнения (1),представленного на рис. 22.1,состоит в факторизации. Решение задачи сводится к решению двух уравнений: cos (х) = 0и1-2sin(x) = 0.Решение любого из этих уравнений является решением исходного уравнения.

Оба уравнения, cos(х) = 0и 1-2sin(x)=0.решаются путем разрешения уравнения относительноx. Это возможно, поскольку л- встречается в каждом уравнении по одному разу.

Решением уравнения cos(x)=0являетсях=arccos(х).Уравнение 7-2sin(х)=0 решается следующим образом:

1-2sin(х)=0,

2sin(x)=1,

sin(x)=1/2,

х=arcsin(l/2).

Вообще, уравнения с единственным вхождением переменного могут быть решены алгоритмическим методом, называемымметодом изоляции.В этом методе к обеим частям уравнения повторно применяется соответствующая обратная функция до тех пор, пока единственное вхождение переменного не «изолируется» как левая часть уравнения. Решение методом изоляции уравнения 1-2sin(x)=0показано в виде представленной выше последовательности уравнений.

Уравнение х2 Зх + 2 = 0является квадратным уравнением с одним неизвестнымх.Все мы учили в школе формулу для решения квадратных уравнений. Сначала вычисляется дискриминантb2 -4ас.Для данного уравнения он равен 1.Уравнение имеет два решения:х = (-(-3) +)/2=2их = (-(-3)-)/2=7.

Ключом к решению уравнения (3)рис. 22.1является распознавание того, что уравнение в действительности является квадратным уравнением относительно 2x. Уравнение2-5*2+ 16 =0 может быть переписано как(2х)2 — 5-2. •2х + 16 = 0.Это уравнение, решаемое относительно2х,дает два решения в форме2х=Rhs,где Rhsне содержитx-. Каждое из этих уравнений решается относительноx, тем самым получаем решения уравнения (3).

Система PRESSтестировалась на решении уравнений, предлагаемых на экзаменах уровняАпо математике в Великобритании. По-видимому, экзаменаторы любят предлагать для решения уравнения, подобные уравнению (3).Ученик, манипулируя логарифмическими, экспоненциальными и другими трансцендентными функциями, приводит их к форме, допускающей решение уравнения как алгебраического. Для решения уравнений этого типа развит метод, названный методомгомогенизации.

Цель гомогенизации состоит в преобразовании уравнения в полином, содержащий неизвестное в некотором терме. (В учебных целях мы упростим более общий метод гомогенизации, реализованный в системе PRESS).Метод состоит из четырех шагов, которые проиллюстрируем на примере уравнения (3).Сначала производятся разбор уравнения и образование множества из экземпляров всех максимальных неполиномиальных термов, содержащих неизвестное. Такое множество называетсямножеством представителей.В нашем примере - это множество {22x,2x+1}.Второй шаг заключается в отыскании приведенного терма. Результатом гомогенизации является полиномиальное уравнение относительно приведенного терма. Приведенным термом в рассматриваемом примере будет2х.Третий шаг гомогенизации состоит в нахождении правил преобразования, которые выражают каждый элемент множества представителей в виде полинома от приведенного терма. Нахождение такого множества гарантирует, что гомогенизация будет успешной. В нашем примере правила преобразования - это 22X ==(2х)2и 2(x+l} = 2-2х.Наконец, правила преобразования используются для получения полиномиального уравнения.

Завершим этот раздел кратким описанием решателя уравнений. Основным предикатом является solve_equation (Equation, X, Solution).Это отношение истинно, если Solution-решение уравнения Equationс неизвестным X.Программа 22.1 представляет собой полную программу решателя уравнений.

Программа 22.1содержит четыре предложения с заголовком solve_equation,по одному предложению для каждого из четырех методов, необходимых при решении уравнений рис. 22.1.В общем случае требуется по одному предложению для каждого метода решения уравнения, В полном комплексе PRESSреализовано больше методов решения уравнений.

Наш решатель уравнений не обладает рядом желательных свойств. Он не способен упрощать выражения, здесь отсутствует арифметика с плавающей запятой, не регистрируется последнее решенное уравнение, нет сервисных средств и т. д. Многими из этих возможностей обладает комплекс PRESS,о чем будет сказано в конце главы в разделе «Дополнительные сведения».

Соседние файлы в папке prolog14_end