Добавил:
Developer Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа.docx
Скачиваний:
8
Добавлен:
02.01.2024
Размер:
2.27 Mб
Скачать

B.2. Интерполяционная формула Лагранжа второго порядка в явном виде

Для определенного интеграла от многочлена Лагранжа второй степени в явном виде от выбранных узлов: = a, = (a+b)/2. = b . Узлы берем из теста решения ОДУ методом Эйлера.

Аналитическое решение:

Табл. 5

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

Коэффициенты многочлена Лагранжа

Аналитическое решение

Решение, полученное программой

Решение, полученное Scilab

a

1.7494121

b

0.8617858

c

1

1

1.

Исходя из результатов, представленных на таблице 5, можно сделать вывод, что процедура работают правильно.

Вычисление многочлена Лагранжа 2 степени в явном виде, полученное при помощи тестируемых функций, представлено на рисунке 12 .

Рисунок 12 – Нахождение многочлена Лагранжа в явном виде (тест)

Нахождение тестового полинома Лагранжа 2 степени при помощи математического пакета Scilab 6.0.2 представлено ниже:

--> xx=[0 0.25 0.5];

--> yy=[1 1.3247847 1.8682459];

--> xyd=[xx;yy];

--> a=[0;0;0];

--> //Функция для вычисления коэффициентов квадратичного полинома Лагранжа

--> function [z]=R2(a,xyd)

> z=xyd(2)-a(1)-a(2)*xyd(1)-a(3)*xyd(1)^2

> endfunction

--> //Получение коэффициентов квадратичного полинома Лагранжа

--> [a]=datafit(R2,xyd,a)

a =

1.

0.8617858

1.7494121

--> //Запись в явном виде

--> function [r]=ip2(x)

> r=1.7494121*x^2+0.8617858*x+1

> endfunction

--> //Проверка правильности нахождения полинома Лагранжа 2 степени

--> // должно быть, полное совпадение в узлах интерполяции

--> ip2(0)

ans =

1.

--> ip2(0.25)

ans =

1.3247847

--> ip2(0.5)

ans =

1.8682459

Схема алгоритма процедуры, реализующей формулу Лагранжа в явном виде, представлена на рисунках 13

Рисунок 13 – Схема алгоритма процедуры Lagrange_polynom

Код тестируемого модуля.

Option Strict On

Option Explicit On

Imports System.Math

Module Module3

' Процедура получения полинома Лагранжа в явном виде

Sub Lagrange_polynom(ByRef xm() As Double, ByRef ym() As Double, ByRef a As Double, ByRef b As Double, ByRef c As Double)

Dim t As String

a = ym(0) / ((xm(0) - xm(5)) * (xm(0) - xm(10))) + ym(5) / ((xm(5) - xm(0)) * (xm(5) - xm(10))) + ym(10) / ((xm(10) - xm(0)) * (xm(10) - xm(5)))

b = (ym(0) * (-1) * (xm(5) + xm(10))) / (xm(0) - xm(5) * (xm(0) - xm(10))) - (ym(5) * (xm(0) + xm(10))) / ((xm(5) - xm(0)) * (xm(5) - xm(10))) - (ym(10) * (xm(0) + xm(5))) / ((xm(10) - xm(0)) * (xm(10) - xm(5)))

c = (ym(0) * xm(5) * xm(10)) / (xm(0) - xm(5) * (xm(0) - xm(10))) + (ym(5) * xm(0) * xm(10)) / ((xm(5) - xm(0)) * (xm(5) - xm(10))) + (ym(10) * xm(0) * xm(5)) / ((xm(10) - xm(0)) * (xm(10) - xm(5)))

t = Format(a, "0.00000") + "*" + "x^2" + "+" + Format(b, "0.00000") + "*" + "x" + "+" + CStr(c)

Form2.ListBox3.Items.Add(t)

End Sub

End Module