Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ВычМат / ВычМат(4)

.docx
Скачиваний:
5
Добавлен:
31.05.2018
Размер:
193.06 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«КАЗАНСКИЙ (ПРИВОЛЖСКИЙ) ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»

НАБЕРЕЖНОЧЕЛНИНСКИЙ ИНСТИТУТ (ФИЛИАЛ)

КАФЕДРА ИНФОРМАЦИОННЫХ СИСТЕМ

ЛАБОРАТОРНАЯ РАБОТА №4

«Интерполяционный многочлен Лагранжа»

По дисциплине

«Вычислительная математика»

Выполнил:

Студент группы 2161121

Золотых С.В.

Проверил:

Мингалеева Л.Б.

Набережные Челны

2018

Цель

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

Реализация

  1. Табуляция функции (n=5):

  1. Нахождение ИМЛ сводится в основном к вычислениям по одной формуле, которую, для данного примера, можно изобразить в следующем виде:

  1. ;

  1. ;

  1. ;

При x=1,5:

  1. ;

Таким образом, подставляя расположенный между узлами функции коэффициент 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# и обычным методом. Все результаты в каждой среде одинаковы.

Соседние файлы в папке ВычМат