Полином Гира (экстраполяция методом Гира)

    Дисциплина: Программирование
    Тип работы: Реферат
    Тема: Полином Гира (экстраполяция методом Гира)

    {****************************************************************************}

    { Вариант №1.23

    Экстраполяция методом Гира

    гр. ##-###

    Ф.И.О. }

    P = 50-200 [Ом],

    f(w) = ----- * ( 1 + Q^2 * (2*dw/wp))^(-1/2),

    Rn= 0.1-5

    [Ом],

    Q = 50-1000,

    wp- частота резонанса,

    dw- шаг,

    {****************************************************************************}

    Аппроксимация

    Аппроксимацией

    называется

    замена

    одних

    математических

    объектов

    (чисел, функций)

    другими,

    более

    простыми

    в том

    или

    ином

    смысле

    близкими к исходным.

    При

    решении

    задачи

    аппроксимации

    предполагается,

    что

    известны

    значнения

    аппроксимируемой

    функции

    f(x)

    (снятые эксперементально или

    расчитанные по формуле)

    узловых

    точках

    (обычно их называют

    узлами

    интерполяции) X1, X2, ..., Xn.

    Необходимо найти функцию P(x), с помощью

    которой можно

    было бы определить

    значения исходной функции

    для других

    (отличных от узлов)

    значений аргумента

    с некоторой достаточно малой

    погрешностью.

    Различают две задачи аппроксимации: интерполяцию и экстраполяцию.

    Интерполяция

    это отыскание промежуточных

    значений функции внутри

    заданного интервала [X1, Xк]

    для значений

    не совпадающих с узловыми

    точками.

    Экстраполяция - это распространение выводов, полученных из наблюдения

    над одной

    частью явления

    на другую ее часть,

    то есть

    это определение

    значений функции вне заданного интервала [Xн, Xк]. }

    PROGRAM GIR;

    {$N-}

    USES Crt;

    CONST

    {Максимальное количество узлов}

    Tochka

    {Количество знаков после запятой}

    TYPE

    H, F_up, F_down, eps_pol, eps_tek

    Xpol, Ypol, V

    n, m

    : _INTEGER;

    {n-количество узлов

    : Char;

    {переключатель}

    {----------------------------------------------------------------------------}

    {Расчет табличных данных для заданной функции}

    PROCEDURE TABL_FUNC(Var Xpol, Ypol: _Mas; Var n: _INTEGER; Var dw, eps_pol: _Real);

    P, Rn, Q, wp, wn

    {счетчик

    BEGIN

    Write(\'Сопротивление

    P ............. = \'); ReadLn(P);

    Write(\'Сопротивление нагрузки Rn ...

    = \'); ReadLn(Rn);

    Write(\'Параметр

    Q .................. = \'); ReadLn(Q);

    \', Max_kol:2, \') .....

    = \'); ReadLn(n);

    Write(\'Точность

    eps_pol ............ = \'); ReadLn(eps_pol);

    {расчет функции в узлах}

    FOR I:= 1 TO (n+1) DO

    begin

    END;

    {------------------------------------------------------}

    {Ввод значений аппроксимируемой функции}

    PROCEDURE VVOD_TABL(Var Xpol, Ypol: _Mas; Var n: _INTEGER; Var dw, eps_pol: _Real);

    wp, wn

    {счетчик

    BEGIN

    Write(\'Начальный узел

    ............ = \'); ReadLn(wn);

    Write(\'Шаг изменения узла ........ = \'); ReadLn(dw);

    \', Max_kol:2, \') ...

    = \'); ReadLn(n);

    Write(\'Погрешность

    eps .............. = \'); ReadLn(eps_pol);

    {ввод значений функции в узлах}

    WriteLn(\'

    wp:= wn;

    FOR I:= 1 TO n DO

    begin

    {задание

    (n+1)-узла

    END;

    {--------------------------- Конец ПП

    VVOD_TABL ---------------------------}

    {Расчет коэффициентов полинома

    PROCEDURE Kff_pol(X: _Mas; H: _Real; n, m: _INTEGER; Var V: _Mas);

    TYPE

    I, J

    {счетчики}

    {----------------------------------------------------------------------------}

    {рашение матричной системы уравнений, методом \"LU-разложений\"}

    PROCEDURE GVP(G: _Matric; P: _Vector; m: _INTEGER; Var V: _Mas);

    K, I, J

    {счетчики

    L, U

    {вспомогательные

    матрицы}

    {вспомогательный вектор}

    alf, S

    {вспомогательные переменные}

    BEGIN

    {обнуление элементов вспомогательных матриц L и U}

    FOR I:= 1 TO m DO

    For J:= 1 To m Do

    begin

    { L[I, J] = 0, где

    I=1..m, J=1..m

    { U[I, J] = 0, где

    I=1..m, J=1..m

    end;

    {разложение матрицы G на матрицу L и U}

    FOR K:= 1 TO m DO

    begin

    {формирование матрицы

    For I:= K To m Do

    begin

    {накопление суммы элементов в S}

    S:= 0;

    for J:= 1 to (K - 1) do

    begin

    { S = E (L[I, J] * U[J, K]),

    { L[I, K] = G[I, K] - S, где

    k=1..m, i=k..m

    {формирование матрицы U}

    For I:= (K + 1) To m Do

    begin

    {накопление суммы элементов в S}

    S:= 0;

    for J:= 1 to (K - 1) do

    begin

    { S = E (L[K, J] * U[J, I]),

    G[I, K] - S

    { U[K, I] = -------------,

    где

    k=1..m, i=(k+1)..m

    L[K, K]

    end;

    {вычисление вспомогательного вектора SOS}

    FOR K:= 1 TO m DO

    begin

    {накопление суммы элементов в S}

    S:= 0;

    For I:= 1 To (K - 1) Do

    begin

    { S = E (L[K, I] * SOS[I]),

    P[K] - S

    { SOS[K] =

    ----------, где

    k=1..m

    L[K, K]

    {вычисление вектора

    FOR K:= m DOWNTO 1 DO

    begin

    {накопление суммы элементов в S}

    S:= 0;

    For I:= (K + 1) To m Do

    begin

    { S =

    (U[K, I] * V[I]),

    i=k+1

    { V[K] = SOS[K] - S, где

    k=1..m

    {------------------------------ конец ПП

    GVP ------------------------------}

    BEGIN

    {формирование матрицы

    FOR I:= 1 TO m DO

    | X[n+1] - X[n - (m-1)] | (m-1)

    For J:= 1 To m Do

    { G[I, J] = |-----------------------|

    {формирование вектора

    P = [1, 0, 0, 0, ..., 0]}

    {обращение к ПП GVP}

    END;

    {--------------------------- Конец ПП

    Kff_pol -----------------------------}

    {Расчет полинома

    FUNCTION F_pol(V, Y: _Mas; n, m: _INTEGER): _Real;

    {счетчик

    {сумматор

    BEGIN

    END;

    {----------------------------- Конец ПП

    F_pol -----------------------------}

    {Вывод значения функции в (n+1) узле}

    PROCEDURE VIVOD1(Xpol, Ypol, eps_tek: _Real; n, m: _INTEGER);

    BEGIN

    WriteLn(\'Значение функции в

    (n+1) узле

    WriteLn(\'Количество используемых узлов\', m:3, \' из\', n:3);

    END;

    {---------------------------------------------------------}

    {Вывод значения функции в (n+1) узле для тестовой функции}

    PROCEDURE VIVOD2(Xpol, Ypol, eps_tek, Y: _Real; n, m: _INTEGER);

    BEGIN

    Y_полином

    - Y_точное

    { EPS_точное

    = ---------------------- }

    Y_точное

    WriteLn(\'

    Значение функции вузле

    X(n+1)=\', Xpol:Tochka , \' :\');

    WriteLn(\'Y полинома

    ... =\', Ypol:Tochka);

    WriteLn(\'Y точное

    ..... =\', Y:Tochka);

    WriteLn(\'

    WriteLn(\'текущая

    ...... =\', eps_tek:Tochka);

    WriteLn(\'точная

    ....... =\', eps:Tochka);

    WriteLn;

    END;

    {---------------------------------------------------------}

    {основной блок программы}

    BEGIN

    WriteLn(\'

    ExtraPol_GIRA 1.00

    Copyright (c) 1999-00

    WriteLn;

    {Ввод исходных данных}

    {Ввод значений функции в узлах}

    IF (UpCase(Pr) = \'Y\')

    {обращение к ПП

    TABL_FUNC}

    THEN TABL_FUNC(Xpol, Ypol, n, H, eps_pol)

    {обращение к ПП VVOD_TABL}

    ELSE VVOD_TABL(Xpol, Ypol, n, H, eps_pol);

    {итерационный процесс}

    REPEAT

    {обращение к ПП Kff_pol}

    Kff_pol(Xpol, H, n, m, V);

    {обращение к ПФ F_pol}

    F_up:= F_pol(V, Ypol, n, m);

    {точность расчета

    {вывод полученных результатов}

    IF (UpCase(Pr) = \'Y\')

    {обращение к ПП VIVOD2}

    THEN VIVOD2(Xpol[n+1], F_up, eps_tek, Ypol[n+1], n, (m-1))

    {обращение к ПП VIVOD1}

    END.

    {Конец основного блока}

    Язык: Русский

    Скачиваний: 218

    Формат: Text (Plain), TurboPascal

    Размер файла: 3 Кб

    Автор:

    Скачать работу...

    Забрать файл

    Похожие материалы:


ПИШЕМ УНИКАЛЬНЫЕ РАБОТЫ
Заказывайте напрямую у исполнителя!


© 2006-2016 Все права защищены