- •Курсовой проект
- •Содержание
- •1. Теоретические основы разработки.
- •1.1. Описание предметной области
- •1.2. Анализ методов решения.
- •2.1.1. Основания для разработки
- •2.1.2. Назначение программы
- •2.1.3. Требования к программе
- •2.1.3.1. Требования к функциональным характеристикам
- •1.3. Обзор средств программирования.
- •1.4. Описание языка Паскаль.
- •2. Практическая часть
- •2.1. Постановка задачи
- •2.2. Описание схем
- •2.2.2 Описание схемы процедуры kvadr
- •2.2.3. Описание схемы процедуры koren
- •2.3. Текст программы
- •2 .4. Описание программы
- •2.4.1. Общие сведения
- •2.4.2. Функциональное назначение
- •2.4.3. Описание логической структуры
- •2.4.4. Используемые технические и программные средства
- •2.4.5. Вызов и загрузка
- •2.4.6. Входные и выходные данные
- •2.5. Руководство оператора
- •2.5.1. Назначение программы
- •2.5.2. Условия выполнения
- •2.5.3. Выполнение программы и сообщения оператору
- •2.6. Программа и методика испытаний
- •2.6.1. Объект испытаний
- •2.6.2. Цель испытаний
- •2.6.3. Требования к программе
- •2.6.3.1. Требования к функциональным характеристикам
- •2.6.3.2. Требования к информационной и программной совместимости
- •2.6.3.3. Требования к маркировке и упаковке
- •2.6.4. Требования к программной документации
- •2.6.5. Средства и порядок испытаний
- •2.6.6. Методы испытаний
- •2.6.6.1. Для проверки способности обеспечивать ввод исходных данных
- •2.6.6.2. Для проверки способности решать уравнение с точностью до 0.001 необходимо:
- •2.6.6.3. Для проверки способности выводить результат на экран, принтер или в файл необходимо:
- •2.6.6.3. Для проверки требований к информационной и программной совместимости необходимо:
- •2.7. Протокол испытаний
- •Заключение
- •Список литературы
- •Диалоговое окно для ввода данных
- •Окно с результатами работы программы
- •Сообщение о необходимости включить принтер
1. Теоретические основы разработки.
1.1. Описание предметной области
Кубическое уравнение - это уравнение вида ax3+bx2+cx+d = 0,где a,b,c,d - вещественные числа.
Решением кубического уравнения является такое число Xp, которое обращает уравнение в верное равенство. Согласно основной теореме алгебры, кубическое уравнение имеет три корня. Это могут быть либо три действительных числа, либо одно действительное и два комплексно-сопряженных числа.
Так уравнение X3-2X2-5X+6=0 имеет три различных действительных корня:
X1= 1 (13-2*12-5*1+6= 0)
X2= -2 ((-2) 3-2*(-2) 2-5*(-2)+6= 0)
X3= 3 (33-2*32-5*3+6=0);
Уравнение X3+3X2-4= 0 имеет также три действительных корня:
X1= X2= -2 ((-2)3 +3*(-2) 2-4=0)
X3= 1 (13+3*12-4=0);
А уравнение X3-1=0 имеет один действительный корень
X1= 1 (13-1= 0)
и два комплексно-сопряженных корня
X2= (-1+i√3)/2
и
X3= (-1-i√3)/2
Часто интерес представляют только действительные корни.
Изучение способов решения кубических уравнений входит в программу курса математики многих учебных заведений. При этом преподаватель, проверяя решения студентов, должен подставлять полученные значения корней в уравнение и проверять правильность результата, что является трудоемкой и утомительной операцией. Разрабатываемая программа позволит быстро получить правильные ответы и, таким образом, облегчит труд преподавателя. Кроме того, данная программа может использоваться при выполнении различных инженерных и экономических расчетов, где требуется решение кубических уравнений.
1.2. Анализ методов решения.
Решение кубических уравнений может быть реализовано следующими способами:
Ручным: этот способ является трудоемким и требует больших затрат времени.
Автоматизированным: исходные данные вводятся вручную, а результат рассчитывается программой на компьютере.
Автоматическим: исходные данные автоматически считываются с внешнего устройства (например, с файла на диске) и обрабатываются программой.
Автоматический способ может быть использован, если требуется решать сразу много кубических уравнений, в таком случае можно заранее подготовить файл исходных данных и затем использовать его в качестве входных данных программы. В нашем случае более целесообразно использовать автоматизированный способ, то есть вводить входные данные с клавиатуры.
При этом решать уравнения можно следующими методами:
1) Подбор первого корня X1 уравнения среди множителей свободного члена d; затем кубический многочлен делится на множитель X-X1, соответствующий этому корню, и решается получившееся квадратное уравнение.
Рассмотрим пример:
В уравнении X3+3X2-4=0 множителями свободного члена являются числа 1, -1, 2, 4, -4. Последовательно подставляя их в уравнение, выясним, что 1 является его корнем. Итак, X1 =1.
Выполним деление:
X3+3X2–4 │X-1
│─────
X3 –X2 │X2+4X+4
─────
4X2-4
4X2-4X
─────
4X-4
4X-4
────
0
Решая квадратное уравнение X2 +4X+4=0, получим X2= X3= -2.
Данный метод неудобен тем, что позволяет найти первый корень, только если он целый, а также тем, что не слишком легко запрограммировать деление кубического многочлена на одночлен.
2) Приведение уравнения к виду X3 = mX+n или X3 +mX= n или X3 +n= mX, где m и n - положительные числа, и решение получившегося уравнения по формулам Тартальи.
Рассмотрим пример:
Уравнение X3+3X2–4=0 можно преобразовать следующим образом:
X3+3X2-4=(X3+3X2*1+3X*1+1)-3X-1-4= (X+1)3 -3X-5 =0
(X+1)3 =3(X+1)+2
Сделав замену переменной t= X+1, получим t3 = 3t+2.
Согласно формуле Тартальи, корень t=U+3√V+3√V, где U и V - решение системы
U+V= n
UV= (m/3)3
Т. к. m= 3, а n= 2, получим
U+V= 2
UV= (3/3)3
откуда U= 1; V= 1
т. к. 3√1= 1 или -1/2+i√3/2 или –1/2-i√3/2 , то
t=1+1=2 или t=(-1/2+i√3/2)+(-1/2-i√3/2)= -1
Т. к. X= t-1, то получим корни 2-1= 1 и -1-1= -2
Данный метод неудобен тем, что требует работы с комплексными числами; кроме того, не слишком легко запрограммировать приведение уравнения к виду, пригодному для использования формул Тартальи.
3) Использование приближенных методов, таких как метод дихотомии, метод хорд, метод касательных, комбинированный метод хорд и касательных. Для использования любого из этих методов вначале необходимо отделить корни, то есть найти такой интервал (Xl, Xr), на котором имеется только один корень.
В качестве таких интервалов можно взять промежутки монотонности функции. Для их нахождения найдем корни производной кубического трехчлена:
пусть f(X)=aX3+bX2+cX+d
тогда f '(X)=3aX2+2bX+c
Решая уравнение f '(X)= 0, получим:
3aX2+2bX+c=0 (*)
Данное уравнение может:
Не иметь корней. В этом случае кубическая функция монотонно возрастает или убывает на всем множестве действительных чисел и, следовательно, имеет только один корень (рис. 1а).
Иметь один корень. В этом случае кубическая функция также монотонна на всей числовой оси и имеет только один корень (рис. 1б).
Иметь два корня. В этом случае кубическая функция имеет три интервала монотонности.
(-∞; Xl] ; [Xl; Xr] ; [Xr; +∞),
где Xl, Xr - решение уравнения (*), причем Xl< Xr (рис. 1в)
На каждом из этих интервалов может либо быть один корень (если функция принимает значения разных знаков на концах интервала), либо не быть корней.
Рассмотрим пример:
Для уравнения X3+3X2-4= 0
f '(X)=3X2+6X
Решая уравнение 3X2+6X=0, получим
3X(X+2)= 0
Xl= -2; Xr= 0
Рассмотрим интервал (-∞; -2]
при X→-∞ X3+3X2-4→-∞
при X= -2 (-2)3 +3*(-2)2 -4= 0
Следовательно, на этом интервале 1 корень X1= -2
Рассмотрим интервал [-2; 0]
при X= -2 (-2)3 +3(-2) 2-4= 0
при X= 0 03+3*02-4= -4
На этом интервале 1 корень X1= -2
Рассмотрим интервал [0; +∞)
при X= 0 03+3*02-4= -4
при X→∞ X3+3X2-4→∞
т. е. на концах интервала функция имеет значения разных знаков, следовательно, на этом интервале должен быть корень. Сузим интервал, взяв вместо +∞ число 10
(т.к. 103 +3*102 -4> 0) и будем искать корень методом дихотомии.
1шаг: Xl= 0; f(Xl)= -4
Xr= 10; f(Xr)= 1294
найдем X= (Xl+Xr)/2= 5
f(X)= 53 +3*52 -4= 194
т. к. f(X)> 0, то берем интервал [Xl, X] (рис. 2) Xr= X= 5
2 шаг: X= (Xl+Xr)/2= 2.5
f(X)= 2.53 +3*2.52 -4= 4.375
f(X)> 0 => Xr= X= 2.5
продолжая вычисления, можно найти корень с любой заданной точностью.
Данный метод требует большого количества вычислений, зато он прост в программировании, поэтому реализовывать будем именно его.
Таким образом, для решения кубического уравнения необходимо:
1) решить уравнение 3ax2 +2bx+c= 0 (*)
2) если оно не имеет корней или имеет один корень, выбрать в качестве интервала поиска интервал (-∞; +∞), где в качестве ∞ можно использовать максимальное представимое в ЭВМ число.
3) Если уравнение (*) имеет два корня, использовать три интервала поиска: (-∞, Xl] , [Xl, Xr] и [Xr, +∞),
где Xl, Xr - корни уравнения (*), причем Xl< Xr
4) На каждом интервале поиска необходимо:
4.1) Определить наличие корня. Корень есть, если на границах интервала функция f(x)= ax3+bx2+cx+d имеет разные знаки.
4.2) Если корень есть, найти его значение методом дихотомии по следующему алгоритму:
- вычислить X= (Xl+Xr)/2, где Xl и Xr - левая и правая границы интервала
- если f(X)-f(Xl)< 0, то принять Xr= X, иначе принять Xl= X
- повторять вычисления до тех пор, пока не получим
|f(X)|<eps где eps- заданная точность
