Вход

Интерполяция табличной функции по методу Ньютона

Рекомендуемая категория для самостоятельной подготовки:
Курсовая работа*
Код 123932
Дата создания 2009
Страниц 28
Источников 1
Мы сможем обработать ваш заказ (!) 22 апреля в 12:00 [мск]
Файлы будут доступны для скачивания только после обработки заказа.
2 000руб.
КУПИТЬ

Содержание

Содержание
Содержание
Задание на курсовую работу.
Интерполяция по Ньютону
Разработка алгоритма решения задачи.
Организация ввода и вывода данных.
Организация контроля ошибочных действий пользователя.
Список литературы.
Приложение 1. Текст кода программы.
Приложение 2. Руководство пользователя программы.

Фрагмент работы для ознакомления

btnSelFileClick(Sender: TObject);
begin
dgrdMain.Options := dgrdMain.Options - [goEditing];
edtCount.Enabled := false;
btnFileName.Enabled:= true;
edtFilename.Enabled := true;
btnLoad.Enabled := true;
end;
procedure TfrmMain.edtCountExit(Sender: TObject);
var j,i:integer;
begin
i:=StrToIntDef(edtCount.Text,0);
if (i<3) then
begin
ShowMessage('Количество узлов в сетке не может быть меньше 3');
edtCount.SetFocus;
exit;
end
else
begin
for j := dgrdMain.RowCount to i do
begin
dgrdMain.Cells[0,j] := InttoStr(j);
dgrdMain.Cells[1,j] := '';
dgrdMain.Cells[2,j] := '';
end;
dgrdMain.RowCount := i+1;
end;
end;
procedure TfrmMain.btnCalculateClick(Sender: TObject);
var
f : TextFile;
n:integer;
minx,miny,maxx,maxy,dx,dy,tx:real;
x,y:real;
i,j: Integer;
ix,iy:integer;
flag:boolean;
rct:TRect;
// Функции пересчёта из вещественных координат в экранные
function CalcIX(const X:real):integer;
begin
Result :=Round((x - minx)*dx);
end;
function CalcIY(const Y:real):integer;
begin
Result :=Round((maxy - y)*dy);
end;
begin
N:= dgrdMain.RowCount-1;
pln.Clear;
for I := 1 to N do
try
j:=1;
x := StrToFloat(dgrdMain.Cells[j,I]);
j:=2;
y := StrToFloat(dgrdMain.Cells[j,I]);
pln.Add(x,y);
if (i=1) then
begin
minx := x;
maxx := x;
miny := y;
maxy := y;
end
else
begin
if (x < minx) then minx := x;
if (x > maxx) then maxx := x;
if (y < miny) then miny := y;
if (y > maxy) then maxy := y;
end
except
ShowMessage (Format('Ошибка в исходных данных Строка %d Столбец %d',[I,j]));
exit;
end;
if not pln.CalculateDelta(i,j)
then
begin
ShowMessage (Format('Ошибка в исходных данных Разность x%d и x%d нулевая',[I,j]));
exit;
end;
// Строим график
x := minx;
if (minx < maxx) and (miny < maxy) then
begin
// Считаем коээффициенты
dx := imgWork.Width/(maxx - minx);
tx := 1/(maxx - minx);
dy := imgWork.Height/(maxy - miny);
y := pln.CalculateY(x,flag);
ix := CalcIX(x);
iy := CalcIY(y);
rct.Left:=0;
rct.Top:=0;
rct.Right:=imgWork.Width;
rct.Bottom:=imgWork.Height;
imgWork.Canvas.FillRect(rct);
imgWork.Canvas.MoveTo(ix,iy);
while (x < maxx) do
begin
x :=x + tx;
y := pln.CalculateY(x,flag);
ix := CalcIX(x);
iy := CalcIY(y);
imgWork.Canvas.LineTo(ix,iy);
end;
end;
for I := 1 to N do
begin
ix := CalcIX(pln.GetNode(i-1).x);
iy := CalcIY(pln.GetNode(i-1).y);
imgWork.Canvas.Rectangle(ix-5,iy-5,ix+5,iy+5);
end;
end;
procedure TfrmMain.btnClearClick(Sender: TObject);
var j:integer;
rct:TRect;
begin
edtCount.Text := '3';
edtFilename.Text := '';
dgrdMain.RowCount := 4;
pln.Clear;
for j := dgrdMain.RowCount-1 downto 1 do
begin
dgrdMain.Cells[0,j] := InttoStr(j);
dgrdMain.Cells[1,j] := '';
dgrdMain.Cells[2,j] := '';
end;
rct.Left:=0;
rct.Top:=0;
rct.Right:=imgWork.Width;
rct.Bottom:=imgWork.Height;
imgWork.Canvas.FillRect(rct);
end;
procedure TfrmMain.btnExitClick(Sender: TObject);
begin
Close;
end;
procedure TfrmMain.FormCreate(Sender: TObject);
begin
pln := TPolyNome.Create;
dgrdMain.ColCount := 3;
btnClearClick(Sender);
dgrdMain.FixedRows := 1;
dgrdMain.Cells[0,0] := 'i';
dgrdMain.Cells[1,0] := 'Xi';
dgrdMain.Cells[2,0] := 'Yi';
end;
procedure TfrmMain.FormDestroy(Sender: TObject);
begin
pln.Free;
end;
end.
Приложение 2. Руководство пользователя программы.
Порядок работы с программой
Выбрать способ ввода исходных данных переключением радиокнопок:
Из файла
Непосредственный ввод
Если выбран способ “Из файла”, то далее следует ввести имя файла в поле ввода имени файла, или выбрать файл с помощью кнопки “…”
После ввода имени файла, следует нажать кнопку “Загрузка”, чтобы загрузить данные из файла в программу.
Если выбран способ “Непосредственный ввод”, то далее следует ввести количество узлов табличной функции в поле “количество узлов сетки”. Количество узлов не должно быть меньше 3.
После ввода количества узлов, нужно ввести данные узлов в сетку данных, причём во второй столбец следует вводить Xi, а в третий – Yi.
После ввода данных любым способом, для отображения графика нужно нажать кнопку “Расчёт”.
Для очистки графика и вода новых данных нужно нажать кнопку “Очистить”
Для выхода из программы нужно нажать кнопку “Выход”
(1) Формалев В. Ф., Ревизников Д. Л. Численные методы. – Москва: ФИЗМАТЛИТ, 2004. с 106
28

Список литературы [ всего 1]

Список литературы.
1.Формалев В. Ф., Ревизников Д. Л. Численные методы. – Москва: ФИЗМАТЛИТ, 2004. - 400 с.
Очень похожие работы
Пожалуйста, внимательно изучайте содержание и фрагменты работы. Деньги за приобретённые готовые работы по причине несоответствия данной работы вашим требованиям или её уникальности не возвращаются.
* Категория работы носит оценочный характер в соответствии с качественными и количественными параметрами предоставляемого материала. Данный материал ни целиком, ни любая из его частей не является готовым научным трудом, выпускной квалификационной работой, научным докладом или иной работой, предусмотренной государственной системой научной аттестации или необходимой для прохождения промежуточной или итоговой аттестации. Данный материал представляет собой субъективный результат обработки, структурирования и форматирования собранной его автором информации и предназначен, прежде всего, для использования в качестве источника для самостоятельной подготовки работы указанной тематики.
bmt: 0.00422
© Рефератбанк, 2002 - 2024