Контрольная работа по "Программирование"

Автор: Пользователь скрыл имя, 11 Декабря 2011 в 19:54, контрольная работа

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

Вычисление тригонометрических функций методом интерполяции.
Определение оптимального шага интегрирования.
Вычисление полиномов.

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

ТУ 3 курс.doc

— 326.50 Кб (Скачать)

Задание №1

Вычисление  тригонометрических функций методом  интерполяции.

Наибольшее распространение  получили два метода вычисления тригонометрических функций – метод линейной интерполяции и метод разложения в степенной  ряд.

       1)Рассмотрим метод линейной интерполяции.

   Допустим, что для реализации некоторого алгоритма  управления необходимо вычислить функцию

   y=sin(x), 0 ≤ x ≤ π/2. 

   Весь  интервал изменения аргумента «х»  разбивается на «n» равных участков (рис. 1). Значения функции y(xi) (i=1,2,3,…,n) записываются в ячейки запоминающего устройства (ЗУ) и используются для вычисления функции при x ≠ xi. Для записи значений y(xi) необходимо n+1 ячеек запоминающего устройства. Значение

   h=xi+1 – xi                                                                                                      (1.1)

   называют  участком интерполяции. Изменение функции  на участке интерполяции представляется участком прямой АВ.

                         

   Рис.1

   Из  подобия треугольников АВС и  АДЕ можно получить формулу интерполяционной поправки:

    .                                                                          (1.2)

   Значения  аргумента «xi» и «xi+1» называют крайними. Вычисление функции по формуле (1.1) производится с ошибкой :

   ∆ = .                                                                                                      (1.3)

   Ошибка  ∆ обусловлена тем, что изменение  функции на участке АВ представлено отрезком. Величина ошибки ∆ зависит  от величины участка интерполяции, и чем больше h, тем больше ∆. Если весь интервал изменения аргумента от 0 до π/2 разбивается на равные участки, то величина ∆, будет зависеть от значения аргумента – чем ближе значение х, в котором рассчитывается значение функции к одному из крайних значений «xi» или «xi+1», тем меньше ошибка вычислений.

   а) Определение  зависимости ошибки от объёма памяти.

   Задана  функция  sin30,2°. При помощи ПЭВМ вычислим точное значение у0 = sin30,2° = 0,50302.

   Далее при различных крайних значениях  xi и xi+1 , заданных в таблице №1, найдём приближённое значение функции по формуле (1.2). А так же ошибку вычисления по формуле (1.3). Необходимое количество ячеек памяти q определяется путём деления 90° (по условию изменение аргумента функции 0 ≤ x ≤ 90°) на величину участка интерполяции (формула 1.1) и прибавлением к частному единицы:

   q= +1.

   Т.о. по формуле (1.2) рассчитаем приближённое значение у для участка интерполяции 1 ≤ x ≤ 90°:

   у1 = sin1° = 0,01745;

   y2 = sin90° = 1;

    = 0,01745+ (30,2-1) = 0,33981.

   Аналогично  рассчитаем остальные значения у:

   sin10° = 0,17365 ;                                     sin60° = 0,86603 ;

   у = 0,45337.

   sin15° = 0,25882 ;                                    sin55° = 0,81915 ;

   у = 0,47175.

   sin28° = 0,46947 ;                                                   sin52° = 0,78801 ;

   у = 0,49867.

   sin29° = 0,48481 ;                                                  sin51° = 0,77715 ;

   у = 0,50076.

        xi xi+1 h у0 у q
        90° 89° 0,50302 0,33981 0,1632 2
        10° 60° 50° 0,50302 0,45337 0,04965 3
        15° 55° 40° 0,50302 0,47175 0,03127 4
        28° 52° 24° 0,50302 0,49867 0,00435 5
        29° 51° 22° 0,50302 0,50076 0,00226 6

   Табл.1

   По  результатам вычислений можно построить  график зависимости возникающей  ошибки вычислений в зависимости от количества используемых ячеек памяти.

                  

   Рис.2

   На  рис.2 наглядно видно, что ошибка вычислений значительно уменьшается при  использовании не менее пяти ячеек  памяти.

    Отсюда  же можно сделать вывод, что при расчётах величина участка интерполирования должна быть по возможности минимальной. Таким образом, чтобы обеспечить необходимую точность интерполяции требуется увеличение количества используемых ячеек памяти.

   б) Определение  зависимости ошибки от значения аргумента  функции.

   Возьмём фиксированные крайние значения:

   xi =5°,     xi+1 = 90°.

   И при  различных значениях аргумента  вычислим ошибку. Для чего необходимо найти приближённое значение функции  у по формуле (1.2) и точное значение у0 при помощи ПЭВМ. Результаты вычислений занесём таблицу № 2.

    30,2° 55,2° 60,2° 65,2° 70,2° 75,2° 80,2°
    у 0,35779 0,62628 0,67997 0,73669 0,78737 0,84106 0,89476
    у0 0,50302 0,82115 0,86603 0,90778 0,94089 0,96682 0,98541
    0,14523 0,19487 0,18606 0,17109 0,15352 0,12576 0,09065

   Табл.2

   Согласно  данным в таблице № 2, построим график зависимости ошибки вычислений от аргумента исследуемой функции.

                

   Рис.3

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

   2) Вычисление  тригонометрических функций разложением  в ряд Тейлора.

   Известно, что непрерывную и имеющую все производные функцию можно представить в виде суммы степенного ряда. Для нашего случая функцию sin(x) можно разложить следующим образом:

   sin(x) =                                                             (1.4)

   При конечном значении членов ряда n вычисление по формуле (1.4) производится с методической ошибкой, равной остаточному члену ряда Rn:

   Rn = уо-Sn.

   Где Sn сумма ряда.

   Из  выражения (1.4) видно, что с увеличением числа членов степенного ряда будет возрастать количество операций, следовательно, и время вычислений. Если считать, что время для вычисления sin(x) определено, то для повышения точности вычислений необходимо повысить быстродействие настолько, чтобы за то же время произвести больший объём вычислений.

   Целью исследования является определение  зависимости ошибки вычислений от количества учтённых членов ряда, а также зависимости  ошибки от времени вычислений. При  этом необходимо учитывать, что число  учитываемых членов связано с временем вычислений.

   Задана функция sin45,2°. Вычислим точное значение при помощи ПЭВМ:

     уо= sin45,2°=0,7095707365.

   А также  приближённое значение по формуле (1.4). Количество членов ряда и результат вычислений заносим в таблицу № 3. Ошибку вычислений найдём по формуле (1.3). Время вычисления значения функции у по формуле (1.4) определим как:

   t = Atвыб + Btумн + Ctслож                                                                                 (1.5)

   где tвыб = 0,6 мкс- время выполнения операции выборки из ячейки ЗУ,

    tумн = 0,5 мкс- время выполнения операции умножения(деления),

    tслож =0,25 мкс- время выполнения операции сложения(вычитания).

   Расчёт  для ряда в котором N=1 будет выглядеть следующим образом:

   х = 45,2°= 0,7889 (рад).

   sin(x) =

   Для расчёта времени вычислений представим формулу вычисления следующим образом:

   sin(x) = = х - х*х*х/1/2/3.

   Коэффициенты  для формулы (1.5):

   А=7,         В=5,        С=1.

    Кол-во членов

    ряда N

    уо у t (мкс)
    1 0,70957 0,70671 2,86*10-3 6,95
    2 0,7095707 0,7096081 3,74*10-5 17,7
    3 0,709570737 0,709570371 3,66*10-7 32,85
    4 0,7095707365 0,7095707261 1,04*10-8 52,4
    5 0,7095707365 0,7095707243 1,22*10-8 76,35

   Табл. 3

              

   Рис.4

           

   Рис.5

   Из  рисунка 4 мы видим, что увеличение числа  членов ряда Тейлора приводит к значительному снижению погрешности вычислений. Но на рисунке 5 наглядно показано, что для достижения достаточной точности вычислений требуется существенное увеличение машинного времени.

Информация о работе Контрольная работа по "Программирование"