Контрольный пример для файла-функции
Пусть определены следующие входные параметры:
X = [0 1 2 3 4 5 6 7 8];
Y = [0 1 4 9 16 25 36 49 64];
X_inp =[5.5 8.5];
flag=0;
Программа, запущенная по листингу программы для файла-функции, приведенному в приложении А, выдает нам такие данные:
X_out=[5.5 8.5];
Y_out=[ 30.25 72.25];
Полученные данные соответствуют действительности.
Результат выполнения программы представлен на рисунке 8.1.
Рисунок 8.1 – Результат выполнения программы для файла-функции
Контрольный пример для GUI
Пусть определены следующие входные параметры:
X = [0 1 2 3 4 5 6 7 8];
Y = [0 1 4 9 16 25 36 49 64];
X_inp =[5.5 8.5];
flag=0;
Программа, запущенная по листингу программы для GUI, приведенному в приложении Б, выдает нам такие данные:
X_out=[5.5 8.5];
Y_out=[ 30.25 72.25];
Полученные данные соответствуют действительности.
Результат выполнения программы представлен на рисунке 8.2.
Рисунок 8.2 – Результат выполнения программы для GUI
ЗАКЛЮЧЕНИЕ
При выполнении курсового проекта была создана файл-функция inter.sci, написанная на языке программирования Scilab, которая выполняет интерполяцию заданной функции двумя методами: Лагранжа и Ньютона. Создан дружественный пользовательский GUI с вводом необходимой информации вручную и вводом данных из файла. В работе использована двумерная машинная графика для разработки графического интерфейса пользователя. Интерфейс программы удобен и элементарно прост в обращении даже для тех, кто в первый раз имеет дело с подобным типом программ.
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. Павлова М.И. Руководство по работе с пакетом SCILAB./ М.И. Павлова. – СПб.: БХВ-Петербург, 2004. – 209 с.
2. Беллман, Р. Введение в теорию интерполирования: Пер. с англ./ Р. Беллман – М.: Наука, 1969. – 368 с.
3. Голуб, Дж. Методы интерполяционных вычислений: Пер. с англ./Дж. Голуб, Ч. Ван Лоун – М.:Мир, 1999. – 548 с.
ПРИЛОЖЕНИЕ А
Листинг программы inter ()
//Функция для интерполирования таблично заданной функции по формуле Лагранжа и по первой интерполяционной формуле Ньютона
//Разработчики: Зырянов П.Б., Абжуев О.Д., ПС-204
//Версия: 1.0, 2012
//Входные данные функции inter():
//Массив действительных чисел X – значения аргумента;
//Массив действительных чисел Y – значения функции в точках X;
//Целочисленная переменная flag– выбор формулы интерполяции;
//Массив действительных чисел X_inp – значения аргумента, в которых необходимо произвести интерполяцию.
//Выходные данные функции inter():
//Массив действительных чисел Х_out – значения аргумента, в которых производилась интерполяция.
//Массив действительных чисел Y_out – значения интерполированной функции при заданных значениях аргумента.
function [X_out, Y_out]=inter(X, Y, X_inp, flag)
X_out=X_inp;
n=size(X);
N=n(2);//Размер матрицы X
m=size(X_inp);
M=m(2);//Размер матрицы X_inp
Y_out=zeros(1, M);//матрица ответов
// Проверка флага
if (flag==0) then //Применяем формулу Лагранжа
for i=1:M
Y_out(1, i)=0;
for j=1:N
L1=1;
L2=1;
for k=1:j-1
L1=L1*((X_inp(i)-X(k))/(X(j)-X(k)));
end
for k=j+1:N
L2=L2*((X_inp(i)-X(k))/(X(j)-X(k)));
end
Y_out(1, i)=Y_out(1, i)+L1*L2*Y(j);
end
end
else //Применяем формулу Ньютона
D=N-1;
//Цикл подсчета матрицы конечных разностей d
for i=1:D
d(i,1)=Y(i+1)-Y(i);
end
for i=2:D
for j=1:D-i+1
d(j,i)=d(j+1, i-1)-d(j, i-1);
end
end
//Вычисление корней
for i=1:M
Y_out(1, i)=Y(1);
for ii=1:D
k(i, ii)=1;
for jj=1:ii
k(i, ii)=k(i, ii)*(X_inp(i)-X(jj));
end
Y_out(1, i)=Y_out(1, i)+(d(1, ii)*k(i, ii)/(factorial(ii)*((X(2)-X(1))^ii)));
end
end
end
endfunction
ПРИЛОЖЕНИЕ Б
Листинг программы gui()
clear; clc; x=0; xinp=0; y=0; x0=0; n=0; h=0; i=1; yout=0; j0=1; j1=1; j2=1; j3=1;
// Create a figure
f = figure("figure_name", "Интерполирование",...
"Position",[50 50 900 400],...
"BackgroundColor",[1.0 1.0 1.0],...
"Tag", "uicontrols_demo_figure");
// Remove Scilab 'standard' menus
delmenu(f.figure_id, gettext("&File"));
delmenu(f.figure_id, gettext("&Tools"));
delmenu(f.figure_id, gettext("&Edit"));
delmenu(f.figure_id, gettext("&?"));
// Disable graphics toolbar
toolbar(f.figure_id, "off");
// Adjust figure size after toolbar removing
//f.position = [50 50 300 260];
function getf(a)
//Открываем файл справки
if a==1 then winopen('help.pdf'); end
if a==2 then fname=uigetfile(["*.txt"]); set(edit_frame_title_80, 'string', fname); end
//Загружаем X, Y
endfunction
function about_pr()
messagebox(['Программа:' 'Интерполирование' 'Версия 1.0.0' 'Авторы: Абжуев О., Зырянов П.'], 'О программе');
endfunction
function close_uicontrols_demo()
delete(findobj("Tag", "uicontrols_demo_figure"));
endfunction
function exit_scilab()
msg = gettext("Do you really want to quit Scilab?");
answ = messagebox(msg, gettext("Quit Scilab"), "quextion", [gettext("Yes") gettext("No")], "modal");
if answ==1 then
exit;
end
endfunction
//Создание меню
appli_menu = uimenu("Parent", f, "Label", "Файл");
open_menu = uimenu("Parent", appli_menu, "Label", "Открыть из файла", "callback", "");
save_menu = uimenu("Parent", appli_menu, "Label", "Сохранить в файл", "callback", "");
close_menu = uimenu("Parent", appli_menu, "Label", gettext("Exit figure"), "callback", "close_uicontrols_demo()");
quit_menu = uimenu("Parent", appli_menu, "Label", gettext("Quit Scilab"), "callback", "exit_scilab()");
help_menu = uimenu("Parent", f, "Label", "Справка");
helpbox_menu = uimenu("Parent", help_menu, "Label", "Справка", "callback", "getf(1)");
about_menu = uimenu("Parent", help_menu, "Label", "О программе", "callback", "about_pr()");
//Создание интерфейса
//Фрейм заголовка выбора формулы для интерполирования
edit_frame_1 = uicontrol(f, "Position", [10 325 320 70], ...
"Style", "frame", ...
"BackgroundColor", [1.0 1.0 1.0]);
edit_frame_title_1 = uicontrol(f, "Position", [10 395 320 20], ...
"Style", "text",...
"String", "Выбор формулы для интерполирования:",...
"BackgroundColor", [1 1 1], "Relief", "ridge", "HorizontalAlignment", "center");
//Радиокнопки для выбора формулы
//Формула Лагранжа
radio_lag=uicontrol(f, 'style','radiobutton','string',...
'Формула Лагранжа',"BackgroundColor", [1.0 1.0 1.0], 'value',1,'position',...
[20,360,300,20], 'tag', 'lag', "callback", "gui_lag()");
//Формула Ньютона
radio_new=uicontrol(f, 'style','radiobutton','string',...
'Первая формула Ньютона',"BackgroundColor", [1.0 1.0 1.0], 'value',0,'position',...
[20,340,300,20], 'tag', 'new', "callback", "gui_new()");
//Фрейм для выбора способа ввода данных
edit_frame_title_10 = uicontrol(f, "Position", [10 305 320 20], ...
"Style", "text",...
"String", "Ввод значений:",...
"BackgroundColor", [1.0 1.0 1.0], "Relief", "ridge", "HorizontalAlignment", "center");
edit_frame_11 = uicontrol(f, "Position", [10 235 320 70], ...
"Style", "frame", ...
"BackgroundColor", [1.0 1.0 1.0]);
//Радиокнопка для ввода значений с клавиатуры
radio_kb=uicontrol(f,'style','radiobutton','string',...
'Ввод данных',"BackgroundColor", [1.0 1.0 1.0], 'value',1,'position',...
[20,267,300,20], "tag", "rkb", "callback", "enter_kb()");
//Радиокнопка для ввода значений из файла
radio_lf=uicontrol(f,'style','radiobutton','string',...
'Загрузить из файла',"BackgroundColor", [1.0 1.0 1.0], 'value',0,'position',...
[20,247,300,20], "tag", "rlf", "callback", "enter_lf()");
//Фрейм заголовка графика
edit_frame_title_20 = uicontrol(f, "Position", edit_frame_title_1.position+[490 0 0 0], ...
"Style", "text",...
"String", "График:",...
"BackgroundColor", [1 1 1], "Relief", "ridge", "HorizontalAlignment", "center");
//Фрейм для графика
//edit_frame_21 = uicontrol(f, "Position", [355 107 520 285], ...
// "Style", "frame", ...
// "BackgroundColor", [1.0 1.0 1.0]);
//Фрейм для ответа
edit_frame_title_30 = uicontrol(f, "Position", [355 85 300 20], ...
"Style", "text",...
"String", "Ответ:",...
"BackgroundColor", [1 1 1],"Relief", "ridge", "HorizontalAlignment", "center");
edit_frame_title_31 = uicontrol(f, "Position", [670 85 20 20], ...
"Style", "text",...
"String", "1:",...
"BackgroundColor", [1 1 1], "tag", "text30");
edit_frame_title_32 = uicontrol(f, "Position", [690 85 25 20], ...
"Style", "text",...
"String", "х=",...
"BackgroundColor", [1 1 1], "Relief", "ridge", "HorizontalAlignment", "center");
edit_frame_title_33 = uicontrol(f, "Position", [714 85 60 20], ...
"Style", "text",...
"String", "х",...
"BackgroundColor", [1 1 1], "Relief", "ridge", "HorizontalAlignment", "left");
edit_frame_title_34 = uicontrol(f, "Position", [791 85 25 20], ...
"Style", "text",...
"String", "у=",...
"BackgroundColor", [1 1 1], "Relief", "ridge", "HorizontalAlignment", "center");
edit_frame_title_35 = uicontrol(f, "Position", [815 85 60 20], ...
"Style", "text",...
"String", "у",...
"BackgroundColor", [1 1 1], "Relief", "ridge", "HorizontalAlignment", "left");
edit_frame_title_36 = uicontrol(f, "Position", [355 60 300 20], ...
"Style", "text",...
"String", "Сохранить в файл:",...
"BackgroundColor", [1 1 1], "Relief", "ridge", "HorizontalAlignment", "center");
theslider_30 = uicontrol(f, "Position", [670 60 205 20], ...
"Style", "slider", ...
"Min", 1, ...
"Max", 50, ...
"Value", 0, ...
"SliderStep", [1 10], ...
"Tag", "slider30", ...
"Callback", "slider_update(1, j0, j1, j2, j3, x, y, xinp);", "Relief", "ridge");
edit_frame_title_37 = uicontrol(f, "Position", [355 35 450 20], ...
"Style", "text",...
"String", "Путь к файлу",...
"BackgroundColor", [1 1 1], "Relief", "ridge", "HorizontalAlignment", "left");
disp_button_30 = uicontrol(f, "Position", [817 35 62 21], ...
"Style", "pushbutton", "BackgroundColor", [0.95 0.95 0.95],...
"FontSize", 11, ...
"String", "Обзор", ...
"callback", "getf()");
//Основной фрейм для ввода значений
edit_frame_0 = uicontrol(f, "Position", [10 75 320 160], ...
"Style", "frame", ...
"BackgroundColor", [1.0 1.0 1.0]);
//Кнопка "Интерполировать"
disp_button_0 = uicontrol(f, "Position", [65 40 200 25], ...
"Style", "pushbutton", "BackgroundColor", [0.95 0.95 0.95],...
"FontSize", 11, ...
"String", "Интерполировать", ...
"callback", "yout=inter1(x, y, xinp, i)");
//Фрейм "Значения аргумента для расчета"
edit_frame_title_40 = uicontrol(f, "Position", [10 155 320 20], ...
"Style", "text",...
"String", "Значения аргумента для рассчета",...
"BackgroundColor", [1 1 1], "Relief", "ridge", "HorizontalAlignment", "center");
//Фрейм номера вводимого значения аргумента для интерполирования
edit_frame_title_50 = uicontrol(f, "Position", [20 115 15 20], ...
"Style", "text",...
"String", "1:",...
"BackgroundColor", [1.0 1.0 1.0], "HorizontalAlignment", "center", "Tag", "text70");
//Фрейм ввода X_inp
edit_frame_title_50 = uicontrol(f, "Position", [35 115 25 20], ...
"Style", "text",...
"String", "х=",...
"BackgroundColor", [1.0 1.0 1.0], "Relief", "ridge", "HorizontalAlignment", "center");
x_out_edit = uicontrol(f, "Position", [60 115 60 20], ...
"Style", "edit", ...
"FontSize", 11, ...
"String", "1", ...
"BackgroundColor", [0.95 0.95 0.95], ...
"Tag", "x_out");
//Фрейм вывода Y_out
edit_frame_title_60 = uicontrol(f, "Position", [130 115 25 20], ...
"Style", "text",...
"String", "y=",...
"BackgroundColor", [1.0 1.0 1.0], "Relief", "ridge", "HorizontalAlignment", "center");
y_out_edit = uicontrol(f, "Position", [155 115 60 20], ...
"Style", "text",...
"String", "y",...
"BackgroundColor", [0.95 0.95 0.95], "Relief", "ridge", "HorizontalAlignment", "center" );
//Кнопка "ОК" для ввода X_inp
disp_button_70 = uicontrol(f, "Position", [220 115 100 22], ...
"Style", "pushbutton", "BackgroundColor", [0.95 0.95 0.95],...
"FontSize", 11, ...
"String", "OK", ...
"callback", "[j0, xinp]=vvod(xinp, j0)", "tag", "d70");
disp_button_111 = uicontrol(f, "Position", [220 205 100 22], ...
"Style", "pushbutton", "BackgroundColor", [0.95 0.95 0.95],...
"FontSize", 11, ...
"String", "OK", ...
"callback", "[j3, y]=vvod3(x0, h, n, y, i, j3)", "visible", "off", "tag", "d111");
//Слайдер
theslider_70 = uicontrol(f, "Position", [20 87 300 20], ...
"Style", "slider", ...
"Min", 1, ...
"Max", 50, ...
"Value", 0, ...
"SliderStep", [1 10], ...
"Tag", "slider70", ...
"Callback", "slider_update(2, j0, j1, j2, j3, x, y, xinp);", "Relief", "ridge");
//Интерфейс ввода из файла
edit_frame_title_80 = uicontrol(f, "Position", [20 205 300 20], ...
"Style", "edit",...
"String", "Путь к файлу",...
"BackgroundColor", [1 1 1], "Relief", "ridge", "HorizontalAlignment", "left", "visible", "off", "tag", "ff1");
disp_button_80 = uicontrol(f, "Position", [20 180 235 20], ...
"Style", "pushbutton", "BackgroundColor", [0.95 0.95 0.95],...
"FontSize", 11, ...
"String", "Обзор", ...
"callback", "getf(2)", "visible", "off", "tag", "ff2");
disp_button_81 = uicontrol(f, "Position", [260 180 60 20], ...
"Style", "pushbutton", "BackgroundColor", [0.95 0.95 0.95],...
"FontSize", 11, ...
"String", "ОК", ...
"callback", "", "visible", "off", "tag", "ff3");
//Интерфейс ввода с клавиатуры значений X и Y
//Фрейм номера
edit_frame_title_90 = uicontrol(f, "Position", [20 205 15 20], ...
"Style", "text",...
"String", "0",...
"BackgroundColor", [1.0 1.0 1.0], "tag", "kb1");
//Фрейм X
edit_frame_title_91 = uicontrol(f, "Position", [35 205 25 20], ...
"Style", "text",...
"String", "х=",...
"BackgroundColor", [1.0 1.0 1.0], "Relief", "ridge", "HorizontalAlignment", "center", "tag", "kb2");
x_edit = uicontrol(f, "Position", [60 205 60 20], ...
"Style", "edit", ...
"FontSize", 11, ...
"String", "1", ...
"BackgroundColor", [0.95 0.95 0.95], ...
"tag", "kb3");
//Вывод x0 при вводе с клав-ы по формуле Лагранжа
x10_edit = uicontrol(f, "Position", [60 205 60 20], ...
"Style", "text", ...
"FontSize", 11, ...
"String", "", ...
"BackgroundColor", [0.95 0.95 0.95], ...
"tag", "kb10", "visible", "off", "Relief", "ridge", "HorizontalAlignment", "center");
//Фрейм Y
edit_frame_title_92 = uicontrol(f, "Position", [130 205 25 20], ...
"Style", "text",...
"String", "y=",...
"BackgroundColor", [1.0 1.0 1.0], "Relief", "ridge", "HorizontalAlignment", "center", "tag", "kb4");
y_edit = uicontrol(f, "Position", [155 205 60 20], ...
"Style", "edit", ...
"FontSize", 11, ...
"String", "1", ...
"BackgroundColor", [0.95 0.95 0.95], ...
"tag", "kb5");
//Кнопка "ОК"
disp_button_90 = uicontrol(f, "Position", [220 205 100 22], ...
"Style", "pushbutton", "BackgroundColor", [0.95 0.95 0.95],...
"FontSize", 11, ...
"String", "OK", ...
"callback", "[j1, x, y]=vvod1(x, y, j3)", "tag", "kb6");
//Слайдер
theslider_90 = uicontrol(f, "Position", [20 180 300 20], ...
"Style", "slider", ...
"Min", 1, ...
"Max", 50, ...
"Value", 0, ...
"SliderStep", [1 10], ...
"Callback", "slider_update(3, j0, j1, j2, j3, x, y, xinp);", "Relief", "ridge", "tag", "kb7");
theslider_901 = uicontrol(f, "Position", [20 180 300 20], ...
"Style", "slider", ...
"Min", 1, ...
"Max", 50, ...
"Value", 1, ...
"SliderStep", [1 10], ...
"Callback", "i=slider901_update(n);", "Relief", "ridge", "tag", "901", "visible", "off");
//Интерфейс ввода с клавиатуры X(0), h, n для формулы Ньютона
//Фрейм номера
//Фрейм X(0)
edit_frame_title_100 = uicontrol(f, "Position", [20 190 25 20], ...
"Style", "text",...
"String", "x0=",...
"BackgroundColor", [1.0 1.0 1.0], "Relief", "ridge", "HorizontalAlignment", "center", "visible", "off", "tag", "newtone1");
x0_edit = uicontrol(f, "Position", [45 190 50 20], ...
"Style", "edit", ...
"FontSize", 11, ...
"String", "1", ...
"BackgroundColor", [0.95 0.95 0.95], ...
"Tag", "x0", "visible", "off", "tag", "newtone2");
//Фрейм h
edit_frame_title_102 = uicontrol(f, "Position", [100 190 25 20], ...
"Style", "text",...
"String", "h=",...
"BackgroundColor", [1.0 1.0 1.0], "Relief", "ridge", "HorizontalAlignment", "center", "visible", "off", "tag", "newtone3");
h_out_edit = uicontrol(f, "Position", [125 190 50 20], ...
"Style", "edit", ...
"FontSize", 11, ...
"String", "1", ...
"BackgroundColor", [0.95 0.95 0.95], ...
"Tag", "h", "visible", "off", "tag", "newtone4");
//Фрейм n
edit_frame_title_103 = uicontrol(f, "Position", [180 190 25 20], ...
"Style", "text",...
"String", "n=",...
"BackgroundColor", [1.0 1.0 1.0], "Relief", "ridge", "HorizontalAlignment", "center", "visible", "off", "tag", "newtone5");
n_out_edit = uicontrol(f, "Position", [205 190 50 20], ...
"Style", "edit", ...
"FontSize", 11, ...
"String", "1", ...
"BackgroundColor", [0.95 0.95 0.95], ...
"Tag", "n", "visible", "off", "tag", "newtone6");
//Кнопка "ОК"
disp_button_100 = uicontrol(f, "Position", [260 190 60 22], ...
"Style", "pushbutton", "BackgroundColor", [0.95 0.95 0.95],...
"FontSize", 11, ...
"String", "OK", ...
"callback", "[j2, x, x0, n, h]=vvod2(x0, n, h, j2)", "visible", "off", "tag", "newtone7");
//Функция для смены интерфейса под формулу Лагранжа
function gui_lag()
if get(radio_lag, 'value')==1 then
set(findobj("tag", "new") , "value", 0);
lag1();
lag2();
end
endfunction
//Функция для смены интерфейса под формулу Ньютона
function gui_new()
if get(radio_new, 'value')==1 then
set(findobj("tag", "lag") , "value", 0);
new1();
new2();
end
endfunction
function lag()
lag1();
lag2();
set(findobj("tag", "kb3"), "visible", "off");
set(findobj("tag", "kb10"), "visible", "on");
set(findobj("tag", "kb6"), "visible", "off");
set(findobj("tag", "d111"), "visible", "on");
set(findobj("tag", "kb7"), "visible", "off");
set(findobj("tag", "901"), "visible", "on");
endfunction
//Отключение элементов метода Ньютона
function lag1()
set(findobj("tag", "newtone1") , "visible", 'off');
set(findobj("tag", "newtone2") , "visible", 'off');
set(findobj("tag", "newtone3") , "visible", 'off');
set(findobj("tag", "newtone4") , "visible", 'off');
set(findobj("tag", "newtone5") , "visible", 'off');
set(findobj("tag", "newtone6") , "visible", 'off');
set(findobj("tag", "newtone7") , "visible", 'off');
set(findobj("tag", "d111"),"visible", "off");
set(findobj("tag", "901"), "visible", "off");
ff_off();
endfunction
//Включение элементов метода Лагранжа
function lag2()
set(findobj("tag", "kb1") , "visible", 'on');
set(findobj("tag", "kb2") , "visible", 'on');
set(findobj("tag", "kb3") , "visible", 'on');
set(findobj("tag", "kb4") , "visible", 'on');
set(findobj("tag", "kb5") , "visible", 'on');
set(findobj("tag", "kb6") , "visible", 'on');
set(findobj("tag", "kb7") , "visible", 'on');
set(findobj("tag", "d111"),"visible", "off");
set(findobj("tag", "901"), "visible", "off");
ff_off();
endfunction
//Включение элементов метода Ньютона
function new1()
set(findobj("tag", "newtone1") , "visible", 'on');
set(findobj("tag", "newtone2") , "visible", 'on');
set(findobj("tag", "newtone3") , "visible", 'on');
set(findobj("tag", "newtone4") , "visible", 'on');
set(findobj("tag", "newtone5") , "visible", 'on');
set(findobj("tag", "newtone6") , "visible", 'on');
set(findobj("tag", "newtone7") , "visible", 'on');
set(findobj("tag", "d111"),"visible", "off");
set(findobj("tag", "901"), "visible", "off");
ff_off();
endfunction
//Отключение элементов метода Лагранжа
function new2()
set(findobj("tag", "kb1") , "visible", 'off');
set(findobj("tag", "kb2") , "visible", 'off');
set(findobj("tag", "kb3") , "visible", 'off');
set(findobj("tag", "kb4") , "visible", 'off');
set(findobj("tag", "kb5") , "visible", 'off');
set(findobj("tag", "kb6") , "visible", 'off');
set(findobj("tag", "kb7") , "visible", 'off');
ff_off();
endfunction
//Включение элементов ввода с клавиатуры
function ff()
set(findobj("tag", "ff1") , "visible", 'on');
set(findobj("tag", "ff2") , "visible", 'on');
set(findobj("tag", "ff3") , "visible", 'on');
set(findobj("tag", "d111"),"visible", "off");
set(findobj("tag", "901"), "visible", "off");
endfunction
//Отключение элементов ввода с клавиатуры
function ff_off()
set(findobj("tag", "ff1") , "visible", 'off');
set(findobj("tag", "ff2") , "visible", 'off');
set(findobj("tag", "ff3") , "visible", 'off');
set(findobj("tag", "d111"),"visible", "off");
set(findobj("tag", "901"), "visible", "off");
endfunction
//Функция вызова интерфейса ввода с клавиатуры
function enter_kb()
if get(radio_kb, 'value')==1 then
set(findobj("tag", "rlf") , "value", 0);
end
if get(radio_new, 'value')==1 then
new1();
new2();
end
if get(radio_lag, 'value')==1 then
lag1();
lag2();
end
endfunction
//Функция вызова интерфейса загрузки из файла
function enter_lf()
if get(radio_lf, 'value')==1 then
set(findobj("tag", "rkb") , "value", 0);
end
lag1();
new2();
ff();
endfunction
//Функция обновления слайдеров
function slider_update(a, j0, j1, j2, j3, x, y, xinp)
if a==1 then
sl = findobj("Tag", "slider30");
txt = findobj("Tag", "text30");
set(txt, "String", string(get(sl, "Value")));
end
if a==2 then
sl = findobj("Tag", "slider70");
txt = findobj("Tag", "text70");
i=get(sl, "Value");
set(txt, "String", string(get(sl, "Value")));
if j0>=i then
v=xinp(i);
set(findobj("tag", "x_out"), "String", string(v)); end
end
if a==3 then
sl = findobj("Tag", "kb7");
txt = findobj("Tag", "kb1");
set(txt, "String", string(get(sl, "Value")));
end
endfunction
//Функция обновления слайдера с тэгом 901
function i=slider901_update(n)
set(findobj("tag", "901"), "max", n);
sl = findobj("Tag", "901");
disp(sl);
txt=findobj("tag", "kb1");
i=get(sl, "Value");
set(txt, "String", string(i-1));
x0=x0+h*(i-1);
a=string(x0);
set(findobj("tag", "kb10"), "string", a);
endfunction
//Функция ввода значений X_inp
function [j0, xinp]=vvod(xinp, j0)
sl = findobj("Tag", "slider70");
i=get(sl, "Value");
if (i+1)>j0 then
j0=i;
end
a=evstr(get(x_out_edit, "string"));
xinp(i)=a;
endfunction
set(findobj("tag", "ff2") , "visible", 'off');
set(findobj("tag", "ff3") , "visible", 'off');
set(findobj("tag", "d111"),"visible", "off");
set(findobj("tag", "901"), "visible", "off");
endfunction
//Включение элементов метода Лагранжа
function lag2()
set(findobj("tag", "kb1") , "visible", 'on');
set(findobj("tag", "kb2") , "visible", 'on');
set(findobj("tag", "kb3") , "visible", 'on');
set(findobj("tag", "kb4") , "visible", 'on');
set(findobj("tag", "kb5") , "visible", 'on');
set(findobj("tag", "kb6") , "visible", 'on');
set(findobj("tag", "kb7") , "visible", 'on');
set(findobj("tag", "d111"),"visible", "off");
set(findobj("tag", "901"), "visible", "off");
ff_off();
endfunction
//Включение элементов метода Ньютона
function new1()
set(findobj("tag", "newtone1") , "visible", 'on');
set(findobj("tag", "newtone2") , "visible", 'on');
set(findobj("tag", "newtone3") , "visible", 'on');
set(findobj("tag", "newtone4") , "visible", 'on');
set(findobj("tag", "newtone5") , "visible", 'on');
set(findobj("tag", "newtone6") , "visible", 'on');
set(findobj("tag", "newtone7") , "visible", 'on');
set(findobj("tag", "d111"),"visible", "off");
set(findobj("tag", "901"), "visible", "off");
ff_off();
endfunction
//Отключение элементов метода Лагранжа
function new2()
set(findobj("tag", "kb1") , "visible", 'off');
set(findobj("tag", "kb2") , "visible", 'off');
set(findobj("tag", "kb3") , "visible", 'off');
set(findobj("tag", "kb4") , "visible", 'off');
set(findobj("tag", "kb5") , "visible", 'off');
set(findobj("tag", "kb6") , "visible", 'off');
set(findobj("tag", "kb7") , "visible", 'off');
ff_off();
endfunction
//Включение элементов ввода с клавиатуры
function ff()
set(findobj("tag", "ff1") , "visible", 'on');
set(findobj("tag", "ff2") , "visible", 'on');
set(findobj("tag", "ff3") , "visible", 'on');
set(findobj("tag", "d111"),"visible", "off");
set(findobj("tag", "901"), "visible", "off");
endfunction
//Отключение элементов ввода с клавиатуры
function ff_off()
set(findobj("tag", "ff1") , "visible", 'off');
//Функция ввода значений x, y
function [j1, x, y]=vvod1(x, y, j1)
sl = findobj("Tag", "kb7");
i=get(sl, "Value");
if (i+1)>j1 then
j1=i;
end
a=evstr(get(x_edit, "string"));
x(i)=a;
b=evstr(get(y_edit, "string"));
y(i)=b;
endfunction
set(findobj("tag", "ff2") , "visible", 'off');
set(findobj("tag", "ff3") , "visible", 'off');
set(findobj("tag", "d111"),"visible", "off");
set(findobj("tag", "901"), "visible", "off");
endfunction
//Включение элементов метода Лагранжа
function lag2()
set(findobj("tag", "kb1") , "visible", 'on');
set(findobj("tag", "kb2") , "visible", 'on');
set(findobj("tag", "kb3") , "visible", 'on');
set(findobj("tag", "kb4") , "visible", 'on');
set(findobj("tag", "kb5") , "visible", 'on');
set(findobj("tag", "kb6") , "visible", 'on');
set(findobj("tag", "kb7") , "visible", 'on');
set(findobj("tag", "d111"),"visible", "off");
set(findobj("tag", "901"), "visible", "off");
ff_off();
endfunction
//Включение элементов метода Ньютона
function new1()
set(findobj("tag", "newtone1") , "visible", 'on');
set(findobj("tag", "newtone2") , "visible", 'on');
set(findobj("tag", "newtone3") , "visible", 'on');
set(findobj("tag", "newtone4") , "visible", 'on');
set(findobj("tag", "newtone5") , "visible", 'on');
set(findobj("tag", "newtone6") , "visible", 'on');
set(findobj("tag", "newtone7") , "visible", 'on');
set(findobj("tag", "d111"),"visible", "off");
set(findobj("tag", "901"), "visible", "off");
ff_off();
endfunction
//Отключение элементов метода Лагранжа
function new2()
set(findobj("tag", "kb1") , "visible", 'off');
set(findobj("tag", "kb2") , "visible", 'off');
set(findobj("tag", "kb3") , "visible", 'off');
set(findobj("tag", "kb4") , "visible", 'off');
set(findobj("tag", "kb5") , "visible", 'off');
set(findobj("tag", "kb6") , "visible", 'off');
set(findobj("tag", "kb7") , "visible", 'off');
ff_off();
endfunction
//Включение элементов ввода с клавиатуры
function ff()
set(findobj("tag", "ff1") , "visible", 'on');
set(findobj("tag", "ff2") , "visible", 'on');
set(findobj("tag", "ff3") , "visible", 'on');
set(findobj("tag", "d111"),"visible", "off");
set(findobj("tag", "901"), "visible", "off");
endfunction
//Отключение элементов ввода с клавиатуры
function ff_off()
set(findobj("tag", "ff1") , "visible", 'off');
//Функция ввода значений x0, n, h
function [j2, x, x0, n, h]=vvod2(x0, n, h, j2)
x0=evstr(get(x0_edit, "string"));
n=evstr(get(n_out_edit, "string"));
h=evstr(get(h_out_edit, "string"));
lag();
for j=1:n
x(j)=x0+h*(j-1);
end
set(findobj("tag", "kb10"), "String", string(x0));
if (i+1)>j2 then
j2=i;
end
endfunction
//Функция для интерполяции
function yout=inter1(x, y, xinp, i)
if get(findobj("tag", "lag"), "value")==1 then flag=0; else flag=1; end
x=x';
y=y';
xinp=xinp';
exec("inter.sci');
yout= inter(x, y, xinp, flag);
disp("yout");
disp(yout);
plot2d(x,y,2,"001")
plot(XX, YY,'mo.')
plot2d( x , y, style=color("blue"));
endfunction
//Функция ввода значений х, у для формулы Ньютона
function [j3, y]=vvod3(x0, h, n, y, i, x, j3)
y(i)=evstr(get(y_edit, "string"));
plot(x(i),y(i), 'bo.')
if (i+1)>j3 then
j3=i;
end
endfunction
//Фрейм X(0)
edit_frame_title_100 = uicontrol(f, "Position", [20 190 25 20], ...
"Style", "text",...
"String", "x0=",...
"BackgroundColor", [1.0 1.0 1.0], "Relief", "ridge", "HorizontalAlignment", "center", "visible", "off", "tag", "newtone1");
x0_edit = uicontrol(f, "Position", [45 190 50 20], ...
"Style", "edit", ...
"FontSize", 11, ...
"String", "1", ...
"BackgroundColor", [0.95 0.95 0.95], ...
"Tag", "x0", "visible", "off", "tag", "newtone2");
//Фрейм h
edit_frame_title_102 = uicontrol(f, "Position", [100 190 25 20], ...
"Style", "text",...
"String", "h=",...
"BackgroundColor", [1.0 1.0 1.0], "Relief", "ridge", "HorizontalAlignment", "center", "visible", "off", "tag", "newtone3");
h_out_edit = uicontrol(f, "Position", [125 190 50 20], ...
"Style", "edit", ...
"FontSize", 11, ...
"String", "1", ...
"BackgroundColor", [0.95 0.95 0.95], ...
"Tag", "h", "visible", "off", "tag", "newtone4");
//Построение графика (plotframe)
xx=[0:0.1:5]';
yy=(xx^2);
XX=[1:1:4];
YY=(XX^2);
rect=[min(x),min(y),max(x),max(y)];
plotframe(rect ,flags=[%t,%f],Captions=["","x","y"],subwin=[0.4,0,0.65,0.75])
legend('f1=исходная функция', 'f2=интерполированная функция', 2, %t);