
5. Руководство пользователя
После запуска программы на вашем экране появилось окно, на котором есть область для ввода функции, поля для выбора отрезка [a;b] в переделах которого находятся точки x0 ,…, xn,поле для ввода переменной x и поле для ввода числа точек интерполяции.
· Введите функцию, с помощью которой будет вычисляться значение функции для каждой точки xi. Введите границы отрезка [a;b] в переделах которого находятся точки x0 ,…, xn,что позволяет повысить точность итерации. Далее введите значение переменной x и число точек интерполяции.
· Нажмите кнопку “Вычислить интерполяционный полином”.
· В области результат появится значение интерполяционного полинома.
· Для выхода из программы нажмите в меню “Файл” затем “выход”.
· Для получения справки по использованию программы или сведений о программе зайдите в меню “Помощь”.
· Для просмотра основного кода программы зайдите в меню “Текст программы”
6. Тестирование
Запускаем программу и заполняем пустые поля.
. Жмем кнопку ”Вычислить интерполяционный полином” и в области “Результат” получаем значение интерполяционного полинома.
(P.S. Более подробная информация по использованию программы находится в программе в разделе “Помощь - справка”)
Математическое решение
1) По методу Чебышева найдем 3 наиболее подходящих значения xi на интервале [1;2].
Следовательно
В
данном случае
,
,
Получим все функции в зависимости от переменной xi.
,
,
2) Найдем значение интерполяционного полином Лагранжа.
В ходе решения интерполирующего полинома было получено значение 18, что соответствует результату выполнения программы.
Приложение
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Edit1: TEdit;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Button10: TButton;
Button11: TButton;
Button12: TButton;
Button13: TButton;
Button14: TButton;
Button15: TButton;
Button16: TButton;
Button17: TButton;
Button18: TButton;
Button19: TButton;
Button20: TButton;
Button21: TButton;
Button22: TButton;
Button23: TButton;
Button24: TButton;
Button25: TButton;
Button26: TButton;
Button27: TButton;
Button28: TButton;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button13Click(Sender: TObject);
procedure Button15Click(Sender: TObject);
procedure Button14Click(Sender: TObject);
procedure Button16Click(Sender: TObject);
procedure Button17Click(Sender: TObject);
procedure Button18Click(Sender: TObject);
procedure Button19Click(Sender: TObject);
procedure Button20Click(Sender: TObject);
procedure Button21Click(Sender: TObject);
procedure Button22Click(Sender: TObject);
procedure Button23Click(Sender: TObject);
procedure Button24Click(Sender: TObject);
procedure Button25Click(Sender: TObject);
procedure Button26Click(Sender: TObject);
procedure Button27Click(Sender: TObject);
procedure Button28Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
oper:byte;
a:real;
b:real;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
a:=strtofloat(edit1.Text);
edit1.Text:='';
oper:=1;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
a:=strtofloat(edit1.Text);
Edit1.Text:='';
oper:=2;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
a:=strtofloat(edit1.Text);
edit1.Text:='';
oper:=3;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
a:=strtofloat(edit1.Text);
edit1.Text:='';
oper:=4;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+inttostr(1);
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+inttostr(2);
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+inttostr(3);
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+inttostr(4);
end;
procedure TForm1.Button9Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+inttostr(5);
end;
procedure TForm1.Button10Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+inttostr(6);
end;
procedure TForm1.Button11Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+inttostr(7);
end;
procedure TForm1.Button12Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+inttostr(8);
end;
procedure TForm1.Button13Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+inttostr(9);
end;
procedure TForm1.Button15Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+inttostr(0);
end;
procedure TForm1.Button14Click(Sender: TObject);
var r:real;
begin
b:=strtofloat(edit1.Text);
if oper=1 then
begin
r:=a*b;
Edit1.Text:=floattostr(r);
end;
if oper=2 then
begin
if (b<>0) then
begin r:=a/b; Edit1.Text:=floattostr(r); end else
ShowMessage('На 0 делить нельзя');
end;
if oper=3 then
begin
r:=a+b;
Edit1.Text:=floattostr(r);
end;
if oper=4 then
begin
r:=a-b;
Edit1.Text:=floattostr(r);
end;
if oper=5 then
begin
r:=exp(b*ln(a));
Edit1.Text:=floattostr(r);
end;
end;
procedure TForm1.Button16Click(Sender: TObject);
begin
edit1.Text:='';
end;
procedure TForm1.Button17Click(Sender: TObject);
var r:real; f:real;
begin
a:=strtofloat(edit1.Text);
f:=a*3.14159265359/180 ;
r:=sin(f);
Edit1.Text:=floattostr(r);
end;
procedure TForm1.Button18Click(Sender: TObject);
var r:real; f:real;
begin
a:=strtofloat(edit1.Text);
f:=a*3.14159265359/180 ;
r:=cos(f);
Edit1.Text:=floattostr(r);
end;
procedure TForm1.Button19Click(Sender: TObject);
var r:real; f:real; n:longint;
begin
a:=strtofloat(edit1.Text);
f:=a*3.14159265359/180 ;
if (f<>180/2+180*n) then
begin r:=sin(f)/cos(f); Edit1.Text:=floattostr(r); end else
ShowMessage('Невозможно определить');
end;
procedure TForm1.Button20Click(Sender: TObject);
var r:real; f:real; n:longint;
begin
a:=strtofloat(edit1.Text);
f:=a*3.14159265359/180 ;
if (f<>180*n) then
begin r:=cos(f)/sin(f); Edit1.Text:=floattostr(r); end else
ShowMessage('Невозможно определить');
end;
procedure TForm1.Button21Click(Sender: TObject);
Var i:integer; factorial:longint; n:byte;
begin
n:=strToInt (edit1.Text);
factorial:=1;
For i:=1 to n do
Factorial:=factorial*i;
edit1.Text:=floattostr(factorial);
end;
procedure TForm1.Button22Click(Sender: TObject);
var r:real;
begin
a:=strtofloat(edit1.Text);
r:=a*a;
edit1.Text:=floattostr(r);
end;
procedure TForm1.Button23Click(Sender: TObject);
begin
b:=3.14159265359;
edit1.Text:=floattostr(b);
end;
procedure TForm1.Button24Click(Sender: TObject);
var r:real;
begin
a:=strtofloat(edit1.Text);
r:=a*a*a;
edit1.Text:=floattostr(r);
end;
procedure TForm1.Button25Click(Sender: TObject);
begin
a:=strtofloat(edit1.Text);
edit1.Text:='';
oper:=5;
end;
procedure TForm1.Button26Click(Sender: TObject);
var r:real;
begin
a:=strtofloat(edit1.Text);
if a>=0 then begin
r:=sqrt(a);
edit1.Text:=floattostr(r);
end else begin
ShowMessage('Корень из отрицательного числа извлечь нельзя');
end;
end;
procedure TForm1.Button27Click(Sender: TObject);
var r:real;
begin
a:=strtofloat(edit1.Text);
if a>0 then begin
r:=ln(a); edit1.Text:=floattostr(r)end else
ShowMessage('ln при x<=0 неопределён');
end;
procedure TForm1.Button28Click(Sender: TObject);
var r:real;
begin
a:=strtofloat(edit1.Text);
if (a<>0) then begin
r:=1/a; Edit1.Text:=floattostr(r); end else
ShowMessage('На 0 делить нельзя');
end;
end.
Заключение
математический численный интерполяционный полином \
В курсовой работе я рассмотрел разработку и реализацию численных алгоритмов. Реализовал алгоритм помогающий найти полиномиальную интерполяцию методом Лагранжа. Данный алгоритм написан на языке Microsoft Visual C# 2005 Express Edition. Я использовал язык C# так как он очень удобный в обращение. Он превосходит по некоторым параметрам функциональности другой язык программирования, как Delphi, потому что:
-есть ряд функций облегчающих работу программиста такие как split и foreach;
-есть возможность ограничения доступа к полям в структурах, что не мало важно;
-есть составные операторы такие как +=,-=,*=, /=,++,--.
И, конечно, что не мало важно есть недостатки - в C# существуют некоторые функции, которые записываются в достаточно длинной форме, что имеет существенное значение при написание очень длинных программ.