Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Gorner.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
915.4 Кб
Скачать
  1. Опис алгоритму

Для розробки програми до даної курсової роботи було розглянуто схему Горнера та спосіб знаходження границь дійсних коренів поліномів, з використанням даного методу. Основне завдання – використовуючи метод Горнера знайти один з коренів полінома з шістьма головними цифрами.

Алгоритм роботи програми розглянемо на наступних прикладах:

  1. ;

  2. ;

  3. .

Отже, для початку нам необхідно знайти верхню і нижню границю дійсних коренів, тобто ті межі, за якими корені полінома не існують. За схемою Горнера необхідно розкласти наведені приклади на відрізку це необхідно аби можливо було прослідкувати за зміною знаків на цьому відрізку. Для наведених прикладів достатньо буде використати , тобто розкласти дані приклади від -9 до 9.

Щоб знайти верхню границю, необхідно знайти при якому, всі коефіцієнти будуть додатними, а для знаходження нижньої – необхідно перетворити приклади по формулі , тому будемо мати такі пари прикладів:

  1. та ;

  1. та ;

  1. та .

Тепер відшукаємо верхню та нижню границі для наших пар прикладів у програмі Excel (розрахунки наведено нижче і вони співпадають з розрахунками проведеними вручну).

Проведемо розрахунки для прикладу №1:

Знаходження верхньої границі

 

Знаходження нижньої границі

x3-25x+52=0

 

x3-25x-52=0

 

1

0

-25

52

 

 

1

0

-25

-52

-9

1

-9

56

-452

 

-9

1

-9

56

-556

-8

1

-8

39

-260

 

-8

1

-8

39

-364

-7

1

-7

24

-116

 

-7

1

-7

24

-220

-6

1

-6

11

-14

 

-6

1

-6

11

-118

-5

1

-5

0

52

 

-5

1

-5

0

-52

-4

1

-4

-9

88

 

-4

1

-4

-9

-16

-3

1

-3

-16

100

 

-3

1

-3

-16

-4

-2

1

-2

-21

94

 

-2

1

-2

-21

-10

-1

1

-1

-24

76

 

-1

1

-1

-24

-28

0

1

0

-25

52

 

0

1

0

-25

-52

1

1

1

-24

28

 

1

1

1

-24

-76

2

1

2

-21

10

 

2

1

2

-21

-94

3

1

3

-16

4

 

3

1

3

-16

-100

4

1

4

-9

16

 

4

1

4

-9

-88

5

1

5

0

52

 

5

1

5

0

-52

6

1

6

11

118

 

6

1

6

11

14

7

1

7

24

220

 

7

1

7

24

116

8

1

8

39

364

 

8

1

8

39

260

9

1

9

56

556

 

9

1

9

56

452

Отже, дійсні корені не виходять за межі [-6,5]

Як видно із таблиці при розрахунку верхньої границі вперше всі коефіцієнти стають додатними при , отже - це верхня границя даного поліному. Тепер, виконавши перетворення поліному для знаходження нижньої границі, всі коефіцієнти стають додатними при , але за умовою нижня границя це , тому - нижня границя. Таким чином ми знайшли границі дійсних коренів.

Знаючи границі дійсних коренів полінома необхідно провести ті ж самі розрахунки, але вже використовуючи відрізок від нижньої до верхньої границі, для того, щоб перевірити скільки разів буде змінюватися знак вільного члена, тобто скільки коренів рівняння існує на даному відрізку.

Проробимо розрахунки у програмі Excel зробимо відповідні висновки про кількість дійсних коренів. Із нової таблиці видно, що знак змінюється лише один раз, а, отже, такий корінь лише один.

Перевірка відрізку [-6,5]

x3-25x+52=0

 

1

0

-25

52

-6

1

-6

11

-14

-5

1

-5

0

52

-4

1

-4

-9

88

-3

1

-3

-16

100

-2

1

-2

-21

94

-1

1

-1

-24

76

0

1

0

-25

52

1

1

1

-24

28

2

1

2

-21

10

3

1

3

-16

4

4

1

4

-9

16

5

1

5

0

52

Проведемо розрахунки верхньої та нижньої границь – для прикладу №2, та зробимо відповідні висновки.

Знаходження верхньої границі

 

Знаходження нижньої границі

3x3+2x2-5x+7=0

 

3x3-2x2-5x-7=0

 

3

2

-5

7

 

 

3

-2

-5

-7

-9

3

-25

220

-1973

 

-9

3

-29

256

-2311

-8

3

-22

171

-1361

 

-8

3

-26

203

-1631

-7

3

-19

128

-889

 

-7

3

-23

156

-1099

-6

3

-16

91

-539

 

-6

3

-20

115

-697

-5

3

-13

60

-293

 

-5

3

-17

80

-407

-4

3

-10

35

-133

 

-4

3

-14

51

-211

-3

3

-7

16

-41

 

-3

3

-11

28

-91

-2

3

-4

3

1

 

-2

3

-8

11

-29

-1

3

-1

-4

11

 

-1

3

-5

0

-7

0

3

2

-5

7

 

0

3

-2

-5

-7

1

3

5

0

7

 

1

3

1

-4

-11

2

3

8

11

29

 

2

3

4

3

-1

3

3

11

28

91

 

3

3

7

16

41

4

3

14

51

211

 

4

3

10

35

133

5

3

17

80

407

 

5

3

13

60

293

6

3

20

115

697

 

6

3

16

91

539

7

3

23

156

1099

 

7

3

19

128

889

8

3

26

203

1631

 

8

3

22

171

1361

9

3

29

256

2311

 

9

3

25

220

1973

Отже, дійсні корені не виходять за межі [-3,1]

Переглянувши нашу таблицю бачимо, що при розрахунку верхньої границі вперше всі коефіцієнти стають додатними при , а тому ми можемо стверджувати, що це верхня границя, а виконавши перетворення для знаходження нижньої границі дізнаємось, що коефіцієнти стають додатними при , але не забуваємо, що за умовою нижня границя це маємо . Таким чином ми знайшли границі дійсних коренів даного поліному.

Нам знову необхідно провести такі ж самі розрахунки, але вже на відрізку від нижньої до верхньої границі, перевіряючи кількість змін знаку вільного члена, щоб дізнатись скільки коренів існує на даному відрізку. Із таблицінаведеної нижче робимо висновок, що такий корінь лише один.

Перевірка відрізку [-3,1]

3x3+2x2-5x+7=0

 

3

2

-5

7

-3

3

-7

16

-41

-2

3

-4

3

1

-1

3

-1

-4

11

0

3

2

-5

7

1

3

5

0

7

Тепер виконаємо ці ж самі розрахункові операції для останнього прикладу - №3, і зробимо відповідні висновки.

Переглянувши таблицю знаходження границь для прикладу №3 ми побачимо, що при розрахунку верхньої границі вперше всі коефіцієнти стають додатними при , а тому ми можемо говорити, що це верхня границя. Виконавши перетворення для знаходження нижньої границі і провівши розрахунок, ми побачимо, що всі коефіцієнти стають додатними при , але пам’ятаючи, що за умовою нижня границя це маємо . Таким чином ми знайшли границі дійсних коренів даного поліному.

Тепер ми можемо переходити до наступних дій, а саме перевірки даного відрізку на кількість дійсних коренів, а із таблиці перевірки робимо висновок, що таких коренів два.

Знаходження верхньої границі

 

Знаходження нижньої границі

x4-2x3+3x2+4x-1=0

 

x4+2x3+3x2-4x-1=0

 

1

-2

3

4

-1

 

 

1

2

3

-4

-1

-9

1

-11

102

-914

8225

 

-9

1

-7

66

-598

5381

-8

1

-10

83

-660

5279

 

-8

1

-6

51

-412

3295

-7

1

-9

66

-458

3205

 

-7

1

-5

38

-270

1889

-6

1

-8

51

-302

1811

 

-6

1

-4

27

-166

995

-5

1

-7

38

-186

929

 

-5

1

-3

18

-94

469

-4

1

-6

27

-104

415

 

-4

1

-2

11

-48

191

-3

1

-5

18

-50

149

 

-3

1

-1

6

-22

65

-2

1

-4

11

-18

35

 

-2

1

0

3

-10

19

-1

1

-3

6

-2

1

 

-1

1

1

2

-6

5

0

1

-2

3

4

-1

 

0

1

2

3

-4

-1

1

1

-1

2

6

5

 

1

1

3

6

2

1

2

1

0

3

10

19

 

2

1

4

11

18

35

3

1

1

6

22

65

 

3

1

5

18

50

149

4

1

2

11

48

191

 

4

1

6

27

104

415

5

1

3

18

94

469

 

5

1

7

38

186

929

6

1

4

27

166

995

 

6

1

8

51

302

1811

7

1

5

38

270

1889

 

7

1

9

66

458

3205

8

1

6

51

412

3295

 

8

1

10

83

660

5279

9

1

7

66

598

5381

 

9

1

11

102

914

8225

Отже, дійсні корені не виходять за межі [-1,2]

Перевірка відрізку [-1,2]

x4-2x3+3x2+4x-1=0

 

1

-2

3

4

-1

-1

1

-3

6

-2

1

0

1

-2

3

4

-1

1

1

-1

2

6

5

2

1

0

3

10

19

Перейдемо безпосередньо до пошуку кореня, так як за умовою завдання нам необхідно знайти лише 1 корінь з шістьма цифрами.

Для уточнення кореня виконаємо заміну . В результаті отримаємо наступні рівняння:

  1. Із рівняння при підстановці → , помножимо все рівняння на -1 і отримаємо .

Виконавши пошук кореня для даного рівняння ми побачимо, що знак змінюється при , отже перша цифра дійсного кореня .

Пошук кореня

y3-25y-52=0

 

1

0

-25

-52

5

1

5

0

-52

6

1

6

11

14

Щоб продовжити пошук наступної цифри, необхідно розкласти все рівняння на :

Повний розклад рівняння на С=5

y 3-25y-52=0

 

1

0

-25

-52

5

1

5

0

-52

5

1

10

50

 

5

1

15

 

 

Під повним розкладом мається на увазі розклад першого рівняння на , а далі розклад тих рівнянь які утворюються із даного, для прикладу – із табл.11 видно, що розкладається на , тоді як в свою чергу розкладається на , а розкладається як .

Тепер ми можемо скласти рівняння для знаходження наступної цифри, для цього по черзі помножимо вільні члени на 10 в степені від 0 до . В результаті ми маємо рівняння:

,

спростивши даний вираз отримаємо:

.

Так як , то перевіримо значення даного полінома на відрізку , щоб знайти цифру на якій знак вільного члена зміниться:

Перевірка рівняння, утвореного з вільних членів, на відрізку [0,10]

y3+150y2+5000y-52000=0

 

1

150

5000

-52000

0

1

150

5000

-52000

1

1

151

5151

-46849

2

1

152

5304

-41392

3

1

153

5459

-35623

4

1

154

5616

-29536

5

1

155

5775

-23125

6

1

156

5936

-16384

7

1

157

6099

-9307

8

1

158

6264

-1888

9

1

159

6431

5879

10

1

160

6600

14000

Як бачимо знак при , а при , то ми можемо говорити, що і наступною цифрою буде .

Для того, щоб знайти наступну цифру наступну цифру розкладемо дане рівняння на і виконаємо ті самі дії, що й для попередньої цифри.

Повний розклад рівняння на С=8

y3+150y2+5000y-52000=0

 

1

150

5000

-52000

8

1

158

6264

-1888

8

1

166

7592

 

8

1

174

 

 

Тепер знову помноживши отримані вільні члени на 10 в степені побудуємо нове рівняння, з якого будемо вираховувати наступну цифру нашого кореня:

.

Так як , то знову перевіримо значення даного полінома на відрізку , для того, щоб знайти цифру, на якій знак вільного члена зміниться, яка в свою чергу стане наступною цифрою кореня нашого полінома:

Перевірка рівняння, утвореного з вільних членів, на відрізку [0,10]

y3+1740y2+759200y-1888000=0

 

1

1740

759200

-1888000

0

1

1740

759200

-1888000

1

1

1741

760941

-1127059

2

1

1742

762684

-362632

3

1

1743

764429

405287

4

1

1744

766176

1176704

5

1

1745

767925

1951625

6

1

1746

769676

2730056

7

1

1747

771429

3512003

8

1

1748

773184

4297472

9

1

1749

774941

5086469

10

1

1750

776700

5879000

Отже, як бачимо з таблиці , а при , то ми можемо говорити що . Отже, .

Повторимо ділення за схемою Горнера, для знаходження наступних цифр, а так як нам необхідно знайти лише 6 цифр даного кореня, то це буде останнє ділення за даною схемою. Поділимо наше рівняння на і побудуємо нове рівняння з отриманих коефіцієнтів:

Повний розклад рівняння на С=2

y3+1740y2+759200y-1888000=0

 

1

1740

759200

-1888000

2

1

1742

762684

-362632

2

1

1744

766172

 

2

1

1746

 

 

Отже, останнє рівняння буде:

.

Тепер поділивши модуль вільного члена на коефіцієнт при , отримаємо останні три цифри шуканого числа:

В результаті ми маємо всі цифри шуканого кореня: , а так як ми виконали заміну, то . Отже, корінь даного полінома – це .

Наведемо результати обчислень у програмі Mathcad:

Як бачимо, результати співпадають.

  1. Із рівняння при підстановці , отримаємо → , а помноживши все рівняння на -1 отримуємо .

Виконавши пошук кореня для даного рівняння ми побачимо, що знак змінюється при , отже перша цифра дійсного кореня .

Пошук кореня

3y3-2y2-5y-7=0

 

3

-2

-5

-7

2

3

4

3

-1

3

3

7

16

41

Щоб продовжити пошук наступної цифри, необхідно розкласти все рівняння на :

Повний розклад рівняння на С=2

3y3-2y2-5y-7=0

 

3

-2

-5

-7

2

3

4

3

-1

2

3

10

23

 

2

3

16

 

 

З утвореної, за рахунок множення вільних членів на 10 у відповідній степені,таблиці отримуємо коефіцієнти рівняння:

.

Так як , то перевіримо значення даного полінома на відрізку , щоб знайти цифру на якій знак вільного члена зміниться.

Переглянувши таблицю, побачимо, що знак вільного члена при , а при , отже, ми можемо говорити, що , і стверджувати, що наступною цифрою кореня нашого поліному стане цифра - .

Перевірка рівняння, утвореного з вільних членів, на відрізку [0,10]

3y3+160y2+2300y-1000=0

 

3

160

2300

-1000

0

3

160

2300

-1000

1

3

163

2463

1463

2

3

166

2632

4264

3

3

169

2807

7421

4

3

172

2988

10952

5

3

175

3175

14875

6

3

178

3368

19208

7

3

181

3567

23969

8

3

184

3772

29176

9

3

187

3983

34847

10

3

190

4200

41000

Для того, щоб знайти наступну цифру наступну цифру розкладемо, так само як і попереднє, дане рівняння на :

Повний розклад рівняння на С=0

3y3+160y2+2300y-1000=0

 

3

160

2300

-1000

0

3

160

2300

-1000

0

3

160

2300

 

0

3

160

 

 

Повторивши множення утворених вільних членів, отримаємо коефіцієнти для нового рівняння:

Так як , то перевіримо значення даного полінома на відрізку , щоб знайти цифру на якій знак вільного члена знову буде змінюватись.

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

Перевірка рівняння, утвореного з вільних членів, на відрізку [0,10]

3y3+1600y2+230000y-1000000=0

 

3

1600

230000

-1000000

0

3

1600

230000

-1000000

1

3

1603

231603

-768397

2

3

1606

233212

-533576

3

3

1609

234827

-295519

4

3

1612

236448

-54208

5

3

1615

238075

190375

6

3

1618

239708

438248

7

3

1621

241347

689429

8

3

1624

242992

943936

9

3

1627

244643

1201787

10

3

1630

246300

1463000

Як і в попередньому прикладі повторимо ділення за схемою Горнера, для знаходження наступних цифр, і поділимо наше рівняння на , щоб побудувати нове рівняння:

Повний розклад рівняння на С=4

3y3+1600y2+230000y-1000000=0

 

3

1600

230000

-1000000

4

3

1612

236448

-54208

4

3

1624

242944

 

4

3

1636

 

 

Отже,утворимо останнє рівняння:

.

Тепер поділивши модуль вільного члена на коефіцієнт при , отримаємо останні три цифри шуканого числа:

В результаті ми маємо всі цифри шуканого кореня: , а так як ми виконали заміну, то .

Отже, корінь даного полінома – це .

Результати обчислень в програмі Mathcad також співпадають, що свідчить про правильність розрахунків.

Наведемо результати обчислень у програмі Mathcadта лістинг програмної реалізації даного методу у С++.

Як бачимо, результати співпадають, а отже розрахунки проведено вірно.

  1. Із рівняння при підстановці , отримаємо → .

Виконавшипошук кореня для даного рівняння ми побачимо, що знак змінюється при та . У обох випадках вільний член при , тобто від’ємний, а, отже, перша цифра дійсного кореня у обох випадках, але ми будемо шукати лише перший корінь.

Пошук кореня

y4+2y3+3y2-4y-1=0

 

1

2

3

-4

-1

-1

1

1

2

-6

5

0

1

2

3

-4

-1

1

1

3

6

2

1

Щоб продовжити пошук наступної цифри, необхідно розкласти все рівняння на :

Повний розклад рівняння на С=0

y4+2y3+3y2-4y-1=0

 

1

2

3

-4

-1

0

1

2

3

-4

-1

0

1

2

3

-4

 

0

1

2

3

 

 

0

1

2

 

 

 

Беручи дані зцієї таблиці і виконуючи вже знайоме нам множення вільних членів на 10 у відповідній степеніутворимо новерівняння:

..

Так як , то будемо перевіряти значення даного полінома на відрізку , для того, щоб знайти цифру на якій знак вільного члена зміниться і яка стане наступною цифрою кореня.

Як бачимо, переглянувши таблицюзнак вільного члена при , а при , отже, ми можемо говорити, що зміна відбувається на відрізку , і будемо стверджувати, що наступна цифракореня даного полінома - .

Перевірка рівняння, утвореного з вільних членів, на відрізку [0,10]

y4+20y3+300y2-4000y-10000=0

 

1

20

300

-4000

-10000

0

1

20

300

-4000

-10000

1

1

21

321

-3679

-13679

2

1

22

344

-3312

-16624

3

1

23

369

-2893

-18679

4

1

24

396

-2416

-19664

5

1

25

425

-1875

-19375

6

1

26

456

-1264

-17584

7

1

27

489

-577

-14039

8

1

28

524

192

-8464

9

1

29

561

1049

-559

10

1

39

951

10559

105031

Для того, щоб знайти наступну цифру наступну цифру розкладемо, так само як і попереднє, дане рівняння на :

Повний розклад рівняння на С=9

y4+20y3+300y2-4000y-10000=0

 

1

20

300

-4000

-10000

9

1

29

561

1049

-559

9

1

38

903

9176

 

9

1

47

1326

 

 

9

1

56

 

 

 

Повторивши множення утворених вільних членів, взятих із таблиці, отримаємо коефіцієнти для нового рівняння:

.

Так як , то перевіримо значення даного полінома на відрізку , щоб знайти цифру, на якій знак вільного члена знову буде змінюватись.

Отже, як бачимо із таблиці значення вільного члена при , а при , тому ми можемо говорити що, значення вільного члена буде змінюватися, і як бачимо це відбувається на відрізку . Таким чиномми знайшли наступну цифру кореня і нею буде .

Перевірка рівняння, утвореного з вільних членів, на відрізку [0,10]

y4+560y3+132600y2+9176000y-5590000=0

 

1

560

132600

9176000

-5590000

0

1

560

132600

9176000

-5590000

1

1

561

133161

9309161

3719161

2

1

562

133724

9443448

13296896

3

1

563

134289

9578867

23146601

4

1

564

134856

9715424

33271696

5

1

565

135425

9853125

43675625

6

1

566

135996

9991976

54361856

7

1

567

136569

10131983

65333881

8

1

568

137144

10273152

76595216

9

1

569

137721

10415489

88149401

10

1

579

143511

11850599

206655391

Як і в попередньому прикладі проведемо останнє ділення за схемою Горнера, для знаходження наступних цифр, і поділимо наше рівняння на , для того, щоб побудувати нове рівняння:

Повний розклад рівняння на С=0

y4+560y3+132600y2+9176000y-5590000=0

 

1

560

132600

9176000

-5590000

0

1

560

132600

9176000

-5590000

0

1

560

132600

9176000

 

0

1

560

132600

 

 

0

1

560

 

 

 

А тепер утворимо останнє рівняння:

.

Тепер поділивши модуль вільного члена на коефіцієнт при , отримаємо останні три цифри шуканого числа:

В результаті ми маємо всі цифри шуканого кореня: , а так як ми виконали заміну, то .

Отже, корінь даного полінома – це .

Звіримо з результатами виконання у програмі Mathcad і пересвідчимось, що вони співпадають.

Як видно на лістингу результати співпадають.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]