ВычМат / ВычМат(4)
.docxМИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«КАЗАНСКИЙ (ПРИВОЛЖСКИЙ) ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»
НАБЕРЕЖНОЧЕЛНИНСКИЙ ИНСТИТУТ (ФИЛИАЛ)
КАФЕДРА ИНФОРМАЦИОННЫХ СИСТЕМ
ЛАБОРАТОРНАЯ РАБОТА №4
«Интерполяционный многочлен Лагранжа»
По дисциплине
«Вычислительная математика»
Выполнил:
Студент группы 2161121
Золотых С.В.
Проверил:
Мингалеева Л.Б.
Набережные Челны
2018
Цель
Табулировать функцию , получить 5 значений. Найти значение функции в точке, находящейся между любыми узлами.
Реализация
-
Табуляция функции (n=5):
-
Нахождение ИМЛ сводится в основном к вычислениям по одной формуле, которую, для данного примера, можно изобразить в следующем виде:
-
;
-
;
-
;
При x=1,5:
-
;
Таким образом, подставляя расположенный между узлами функции коэффициент x в полученное уравнение (см. пункт 3), можно найти значение функции.
Реализация в Excel
Формулы:
Реализация на C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ИМЛ
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
label3.Text = "Введите x в диапазоне [1,5] ";
}
private void button1_Click(object sender, EventArgs e)
{
double[] x = {1,2,3,4,5 };
double[] y = {0.18221188,0.332011692,0.604964746,1.102317638,2.008553692};
try
{
if (Convert.ToDouble(textBox1.Text) <= 5 && Convert.ToDouble(textBox1.Text) >= 1)
label1.Text = "Y(x) = "+Convert.ToString(IML(x, y, Convert.ToDouble(textBox1.Text)));
else
{
MessageBox.Show("Точка задана неверно!");
textBox1.Clear();
}
}
catch(FormatException)
{
MessageBox.Show("Неправильный ввод");
}
}
public double IML(double[] x, double[] y,double X)
{
double Y = 0;
for (int i = 0; i < 5; i++)
{
double basics = 1;
for (int j = 0; j < 5; j++)
{
if (j != i)
{
basics *= (X - x[j]) / (x[i] - x[j]);
}
}
Y += basics * y[i];
}
return Math.Round(Y,3);
}
private void button2_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}
Результат
Для :
Для :
Вывод
Реализовала интерполяционный многочлен Лагранжа, который помогает искать значение функции в нужной точке, не относящейся к узлам. Метод был реализован в Excel, на языке C# и обычным методом. Все результаты в каждой среде одинаковы.