Контрольный пример для файла-функции

Пусть определены следующие входные параметры:

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.

Контрольный пример для файла-функции - student2.ru

Рисунок 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.

Контрольный пример для файла-функции - student2.ru

Рисунок 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);

Наши рекомендации