Вычислительная математика

Автор: Пользователь скрыл имя, 05 Марта 2013 в 09:10, контрольная работа

Описание работы

Задание.
Решить нелинейное уравнение х3 – х – 7 = 0 , используя программу QBASIC, следующими методами:
1) отделения корней;
2) бисекций;
3) хорд;
4) касательных;
5) комбинированный;
6) Симпсона (парабол).

Работа содержит 1 файл

Контрольная.doc

— 3.67 Мб (Скачать)

 

 

 

 

 

 

 

 

 

 

 

Контрольная  работа

по дисциплине: «Вычислительная математика»

 

 

 

 

 

 

 

 

 

 

 

 

 

Выполнил:

              

Проверил:

 

 

 

Задание.

Решить нелинейное уравнение   х3 – х – 7 = 0 , используя программу QBASIC,   следующими  методами:

1)  отделения корней;

2)  бисекций;

3)  хорд;

4)  касательных;

5)  комбинированный;

6)  Симпсона (парабол).

 

 

1. Метод отделения  корней

 

REM "Otdelenie korney"

DEF fnf (x) = x ^ 3 - x - 7

 

1 : INPUT "a,b ", a, b

2 : INPUT "h ", h

 

WHILE fnf(x) * fnf(x + h) > 0

     x = x + h

WEND

 

PRINT "a= "; x, "b= "; x + h

PRINT "f(a)= "; fnf(x), "f(b) = "; fnf(x + h)

 

PRINT "izmenim h? "

3 : z$ = INKEY$

    IF z$ = "y" THEN 2

    IF z$ = "n" THEN 4 ELSE 3

4 : PRINT "izmenim a,b? "

5 : z$ = INKEY$

    IF z$ = "y" THEN 1

    IF z$ = "n" THEN 6 ELSE 5

 

6 : END

 

Результат выполнения программы  представлен на рисунке 1.

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

Рисунок 1  Результат выполнения методом отделения корней

 

 

2. Метод бисекций

 

REM "method bisection"

DEF fnf (x) = x ^ 3 - x - 7

1 : INPUT "vvedite a,b", a, b

2 : INPUT "vvwedite e", e

k = 0

3 : c = (a + b) / 2

    IF fnf(c) = 0 THEN 4

    IF fnf(a) * fnf(c) > 0 THEN a = c ELSE b = c

    k = k + 1

    c = (a + b) / 2

IF (b - a) / 2 < e THEN 4

IF k < 100 THEN 3

4 : PRINT "x0 = "; c; ""

    PRINT "f(x0)="; fnf(c)

    PRINT "k="; k

    PRINT "izmenim e?"

5 : z$ = INKEY$

    IF z$ = "y" THEN 2

    IF z$ = "n" THEN 6 ELSE 5

6 : PRINT "izmenim a,b?"

7 : z$ = INKEY$

   IF z$ = "y" THEN 1

   IF z$ = "n" THEN 8 ELSE 7

8 : END

 

 

Результат выполнения программы  представлен на рисунке 2.

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рисунок 2  Результат выполнения методом бисекций

 

 

3. Метод хорд

 

REM "method hord"

DEF fnf (x) = x ^ 3 - x - 7

DEF fnw (x) = 6 * x

 

1 : INPUT "vvedite interval izol a,b ", a, b

 

  IF fnf(a) * fnw(a) < 0 THEN 2

  a = b1

  b = a1

 

  k = 0

 

2 : x1 = a - (b - a) / (fnf(b) - fnf(a)) * fnf(a)

    k = k + 1

    IF ABS(x1 - a) < .0000001 THEN 3

    a = x1

    IF k < 100 THEN 2

3 : PRINT "x0 = "; x1

    PRINT "f(x0) = "; fnf(x1)

    PRINT "k = "; k

    PRINT

    PRINT "izmenim a,b? "

4 : z$ = INKEY$

    IF z$ = "y" THEN 1

    IF z$ = "n" THEN 5 ELSE 4

5 : END

 

Результат выполнения программы  представлен на рисунке 3.

 


 

 

 

 

 

 

 

Рисунок 3 Результат выполнения методом хорд

 

 

4. Метод касательных

 

REM "method kasat"

DEF fnf (x) = x ^ 3 - x - 7

DEF fnv (x) = 3 * x ^ 2 - 1

DEF fnw (x) = 6 * x

 

1 : INPUT "vvedite a1,b1 ", a1, b1

2 : INPUT "vvedite e ", e

 

IF fnf(a1) * fnw(a1) > 0 THEN b = a1 ELSE b = b1

k = 0

 

3 : x1 = b - fnf(b) / fnv(b)

    k = k + 1

  

    IF ABS(x1 - b) < e THEN 4

    b = x1

    IF k < 100 THEN 3

 

4 : PRINT

    PRINT "x0="; x1

    PRINT "f(x0)="; fnf(x1)

    PRINT "k="; k

    PRINT "abs(x1-b)="; ABS(x1 - b)

PRINT

PRINT "izmenim e? "

5 : z$ = INKEY$

    IF z$ = "y" THEN 2

    IF z$ = "n" THEN 6 ELSE 5

6 : PRINT "izmenim a,b? "

7 : z$ = INKEY$

    IF z$ = "y" THEN 1

    IF z$ = "n" THEN 8 ELSE 7

8 : END

 

 

Результат выполнения программы  представлен на рисунке 4.


 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рисунок 4 Результат выполнения методом касательных

 

 

5. Комбинированный метод

 

REM "kombi method"

DEF fnf (x) = x ^ 3 - x - 7

DEF fnv (x) = 3 * x ^ 2 - 1

DEF fnw (x) = 6 * x

 

INPUT "vvedite a,b ", a, b

 

IF fnf(a) * fnw(a) > 0 THEN a = b1 AND b = a1

k = 0

1 : x1 = a - (b - a) / (fnf(b) - fnf(a)) * fnf(a)

    x2 = b - fnf(b) / fnv(b)

    k = k + 1

 

IF ABS(x2 - x1) / 2 < .00001 THEN 2

a = x1: b = x2

IF k < 100 THEN 1

   

2 : PRINT "x0= "; (x1 + x2) / 2

    PRINT "f(x0)= "; fnf((x1 + x2) / 2)

    PRINT "k= "; k

END

 

Результат выполнения программы представлен  на рисунке 5.

 


 

 

 

 

 

 

 

Рисунок 5 Результат выполнения комбинированным методом

 

 

6. Метод итераций

 

REM "method iteration"

DEF fnf (x) = x ^ 3 - x - 7

DEF fnz (x) = (x + 7) ^ (1 / 3)

 

    INPUT "vvedite a,b ", a, b

1 : INPUT "vvedite x1 ", x1

    k = 0

2 : x2 = fnz(x1)

    k = k + 1

 

    IF ABS(x2 - x1) < .000001 THEN 3

    x1 = x2

    IF k < 100 THEN 2

3 : y = (x1 + x2) / 2

    PRINT "x0= "; y

    PRINT "f(x0)= "; fnf(y)

    PRINT "k= "; k

 

    PRINT "izmenim x1? "

4 : z$ = INKEY$

    IF z$ = "y" THEN 1

    IF z$ = "n" THEN 5 ELSE 4

5 : END

 

Результат выполнения программы  представлен на рисунке 6.


 

 

 

 

 

 

 

 

 

Рисунок 6 Результат выполнения методом итераций

 

 

7. Метод Симпсона (парабол)

 

REM "method Simpsona"

DEF fnf (x) = x ^ 3 - x - 7

DIM J(2)

 

INPUT "vvedite a,b ", a, b

1 : INPUT "vvedite n ", n

     k = 1

2 : h = (b - a) / n: J(k) = 0

     b1 = b - 2 * h

     h1 = 2 * h

FOR x = a TO b1 STEP h1

J(k) = J(k) + fnf(x) + 4 * fnf(x + h) + fnf(x + 2 * h)

NEXT x

 

J(k) = J(k) * h / 3

n = 2 * n  :   k = k + 1

 

IF k = 2 THEN 2

e = ABS(J(2) - J(1)) / 15

S = J(2) + e

 

PRINT "integral = "; S

PRINT "n = "; n / 4

PRINT "e = "; e

 

PRINT "izmenim n? "

3 : y$ = INKEY$

IF y$ = "y" THEN 1

IF y$ = "n" THEN 4 ELSE 3

4 : END

 

 

 

Результат выполнения программы  представлен на рисунке 7.

 

Рисунок 7 Результат выполнения методом Симпсона (парабол)

 

 

 

 

Задание.

а) Р(х) = 6х6 +5х5 + 4х4 + 3х3 + 2х2 + х +1

    Р(х) = (((((6х + 5) × х + 4) × х + 3) × х + 2) × х + 1) × х + 1

 

REM "vicheslenie znachenia mnogochlena"

1 : INPUT "vvedite stepen n ", n

DIM a(10)

  FOR k = n TO 0 STEP -1

  PRINT "a("; k; ") = ";

  INPUT a(k)

  NEXT k

2 : INPUT "vvedite x ", x

  p = a(n)

FOR k = n TO 1 STEP -1

p = p * x + a(k - 1)

NEXT k

PRINT "p("; x; ") = "; p

PRINT "izmenim x? "

3 : y$ = INKEY$

    IF y$ = "y" THEN 2

    IF y$ = "n" THEN 4 ELSE 3

4 : PRINT "izmenim mnogochlen? "

5 : y$ = INKEY$

    IF y$ = "y" THEN 1

    IF y$ = "n" THEN 6 ELSE 5

6 : END

 

Результат выполнения программы  представлен на рисунке 8.

Рисунок 8 Результат выполнения программы

Для данного многочлена построим схему Горнера:

 

 

6

5

4

3

2

1

1

   

6х + 5 = р

рх + 4

рх + 3

рх + 2

рх + 1

рх + 1

х = 1

 

11

15

18

20

21

22

х = 2

 

17

38

79

160

321

643

х = 5

 

35

179

898

4492

22461

112306

х = 10

 

65

654

6543

65432

654321

6543211


 

 

б) Р(х) = х5 + 2х4 + 3х3 + 4х2 + 5х – 6

     Р(х) = ((((х  + 2) × х + 3) × х + 4) × х + 5) × х - 6

 

Для данного многочлена результат показан на рисунке 9.

Рисунок 9 Результат программы

 

Построим схему Горнера:

 

 

1

2

3

4

5

-6

   

х + 2 = р

рх + 3

рх + 4

рх + 5

рх - 6

х = 1

 

3

6

10

15

9

х = 2

 

4

11

26

57

108

х = 3

 

5

18

58

179

531

х = 4

 

6

27

112

453

1806

х = 5

 

7

38

194

975

4869


 


Информация о работе Вычислительная математика