Uploaded by Егор Тимошин

Лабораторная 3

advertisement
Написать программу, которая вычисляет сумму ряда с помощью FPU.
Программа должна состоять из трех связанных частей:
 ввод аргументов x, n и ε (на языке высокого уровня);
 обработка аргументов, получение результата и передача его в главную программу
(полностью на ассемблере);
 вывод результата суммирования и соответствующего значения исходной функции
(на языке высокого уровня).
Внимание! Алгоритм решения задачи должен быть максимально рациональным!
Теоретические сведения
Действительная функция f(x) называется аналитической в точке , если в некоторой
окрестности x-< R этой точки функция разлагается в степенной ряд (ряд Тейлора):
f ( )
f ( n ) ( )
f ( x )  f ( )  f ( )( x   ) 
( x   ) 2 ...
( x   ) n ...
(1)
2!
n!
При =0 получаем ряд Маклорена:
f (0)
f ( n ) (0)
f ( x )  f (0)  f (0)( x ) 
( x ) 2 ...
( x ) n ...
(2)
2!
n!
Разность
n
f ( k ) ( )
(3)
Rn ( x)  f ( x)  
(x  )k
k
!
k 0
называется остаточным членом и представляет собой ошибку при замене функции f(x)
полиномом Тейлора.
Для ряда Маклорена
f ( n 1) (  x ) n 1
Rn ( x ) 
x где 0<<1.
(4)
(n  1)!
Таким образом, вычисление значения функции можно свести к вычислению суммы
числового ряда
а1+а2+ . . . +an+ . . . .
(5)
Известно, что числовой ряд называется сходящимся, если существует предел
последовательности его частных сумм:
lim S n
,
(6)
S
n
где Sn = а1+а2+ . . . +an+ . . . .
Число S называется суммой ряда.
Из формулы (3) получаем S = Sn + Rn , где Rn – остаток ряда, причём R0 при n.
Для нахождения суммы S сходящегося ряда (5) с заданной точностью  нужно
выбрать число слагаемых n столь большим, чтобы имело место неравенство Rn< .
Тогда частная сумма Sn приближённо может быть принята за точную сумму S ряда (5).
Приближённо n выбрать так, чтобы имело место неравенство
Sn+1 – Sn <  или an < .
Задача сводится к замене функции степенным рядом и нахождению суммы некоторого
количества слагаемых S   an ( x, n) при различных параметрах суммирования. Каждое
слагаемое суммы зависит от параметра х и номера n, определяющего место этого
слагаемого в сумме.
Обычно формула общего члена суммы принадлежит одному из следующих трёх типов:
xn
x 2 n 1
x 2n
n
а)
;
;
;
( 1)
n!
(2n  1)!
(2n)!
cos( nx ) sin( 2n  1) x
;
;
n
2n  1
б)
cos( 2nx )
;
4n 2  1
n2  1 x n
x 4 n 1
cos(nx )
( ) .
; ( 1) n
;
n2
n! 2
4n  1
В случае а) для вычисления члена суммы аn целесообразно использовать рекуррентные
соотношения, т. е. выражать последующий член суммы через предыдущий:
an+1 = an × (x, n). Это позволит существенно сократить объем вычислительной работы.
Кроме того, вычисление члена суммы по общей формуле в ряде случаев невозможно
(например, из-за наличия n!).
В случае б) применение рекуррентных соотношений нецелесообразно. Вычисления будут
наиболее эффективными, если каждый член суммы вычислять по общей формуле
an = (x, n).
В случае в) член суммы целесообразно представить в виде двух сомножителей, один из
которых вычисляется по рекуррентному соотношению, а другой непосредственно
an = (x, n) × сn(x, n), где сn(x, n) = cn–1(x, n) × (x, n).
в)
Постановка задачи:
Для заданного значения х (вводится с клавиатуры), вычислить функцию f(x),
используя ее разложение в степенной ряд в двух случаях:
а) для заданного n (n вводится с клавиатуры);
б) для заданной точности  (вводится с клавиатуры).
Для сравнения найти точное значение функции с помощью программы на языке C.
Варианты функций
№
1
2
Функция
y  3X
S  1
y   ln 2 sin
x
2
3
y  sin X
4
y  XarctgX 
y  ex
6
ye
x cos 4
7
y  cos x
S
cos 2 x
cos nx
.....
2
n
x3
x 2 n1
....( 1) n
3!
(2n  1)!
x2 x4
x 2n

...( 1) n1
2 12
2n(2n  1)
S  1

cos( x sin  4 )
ln 3
ln 2 3 2
ln n 3 n
x
x ....
x
1!
2!
n!
S  cos x 
S  x
 ln 1  x 2
5
Разложение в ряд
S  1
S  1
x x2
xn

.....
1! 2!
n!
cos

1!
4
x ....
cos n

4
n!
x2
x 2n
....( 1) n
2!
(2n)!
xn
№
Функция
x sin  4
8
y
9
y
1  2 x cos  4  x 2
1 1 x
ln

4 1 x
Разложение в ряд
S  x sin
S  x
1
 arctgX
2
10
y  e cos x cos(sin x)
11
y  (1  2 x 2 )e x
12
1
y   ln(1 
2
 2 x cos

2
3
1
ln x
2
y
14
1 2 2
y  (x  )
4
3
16
y
y
2
8

S
S
1 x2
x
arctgX 
2
2

4
x
4
 x 2 sin 2
4
x cos

3
1

x 2 cos 2

2
S  cos x 
1 
 sin x
2 4
S
19
y  e2x
20
x
x2 x
y  (   1)e 2
4 2

23
cos 2 x cos 4 x
cos 2nx

.... 2
3
15
4n  1
S  1
x2
) cos x 
2
2x
(2 x ) n
.....
1!
n!
x
n2  1 x n
S  1  2 ....
( )
2
n! 2
S  x
x3
x 2 n 1
....( 1) n
3
2n  1
S  1
3 2
2n 2  1 2 n
x .....( 1) n
x
2
(2n)!
x
sin x
2
y  2(cos2 x  1)

3
n
cos 3x
cos(2n  1) x
...
2
3
(2n  1) 2
y
y  (1 
....
x3 x5
x 2 n 1
 .....( 1) n 1 2
3 15
4n  1
18
22
3
x n cos n
cos 2 x
cos nx
.... ( 1) n
2
2
n2
x2
x 2n
S  1  ....
2!
(2n)!
y  arctgX
4
x 1 1 x 1 3
1
x  1 2 n 1
 (
) .....
(
)
x 1 3 x 1
2n  1 x  1
ex  ex
2
21

2n  1 2 n
x
n!
y
17
.... x n sin n
cos x
cos nx
....
1!
n!
S   cos x 
S

x5
x 4 n 1
.....
5
4n  1
S  1  3x 2 .....
 x2 )
13
15
S  1

S
(2 x ) 2 (2 x ) 4
(2 x ) 2 n

....( 1) n
2
24
(2n)!
№
24
25
26
Функция
y  ln(
y
1
)
2  2x  x2
e x  e x
2
ye
x cos 4
y  cos x
28
y
29
y
S  x
S  1
S  1
x sin  4
1  2 x cos  4  x 2
1 1 x
ln

4 1 x
1
 arctgX
2
30
S  (1  x) 2 

cos( x sin  4 )
27
Разложение в ряд
y  e cos x cos(sin x)
(1  x) 4
(1  x) 2 n
....( 1) n
2
n
x3
x 2 n1
 .... 
3!
(2n  1)!
cos

1!
4
x ....
cos n

4
n!
xn
x2
x 2n
....( 1) n
2!
(2n)!
S  x sin

4
 x 2 sin 2

4
.... x n sin n

4
x5
x 4 n 1
S  x  .....
5
4n  1
S  1
cos x
cos nx
....
1!
n!
Полное стандартное решение задачи (оба случая – а и б!), включая проверку выведенных
результатов (путем сравнения с исходной функцией), оценивается в 10 баллов. Без
защиты очной защиты, т.е. только загрузка работы в LMS, максимальная оценка 6
баллов.
Решение только для случая а (заданное число циклов) – 5 балла.
В LMS загружаются текст программы и пояснительная записка, составленная в свободной
форме и содержащая снимки экрана работающей программы и пояснения к реализации.
Можно получить дополнительные баллы за следующие улучшения программы:
 за рациональное использование стековой памяти (формальный признак –
обращение к регистрам ST с «большими» номерами); в ходе вычислений нужно
использовать только две переменные: значение x, введённое пользователем, и
результат вычисления – значение S; все используемые константы, результаты
промежуточных вычислений нужно размещать в стеке FPU;
 за корректную обработку ошибок вычислений – попытка взять логарифм или
извлечь корень из отрицательного числа, в крайнем случае, деления на ноль;
продемонстрировать работу защиты – лучше путем ввода некорректных значений
данных, но допустимо для создания «аварийной ситуации» внесение небольших
изменений в программу.
Дополнительные баллы назначаются по усмотрению преподавателя.
Download