Курсовая: Нахождение всех действительных корней алгебраического многочлена методом деления отрезка пополам (бисекции) и методом хорд и касательных с указанной точностью и учетом возможной кратности корней - текст курсовой. Скачать бесплатно.
Банк рефератов, курсовых и дипломных работ. Много и бесплатно. # | Правила оформления работ | Добавить в избранное
 
 
   
Меню Меню Меню Меню Меню
   
Napishem.com Napishem.com Napishem.com

Курсовая

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

Банк рефератов / Математика

Рубрики  Рубрики реферат банка

закрыть
Категория: Курсовая работа
Язык курсовой: Русский
Дата добавления:   
 
Скачать
Microsoft Word, 3648 kb, скачать бесплатно
Заказать
Узнать стоимость написания уникальной курсовой работы

Узнайте стоимость написания уникальной работы

Федеральная Авиационная Служба России МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХ НИЧЕСКИЙ УНИВЕРСИТЕТ ГРАЖДАНСКОЙ АВИАЦИИ Кафедра прикладной математики Курсовая работа защищена с оценкой _________________. .__________________________. Руководитель доцент , к.т.н . Лукина О . П. .__________________________. подпись КУРСОВАЯ РАБОТА по теме НАХОЖДЕНИЕ ВСЕХ ДЕЙСТВИТЕЛЬНЫХ КОРНЕЙ АЛГЕБРАИЧЕСКОГО МНОГОЧЛЕНА МЕТОДОМ ДЕЛЕНИЯ ОТРЕЗКА ПОПОЛАМ (БИСЕКЦИИ ) И МЕТОДОМ ХОРД И КАСАТЕЛЬНЫХ С УКАЗАННОЙ ТОЧНОСТЬЮ И УЧЕТОМ ВОЗМОЖНОЙ КРАТНОСТИ КОРНЕЙ (Пояснительная записка к курсовой работе п о дисциплине «Численные методы» ) Работу выполнили студенты 5-го курса специальности 01.02 Козлов Сергей Александрович /Козлов С.А ./------------------------. Семенчихин Владимир Владимирович /Семенчихин В. В ./------------------------. 28. X /1999 года. МОСКВА - 1999 АННОТАЦИЯ В данной курсовой работе рассмотрен принцип нахождения корней алгебраического многочлена следующими численными методами : метод бисекции , метод хорд и касательных , метод разлож ения на множители с учетом определяемой точности и проверки кратности корней , а также в среде Visual Basic for Applications 6.0 была разработана программа , реал и зующая этот поиск и проверку . В пояснительной записке приводится оп и сание как самих численных м етодов , так и программы , включая примеры и «экранные копии». 1. ТЕХНИЧЕСКОЕ ЗАДАНИЕ Разработать программу для вычисления корней алгебраического многочлена следующими численными методами : методом половинного деления , методом хорд и кас ательных , методом разложения на множители , а также обеспечить вычисление значений корней с указываемой точностью и проверку кратности корней . Среда разработки программы – произвол ь ная. 2. ПРЕДМЕТНАЯ ОБЛАСТЬ 2.1. Описание численных ме тодов Численные методы позволяют найти решения определенных задач , заранее зная , что полученные результаты будут вычислены с определенной погрешностью , поэтому для многих численных методов необходимо зар а нее знать «уровень точности» , которому будет соответ ствовать полученное решение. В этой связи задача нахождения корней многочлена вида (1) F(x)=a 0 +a 1 x+a 2 x 2 +… +a n x n (1) представляет особый интерес , т.к . формулы нахождения корней даже к у бического уравнения достаточно сложны , а если необходимо отыскать ко рни многочлена , степень которого равна , например , 5 – то без помощи численных методов не обойтись , тем боле , что вероятность наличия у т а кого многочлена натуральных (или целых , или точных корней с с «коро т кой» дробной частью ) довольно мала , а формул для на хождения корней уравнения степени , превышающей 4, не существует. Этот факт был доказан известными математиками Абелеи и Галуа. Де-факто все дал ь нейшие операции будут сводиться лишь к уточнению корней , интервалы которых приблизительно известны заранее . П роще всего эти «приблиз и тельные» корни находить , используя графические методы. Для нахождения корней многочлена существует несколько числе н ных методов , но мы остановимся на тех из них : методе итераций , методе хорд и касательных и методе половинного деления . 2.2.1. Метод хорд и касательных (комбинированный ) Данный метод основан на построении схематического графика функции , определении интервалов его пересечения с осью абсцисс и п о следующим «сжатием» этого интервала при помощи строимых хорд и к а сательных к графику этой функции . Надо отметить , что существуют также отдельно метод хорд (дает значение корня с недостатком ) и метод касательных (с избытком ). Однако преимущество комбинированного метода заключается в «двустороннем сжатии» рассматриваемого отрезка. Рассмотрим следующий случай : - дана функция F ( x ) и построен ее график ; - определена допустимая погрешность Q - на основании графика определен отрезок [ a , b ], на котром график функции пе ресекает ось абсцисс , следовательно , на этом отрезке рис .1 - существует корень рассматриваемого многочлена . (обозначим его через A ) Дальнейший алгоритм сводится к следующим действиям : 1. строим касательную к графику функции в точке F ( b ) 2. в ычисляем координату х пересечения касательной с осью абсцисс по формуле (3) и обозначаем ее через b ’ 3. строим к графику функции хорду , проходящую через точки F ( a ) и F ( b ). 4. Вычисляем точку пересечения хорды с осью абсцисс по формуле (2) и обозначаем ее через a '. a ’ = a - D a , где (2) b ’ = b - D b , где (3) Таким образом мы получаем новый отрезок [ a ’ , b ’ ], котроый (по определениям хорды и касательной ) по-прежнему содержи решение уравнения A . 5. Теперь принимаем отрезок [ a ’ , b ’ ] за новый отрезок [ a , b ] и повт о ряем шаги 1-4 до тех пор , пока разность F ( b )- F ( a ) не станет мен ь ше первоначально за ложенной погрешности Q . Отметим также , что после этого рекомендуется в качестве искомого решения взять среднее арифметическое F ( a ) и F ( b ). Замечание к методу хорд и касательных. В рассмотренном случае производная F ’ ( x )>0, т.е . график «выпуклый» и b > a . При работе с каждым отдельным случаем необходимо находить производные функции первого и второго порядков и , сообразуясь с ее знаком , определять a и b . Возможны четыре случая : y y F ( x ) F ( x ) x x а ) б ) y y F ( x ) F ( x ) x x в ) г ) а ) F ’ ( x ) < 0 F ’ ’ ( x ) > 0 б ) F ’ ( x ) > 0 F ’ ’ ( x ) > 0 в ) F ’ ( x ) < 0 F ’ ’ ( x ) < 0 г ) F ’ ( x ) > 0 F ’ ’ ( x ) < 0 Способ хорд Способ касательных F ’ ( x ) F ’ ’ ( x ) > 0 С недостатком С избытком F ’ (x)F ’ ’ (x) < 0 С ибытком С недостатком Таким образом , если хорда (касательная ) дает значение корня с и з бытком , то этот корень берется с качестве новой правой границы , а если с недостатком – то левой . В обоих случа ях точный корень лежит между то ч ками пересечения хорды и касательной с осью абсцисс. Замечание 2 к методу хорд и касательных. Так как для решения поставленной задачи требуется отыскание производной функции F ( x ), м е тод хорд и касательных достаточно трудно реализуем на программном уровне , т.к . правила вычисления производных в общем виде довольно гр о моздки для «понимания» ЭВМ ; при непосредственном указании прои з водной для каждой степени многочлена память компьютера серьезно з а гружается , что очень замедляет работу , а задание функции и , соотве т ственно , ее производной непосредственно в программном коде – недоп у стимо . Однако , используя данный метод , сходимость интервала к корню происходит наиболее быстро , особенно если совместить метод хорд и к а сательных с метод ом бисекции , т.к . середина нового отрезка зачастую дает вполне удовлетворительное решение. 2.2.2. Метод итераций Пятый шаг алгоритма хорд и касательных определял возврат к пе р вому шагу и последующую цикличность хода , т.е . метод хорд и касател ь ны х являлся итерационным . Другой метод , также основанный на повторах так и был назван – «метод итераций» . Суть его заключается в следующем : - дана функция F ( x ); - определена допустимая погрешность Q ; - определен некоторый интервал [ a , b ], точно содерж ащий реш е ние уравнения. - Определено некоторое число z , принадлежащее [ a , b ] (назовем z «нулевым приближением» ) Для получения следующего приближения подставим в формулу (1) вместо X Z , получим : x 1 = F ( z ) (4) и , продолжая аналогично, x 2 =F(x 1 ) x 3 =F(x 2 ) (5) … x n =F(x n-1 ) Таким образом, получаем некоторую последовательность , и , если ее предел (6) limx n = A , n ® (6) то А является искомым корнем. Данный метод является исключительно аналитическим , что упрощ а ет его машинную реализа цию , однако содержит следующие недостатки : - необходимость выбора нулевого приближения (ведь то , что инт у итивно для человека , для ЭВМ может стать довольно сложной з а дачей ) - наконец , полученная последовательность просто может не сх о диться , и тогда решени е найдено не будет . Эти контраргументы стали основанием для отклонения метода итераций при выборе алгоритмизируемого метода. 2.2.3. Метод половинного деления (метод бисекции ) рис .2 Метод половинного деления (известный еще и как «метод деления отрезка пополам» ) также является рекурсивным , т.е . предусматривает п о вторение с учетом полученных результатов. Суть метода половинного деления заключается в следующем : - дана функция F ( x ); - определена допустимая погрешность Q ; - определен некоторый интервал [ a , b ], точно содержащий реш е ние уравнения. 1. Вычисляем значение координаты Е , беря середину отрезка [ a , b ], т.е . Е = ( a + b ) / 2 (7) 2. Вычи сляем значения F ( a ), F ( b ), F ( E ), и осуществляем следующую проверку : Если F ( E )> Q , то корень с указанной точностью найден . Если F ( E )< Q , т.е . необходимая точность еще не достигнута , то формируем два интервала : [ a , E ] и [ E , b ] проверяем знаки F ( a ), F ( b ), F ( E ). На концах одного из этих интервалов знаки функции будут одинаковы , а на друго различны (иначе Е - искомый к о рень ). И именно то интервал , на концах которого знаки различны , мы берем за основу при следующей итерации , т.е . приравниваем к Е либо a , либо b . 3. Переходим к пункту 1. Задачу можно упростить , если определить границы корней : граница абсолютных значений корней вычисляется по формуле (8) : (8) , (9) , границу положительных корней – по формуле (9): а границу отрицательных корней – заменив в уравнении (1) х на – х. Таким образом , мы получаем метод , хотя и достаточно медленный (впрочем , при неудачном выборе нулевого приближения в мет оде итер а ций поиск решения может затянуться на еще более долгое время , да и к тому же неизвестно , приведет ли весь ход вычислений к ответу ), но зато вполне надежный и простой метод , не требующий решения дополнител ь ных задач , вроде вычисления производной , а рекурсивность самого алг о ритма позволяет получить очень компактный и легко читаемый код . Именно поэтому метод половинного деления и был выбран для реализации на программном уровне. 2.2.4. Метод разложения на множители Данный метод является полностью ана литическим , однако полн о стью зависим от других . Главным его преимуществом является то , что в данном методе не происходит потери кратных корней . Поясним на прим е ре : Пусть дан многочлен F ( x ) = 2 x 3 -11 x 2 +20 x -12 (11) Его можно записать в виде : F ( x ) = ( x +2) 2 (2 x -3) (12) У многочлена n -степени , как известно , n корней , а из (12) следует , что корнями F ( x ) являются – 2 и 1,5, причем корень – 2 является кратным , т.е . фактически это два одинаковых корня . При отыскании же корней л ю бым из вышеописанных методов «второй» к орень – 2 будет потерян , т.к . график функции будет иметь лишь две точки пересечения с осью абсцисс Чтобы избежать этого применяется метод разложения на множители . Суть его заключается в следующем : каждый многочлен вида (1) можно представить в виде ( x + h 1 )( x + h 2 )… ( x + h n )* H = 0 (13) , или F ( x ) = ( x + h )( b n -1 x n -1 +… b 1 )+ b 0 (14) где h 1… hn – корни уравнения , а Н – произведение множителей х , вын е сенных за скобки ( Н никак не влияет на уравнение , т.к . от него избавляю т ся , деля на Н обе части (13). При этом не исклю чено , что некоторые h м о гут быть взаимно равны , что и свидетельствует о наличии кратного корня . Для вычисления значений новых коэффициентов в (14) использую т ся формулы : b n =a n b n-1 =b n h+a n-1 (15) b n -2 = b n -1 h + a n -2 … Таким образом , алгоритм этого метода выглядит следующим образом : 1. Определить границы корней уравнения ; 2. При помощи любого из вышеописанных методов найти один к о рень уравнения ; 3. Применяя формулы (14) и (15) сформировать новый многочлен степени , на 1 меньшей предыдущего. 4. Вер нуться к пункту 2. 5. Повторять до тех пор , пока степень многочлена не обнулится. Этот метод был реализован на программном уровне и включен в курсовую работу. 3. ОПИСАНИЕ СТРУКТУРЫ ПРОГРАММЫ В рамках задания на курсовую работу в среде программирования Visual Basic for Applications была разработана программа , находящая корни мн о гочлена с указываемой точностью . 3.1. Описание программных модулей Разработка программы велась с учетом концепции объектно-ориентированного программирования , п оэтому четко определенной посл е довательности действий в ней нет . Однако , разбирая программу на соста в ляющие , можно проследить «путь» алгоритма в коде. Вся программа состоит из форм и модулей . Модулей всего два : один содержит стандартную процедуру автозапус ка (его рассматривать мы не станем ), а другой – все «публичные» процедуры и функции . Public function F ( x ). Функция , возвращающая значение многочлена для передаваемого х. Public function DetectBorders . Возвращает границы ко р ней , согласно формулам ( 7 , 8, 9 ). Public sub Gra – процедура , «ответственная» за составление графика. 3.2. Описание форм В формах заключена основная часть программы , в том числе и со б ственно алгоритм метода половинного деления . Решение «упаковать» эти функции в формы было продиктован о следующими причинами : - сокращение объема занимаемой памяти и , как следствие , ускор е ние работы за счет сокращения времени жизни переменных ; - разграничение доступа (т.е . необходимая функция или метод м о гут быть активированы исключительно в допустимой с итуации – это значительно снижает вероятность ошибок ); - каждая форма является «вещью в себе» и не зависит от остальных (кроме «корневой» 3.2.1. Форма Form _ Main Является корневой формой программы , содержит Главное меню , позвол я ющее в любом порядке выполн ять все необходимые действия , а также с о хранять и завершать работу программы. 3.2.2. Форма Form _ Koeff В этой форме задаются коэффициенты многочлена. Замечание. Для задания коэффициента а 0 необходимо указать з н а чение степени х равным 0. 3.2.3.Форма Form _ Mnogo Выводит на экран общий вид заданного многочлена , а также производных первого и второго порядков 3.2.4.Форма Form _ WP Эта форма по сущест ву является панелью управления в режиме графика и позволяет его распечатать или закрыть. 3.2.5. Форма Form _ Korni «Основная форма» – именно в ней заключен сам алгоритм поиска корней ( Sub FindKor ) методами бисекции и хорд /ка сательных. В качестве свойств в объекте «форма» присутствуют три ключевые процедуры , реализующие собственно алгоритмы нахождения корней и нахождения производной. Public sub FF * – процедура , «ответственная» за нахождение пр оизводной. Public sub Horda _ Kasatelnye – процедура , реализующая п о иск корней по алгоритму хорд и касательных. Public sub Find _ Kor – процедура , реализующая поиск корней по алгоритму половинного деления отрезка. Замечание. Алгоритмы нахождения крней описаны в главе 2. Суть же алгоритма нахождения производной сводится к простому перемнож е нию коэффициента и степени и уменьшению значения степени на единицу . Это позволяет корректно определить производную , при этом корректно «избавиться» от конечной константы. 4. АНАЛИЗ РЕЗУЛЬТАТОВ В результате выполнения задания на курсовую работу была создана программа VI Function 2.0 , находящая корни алгебраического многочлена вида (1) с указываемой точностью посредством следующих методов : · метод деления о трезка пополам ; · метод хорд и касательных (комбинированный ) Также при составлении программы была учтена возможность наличия у многочлена кратных корней , и средства их обнаружения также вошли в с о став программы. Фактические результаты совпали с формальным и. 5. СПИСОК ЛИТЕРАТУРЫ 1. Гутер Р.С . , Овчинский Б.В . «Элементы численного анализа и матем а тический обработки результатов опыта» . Москва , «Наука» , 1979 2. Калиткин Н.Н . «Численные методы» . Москва , «Наука» , 1978 3. Крылов В.И ., БабковВ. В ., Монастырский П.И . «Вычислительные мет о ды» . Москва , «Наука» , 1976 4. П . Санна . « Visual Basic for Applications 6.0 « в подлиннике » , Киев , BHV 6. ПРИЛОЖЕНИЯ 6.1. Пример алгебраического многочлена и нахождения его корней Многочлен F ( x ) = 3 x 2 +5 x -8 График представлен на рис . 6.1 Точность Q = 0,0001 Найденные корни x = -2,66666669921875 метод x = 0,99991015625 бисекции Найденные корни x = -2,66667654214111 метод x = 0,99981915025 хорд и касательных рис . 6.1 6.2. Блок-схема алгоритма половинного деления A = левая граница В = правая граница C – середина F ( x ) - функция 6.3. Блок-схема алгоритма поиска корней методом хорд и к а сательных A = лев ая граница В = правая граница F ( x ) - функция 6.4 Руководство пользователя. После запуска программы перед Вами появится Главное меню , включа ю щее в себя следующие пиктограммы : СОХРАНИТЬ Сохраняет файл со всеми сделанн ы ми изменениями ПРОСМОТР ФУНКЦИИ Вывод ит на экран окно , в котором отображается вид многочлена , а также вид производных первого и второго порядков (Выбор осужест в ляется нажатием кнопок F ’ ( X ), F ” ( X ), F ( X ) ВВОД КОЭФФИЦИЕНТОВ Выводит на экран окно ввода коэ ф фициентов ГРАФИК Выводит график функци и ПОИСК КОРНЕЙ Отображает окно , управляющее п о иском корней О ПРОГРАММЕ Выводит окно «О программе» ВЫХОД Завершает работу програмы , пре д варительнозадавая вопрос о сохр а нении изменений Ввод коэффициентов осуществляется следующим образом : в появившемся о кне имеются 2 поля – одно для указания степени , другое для ввода со б ственно коэффициента . Если Вы уже вводили некоторую функцию , то для ее удаления нажмите кнопку “очистить” , для запоминания коэффициента нажмите “Ок” , для завершеня ввода – “завершить”. По иск корней упрощен до предела . Вам достаточно указать неоюходимую точность и выбрать метод поиска : бисекционый или комбинированный. 6.5. Исходный текст программы UNIT 1 Dim curcell As Range Dim ma As Double Dim Ao As Double Public Function F(x As Variant) F = (x ^ 20 * Range("a20").Value) + (x ^ 19 * Range("a19").Value) + (x ^ 18 * Range("a18").Value) + (x ^ 17 * Range("a17").Value) + (x ^ 16 * Range("a16").Value) + (x ^ 15 * Range("a15").Value) + (x ^ 14 * Range("a14").Value ) + (x ^ 13 * Range("a13").Value) + (x ^ 12 * Range("a12").Value) + (x ^ 11 * Range("a11").Value) + (x ^ 10 * Range("a10").Value) + (x ^ 9 * Range("a9").Value) + (x ^ 8 * Range("a8").Value) + (x ^ 7 * Range("a7").Value) + (x ^ 6 * Range("a6").Value) + (x ^ 5 * Range("a5").Value) + (x ^ 4 * Range("a4").Value) + (x ^ 3 * Range("a3").Value) + (x ^ 2 * Range("a2").Value) + (x * Range("a1").Value) + Range("a21").Value End Function Public Function F1(x As Variant) F1 = (x ^ 20 * Range("j20").Val ue) + (x ^ 19 * Range("j19").Value) + (x ^ 18 * Range("j18").Value) + (x ^ 17 * Range("j17").Value) + (x ^ 16 * Range("j16").Value) + (x ^ 15 * Range("j15").Value) + (x ^ 14 * Range("j14").Value) + (x ^ 13 * Range("j13").Value) + (x ^ 12 * Range("j12").Va l ue) + (x ^ 11 * Range("j11").Value) + (x ^ 10 * Range("j10").Value) + (x ^ 9 * Range("j9").Value) + (x ^ 8 * Range("j8").Value) + (x ^ 7 * Range("j7").Value) + (x ^ 6 * Range("j6").Value) + (x ^ 5 * Range("j5").Value) + (x ^ 4 * Range("j4").Value) + (x ^ 3 * Range("j3").Value) + (x ^ 2 * Range("j2").Value) + (x * Range("j1").Value) + Range("j21").Value End Function Public Function F2(x As Variant) F2 = (x ^ 20 * Range("m20").Value) + (x ^ 19 * Range("m19").Value) + (x ^ 18 * Range("m18").Value) + (x ^ 17 * Range("m17").Value) + (x ^ 16 * Range("m16").Value) + (x ^ 15 * Range("m15").Value) + (x ^ 14 * Range("m14").Value) + (x ^ 13 * Range("m13").Value) + (x ^ 12 * Range("m12").Value) + (x ^ 11 * Range("m11").Value) + (x ^ 10 * Range("m10").Value) + (x ^ 9 * Range("m9").Value) + (x ^ 8 * Range("m8").Value) + (x ^ 7 * Range("m7").Value) + (x ^ 6 * Range("m6").Value) + (x ^ 5 * Range("m5").Value) + (x ^ 4 * Range("m4").Value) + (x ^ 3 * Range("m3").Value) + (x ^ 2 * Range("m2").Value) + (x * Range("m1").Value) + Range("m21").Value End Function Public Sub Gra() Sheets("Лист 1").Select Range("e1").Select For i = -10 To 10 ActiveCell.Value = F(i) ActiveCell.Cells(2).Select Next i End Sub Public Function DetectBorders() ' Функция определения границ действительных к орней ma = 0 For Each curcell In Range("Koeffs") If curcell.Value > ma Then ma = curcell.Value If curcell.Value <> 0 Then Ao = curcell.Value Next curcell DetectBorders = 1 + (ma * Ao) End Function UNIT2 Sub auto_open() Sheets("Лист 1").Select Form_Main.Show End Sub FORM_ABOUT Private Sub CommandButton1_Click() Form_About.Hide End Sub FORM_KOEFF Private Sub CommandButton1_Click() ko = TextBox1.Value st = TextBox2.Value Select Case st Case 0 Range("A21").Value = ko Case 1 Range("A1") = ko Case 2 Range("A2") = ko Case 3 Range("A3") = ko Case 4 Range("A4") = ko Case 5 Range("A5") = ko Case 6 Range("A6") = ko Case 7 Range("A7") = ko Case 8 Range("A8") = ko Case 9 Range("A9") = ko Case 10 Range("A10") = ko Case 11 Range("A11") = ko Case 12 Range("A12") = ko Case 13 Range("A13") = ko Case 14 Range("A14") = ko C ase 15 Range("A15") = ko Case 16 Range("A16") = ko Case 17 Range("A17") = ko Case 18 Range("A18") = ko Case 19 Range("A19") = ko Case 20 Range("A20") = ko Case Else MsgBox ("Вы ход за пределы допустимых значений ") st = st - 1 End Select TextBox1.Value = 0 TextBox2.Value = st + 1 End Sub Private Sub CommandButton2_Click() Form_Koeff.Hide End Sub Private Sub CommandButton3_Click() Range("a1").Value = 0 Range("a2").Value = 0 Range("a3").Value = 0 Range("a4").Value = 0 Range("a5").Value = 0 Range("a6").Value = 0 Range("a7").Value = 0 Range("a8").Value = 0 Range("a9").Value = 0 Range("a10").Value = 0 Range("a11").Value = 0 Range("a12").Value = 0 Range("a13").Value = 0 Range("a14").Value = 0 Range("a15").Value = 0 Range("a16").Value = 0 Range("a17").Value = 0 Range("a18").Value = 0 Range("a19").Value = 0 Range("a20").Value = 0 Range("a21").Value = 0 End Sub Private Sub UserForm_initialize() st = 0 ko = 0 TextBox1.Value = ko TextBox2.Value = st End Sub FORM_KORNI Private Sub CommandButton1_Click() ListBox1.Clear TextBox1.Value = 0 Form_Korni.Hide End Sub Private Sub CommandButton2_Click() Range("Toc").Value = TextBox1.Value Call FindKor 'Call Perenos End Sub Sub FindKor() Range("Curright") = Range("Right").Value Range("Curleft") = -Range("Right").Value - 0.333 'Range("right").Value = DetectBorders Range("Stepleft").Value = Range("right").Value * (-1) - 0.333 Do nashli = False Call MoveLe If Sgn(F(Range("cur left").Value)) = Sgn(F(Range("curright").Value)) Then End If If Sgn(F(Range("curleft").Value)) <> Sgn(F(Range("curright").Value)) Then Do ' nashli = True Range("Curcenter").Value = ((Range("curleft").Value) + (Range("curright").Value)) / 2 I f Abs(F(Range("Curcenter").Value)) > Range("toc").Value Then If Sgn(F(Range("curleft").Value)) <> Sgn(F(Range("curcenter").Value)) Then Range("curright").Value = Range("curcenter").Value Else: Range("curleft").Value = Range("curcenter").Value If Abs(F( Range("Curcenter").Value)) <= Range("toc").Value Then ListBox1.AddItem (Range("Curcenter").Value) Range("Koren").Value = Range("Curcenter").Value Loop Until Abs(F(Range("Curcenter").Value)) <= Range("toc").Value End If Loop Until Range("Stepleft").Value > Range("right").Value Or nashli = True End Sub Sub Horda_Kas() 'Sub FindKor() Range("Curright") = Range("Right").Value Range("Curleft") = -Range("Right").Value - 0.333 'Range("right").Value = DetectBorders Range("St epleft").Value = Range("right").Value * (-1) - 0.333 Do MoveLe If Sgn(F(Range("curleft").Value)) <> Sgn(F(Range("curright").Value)) Then Do ' nashli = True If F1(Range("curleft").Value) * F2(Range("curleft").Value) > 0 Then Range("curleft").Valu e = Range("curleft").Value - ((Range("curright").Value - Range("curleft").Value) * (F(Range("Curleft").Value) / (F(Range("Curright").Value - F(Range("Curleft").Value))))) Range("Curright").Value = Range("curright").Value - F(Range("curright").Value) / F1(Range("curright").Value) End If If F1(Range("curleft").Value) * F2(Range("curleft").Value) < 0 Then Range("curright").Value = Range("curleft").Value - ((Range("curright").Value - Range("curleft").Value) * (F(Range("Curleft").Value) / (F(Range(" Curright").Value - F(Range("Curleft").Value))))) Range("Curleft").Value = Range("curright").Value - F(Range("curright").Value) / F1(Range("curright").Value) End If If Abs(Abs(F(Ran ge("Curright").Value))) - Abs(F(Range("Curleft").Value)) <= Range("toc").Value Then 'MsgBox (Range("curleft").Value) ListBox1.AddItem (Range("Curright") .Value) 'If ((Range("Curleft").Value) + (Range("Curright").Value)) > 0 Then ListBox1.AddItem (((Range("Curleft").Value) + (Range("Curright").Value)) / 2) 'If ((Range("Curleft").Value) + (Range("Curright").Value)) < 0 Then ListBox1.AddItem (((Range("Curleft").Value) + (Range("Curright").Value)) / 2) Range("Koren").Value = Range("Curleft").Value End If Loop Until Abs(F(Range("Curright").Value)) - Abs(F(Range("Curleft").Value)) <= Range("toc").Value End If Loop Until Range("Stepleft").Value > Range("right").Value Or nashli = True End Sub Sub MoveLe() Range("stepleft").Value = Ran ge("stepleft").Value + 0.333 Range("curLeft").Value = Range("stepleft").Value Range("Curright").Value = Range("Curleft").Value + 0.333 Range("Curcenter").Value = ((Range("curleft").Value) + (Range("curright").Value)) / 2 End Sub Private Sub Co mmandButton3_Click() Horda_Kas End Sub Private Sub UserForm_Deactivate() ListBox1.Clear TextBox1.Value = 0 End Sub Sub Perenos() Range("a1").Value = Range("L1").Value Range("a2").Value = Range("L2").Value Range("a3").Value = Range("L3").Value Range("a4").Value = Range("L4").Value Range("a5").Value = Range("L5").Value Range("a6").Value = Range("L6").Value Range("a7").Value = Range("L7").Value Range("a8").Value = Range("L8").Value Range("a9").Value = Range("L9").Value Range("a10").Value = Range(" L10").Value Range("a11").Value = Range("L11").Value Range("a12").Value = Range("L12").Value Range("a13").Value = Range("L13").Value Range("a14").Value = Range("L14").Value Range("a15").Value = Range("L15").Value Range("a16").Value = Range("L16").Value Rang e("a17").Value = Range("L17").Value Range("a18").Value = Range("L18").Value Range("a19").Value = Range("L19").Value End Sub FORM_MAIN Private Sub CommandButton1_Click() Form_Koeff.Show End Sub Private Sub CommandButton2_Click() Form_Mnogo.Show End Sub Private Sub CommandButton3_Click() Gra Form_Main.Height = 84 Sheets("D1").Select Form_WP.Show Form_Main.Height = 360 Sheets("Лист 1").Select End Sub Private Sub CommandButton4_Click() Form_Korni.Show End Sub Private Sub CommandButton5_Click() Application .Quit End Sub Private Sub CommandButton7_Click() Form_About.Show End Sub Private Sub CommandButton8_Click() ActiveWorkbook.Save End Sub Private Sub UserForm_initialize() Sheets("Лист 1").Select Form_Main.Height = 360 End Sub FORM_MNOGO Dim mn As String Private Sub CommandButton1_Click() Form_Mnogo.Hide End Sub Private Sub UserForm_activate() mn = "F(x)=" If Range("a20") > 0 Then mn = mn + Range("a20").Text + "X^20" If Range("a20") < 0 Then mn = mn + Range("a20").Text + "X^20" If Rang e("a19") > 0 Then mn = mn + " + " + Range("a19").Text + "X^19" If Range("a19") < 0 Then mn = mn + Range("a19").Text + "X^19" If Range("a18") > 0 Then mn = mn + " + " + Range("a18").Text + "X^18" If Range("a18") < 0 Then mn = mn + Range("a18").Text + "X^18 " If Range("a17") > 0 Then mn = mn + " + " + Range("a17").Text + "X^17" If Range("a17") < 0 Then mn = mn + Range("a17").Text + "X^17" If Range("a16") > 0 Then mn = mn + " + " + Range("a16").Text + "X^16" If Range(" a16") < 0 Then mn = mn + Range("a16").Text + "X^16" If Range("a15") > 0 Then mn = mn + " + " + Range("a15").Text + "X^15" If Range("a15") < 0 Then mn = mn + Range("a15").Text + "X^15" If Range("a14") > 0 Then mn = mn + " + " + Range("a14").Text + "X^14" If Range("a14") < 0 Then mn = mn + Range("a14").Text + "X^14" If Range("a13") > 0 Then mn = mn + " + " + Range("a13").Text + "X^13" If Range("a13") < 0 Then mn = mn + Range("a13").Text + "X^13" If Range("a12") > 0 Then mn = mn + " + " + Range("a12").Text + "X^12" If Range("a12") < 0 Then mn = mn + Range("a12").Text + "X^12" If Range("a11") > 0 Then mn = mn + " + " + Range("a11").Text + "X^11" If Range("a11") < 0 Then mn = mn + Range("a11").Text + "X^11" If Range("a10") > 0 Then mn = mn + " + " + Range(" a10").Text + "X^10" If Range("a10") < 0 Then mn = mn + Range("a10").Text + "X^10" If Range("a9") > 0 Then mn = mn + " + " + Range("a9").Text + "X^9" If Range("a9") < 0 Then mn = mn + Range("a9").Text + "X^9" If Range("a8") > 0 Then mn = mn + " + " + Rang e("a8").Text + "X^8" If Range("a8") < 0 Then mn = mn + Range("a8").Text + "X^8" If Range("a7") > 0 Then mn = mn + " + " + Range("a7").Text + "X^7" If Range("a7") < 0 Then mn = mn + Range("a7").Text + "X^7" If Range("a6") > 0 Then mn = mn + " + " + Range("a6").Text + "X^6" If Range("a6") < 0 Then mn = mn + Range("a6").Text + "X^6" If Range("a5") > 0 Then mn = mn + " + " + Range("a5").Text + "X^5" If Range("a5") < 0 Then mn = mn + Range("a5").Text + "X^5" If Range("a4") > 0 Then mn = mn + " + " + Range("a4").Text + "X^4" If Range("a4") < 0 Then mn = mn + Range("a4").Text + "X^4" If Range("a3") > 0 Then mn = mn + " + " + Range("a3").Text + "X^3" If Range("a3") < 0 Then mn = mn + Range("a3").Text + "X^3" If R ange("a2") > 0 Then mn = mn + " + " + Range("a2").Text + "X^2" If Range("a2") < 0 Then mn = mn + Range("a2").Text + "X^2" If Range("a1") > 0 Then mn = mn + " + " + Range("a1").Text + "X" If Range("a1") < 0 Then mn = mn + Range("a8").Text + "X" If Range(" a21") > 0 Then mn = mn + " + " + Range("a21").Text If Range("a21") < 0 Then mn = mn + Range("a21").Text TextBox1.Value = mn End Sub FORM_WP Private Sub Label1_Click() Call Gra End Sub Private Sub CommandButton1_Click() Sheets("D1").Print End Sub Private Sub CommandButton2_Click() Form_WP.Hide Call Gra End Sub Private Sub UserForm_Click() Form_WP.Hide End Sub ____________________________ VoID InVaSiON HG © VI Function 2.0 beta
1Архитектура и строительство
2Астрономия, авиация, космонавтика
 
3Безопасность жизнедеятельности
4Биология
 
5Военная кафедра, гражданская оборона
 
6География, экономическая география
7Геология и геодезия
8Государственное регулирование и налоги
 
9Естествознание
 
10Журналистика
 
11Законодательство и право
12Адвокатура
13Административное право
14Арбитражное процессуальное право
15Банковское право
16Государство и право
17Гражданское право и процесс
18Жилищное право
19Законодательство зарубежных стран
20Земельное право
21Конституционное право
22Конституционное право зарубежных стран
23Международное право
24Муниципальное право
25Налоговое право
26Римское право
27Семейное право
28Таможенное право
29Трудовое право
30Уголовное право и процесс
31Финансовое право
32Хозяйственное право
33Экологическое право
34Юриспруденция
 
35Иностранные языки
36Информатика, информационные технологии
37Базы данных
38Компьютерные сети
39Программирование
40Искусство и культура
41Краеведение
42Культурология
43Музыка
44История
45Биографии
46Историческая личность
47Литература
 
48Маркетинг и реклама
49Математика
50Медицина и здоровье
51Менеджмент
52Антикризисное управление
53Делопроизводство и документооборот
54Логистика
 
55Педагогика
56Политология
57Правоохранительные органы
58Криминалистика и криминология
59Прочее
60Психология
61Юридическая психология
 
62Радиоэлектроника
63Религия
 
64Сельское хозяйство и землепользование
65Социология
66Страхование
 
67Технологии
68Материаловедение
69Машиностроение
70Металлургия
71Транспорт
72Туризм
 
73Физика
74Физкультура и спорт
75Философия
 
76Химия
 
77Экология, охрана природы
78Экономика и финансы
79Анализ хозяйственной деятельности
80Банковское дело и кредитование
81Биржевое дело
82Бухгалтерский учет и аудит
83История экономических учений
84Международные отношения
85Предпринимательство, бизнес, микроэкономика
86Финансы
87Ценные бумаги и фондовый рынок
88Экономика предприятия
89Экономико-математическое моделирование
90Экономическая теория

 Анекдоты - это почти как рефераты, только короткие и смешные Следующий
Врач: Курили когда-нибудь?
Дедушка: Не курил и не пил никогда.
Врач: Эх, и не успеете теперь.
Anekdot.ru

Узнайте стоимость курсовой, диплома, реферата на заказ.

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

Смотрите также:


Банк рефератов - РефератБанк.ру
© РефератБанк, 2002 - 2016
Рейтинг@Mail.ru