Компания ALT Linux
Опубликован: 12.03.2015 | Доступ: свободный | Студентов: 582 / 64 | Длительность: 20:55:00
Лекция 12:

Обработка результатов эксперимента. Интерполяция функций

< Лекция 11 || Лекция 12: 12345

Пример 12.2. В результате опыта холостого хода определена зависимость потребляемой из сети мощности (P_0,Вт) от входного напряжения (U_1,В) для асинхронного двигателя МТН111-6 (см. табл. 12.3). Построить график интерполяционной зависимости. Вычислить ожидаемое значение мощности при U_1= 145, 155, 175B.

Реализуем рассмотренный ранее алгоритм кубического сплайна. Решение с комментариями представлено в листинге 12.5, а на рис. 12.2 можно увидеть графическое решение примера.

	
function[b, c, d]= koef_spline(x,y)
% Функция вычисляет коэффициенты сплайна, здесь x,y — массивы абсцисс
% и ординат экспериментальных точек, b, c, d — коэффициенты сплайна,
% рассчитываемые по формулам (12.21), (12.23), (12.27), (12.30)
	n=length(x);
	for k=2:n
		h(k)=x(k)-x(k-1);
	end
	for k=2:n
		l(k)=(y(k)-y(k-1))/h(k);
	end
	delt(2)=-h(3)/(2-(h(3)+h(2)));
	lyam(2)=1.5-(l(3)-l(2))/(h(3)+h(2));
	for k=4:n
		delt(k-1)=-h(k)/(2-(h(k-1)+h(k))+h(k-1)-delt(k-2));
		lyam(k-1)=(3-(l(k)-l(k-1))-h(k-1)-delt(k-2))/(2-(h(k
			-1)+h(k))+h(k-1)-delt(k-2));
	end
	c(n)=0;
	for k=n:-1:3
		c(k-1)=delt(k-1)-c(k)+delt(k-1);
	end
	for k=2:n
		d(k)=(c(k)-c(k-1))/3/h(k);
		b(k)=l(k)+(2-c(k)-h(k)+h(k)-c(k-1))/3;
	end
end
function z=my-spline(x, y, t)
% Вычисляет значение кубического сплайна в точке t,
% здесь x,y — массивы абсцисс и ординат экспериментальных точек
	[b, c, d]=koef-spline(x,y);
	n=length(x);
	a=y;
	% определяем j — номер интервала, которому принадлежит точка t.
	if t>x(n-1)
		j=n;
	else
		for i=2:n-1
			if t<=x(i)
				j=i;
				break
			end
		end
	end
	z=a(j)+b(j)-(t-x(j))+c(j)-(t-x(j))^2+d(j)-(t-x(j))^3;
end
% Экспериментальные точки.
U1=[132 140 150 162 170 180]; P0=[330 350 385 425 450 485];
% Точки, в которых надо посчитать ожидаемое значение сплайна.
x=[145 155 175];
for i =1:3 % Расчёт ожидаемого значения с помощью функции my-spline.
y(i)=my-spline(U1, P0, x(i));
end
% Вычисление значений для построения графика сплайна.
U2= 132:1:180;
for i=1:length(U2)
	P2(i)=my-spline(U1, P0, U2(i));
end
x
y
% Построение графика.
plot(U1,P0, ’*b;experiment;’,U2,P2, ’-r;spline;’, x, y, ’pb;points;’)
grid on;
% Результаты работы программы
x = 145 155 175
y= 373.19 408.77 471.15
Листинг 12.5. Решение примера 12.2
Кубический сплайн к примеру 12.2

Рис. 12.2. Кубический сплайн к примеру 12.2
Таблица 12.4. Данные к примеру 12.3
x 0.298 0.303 0.31 0.317 0.323 0.33
u 3.25578 3.17639 3.1218 3.04819 2.98755 2.9195

В следующей задаче воспользуемся встроенными функциями Octave.

Пример 12.3. В результате эксперимента определена функция u(x) (см. табл. 12.4). Построить график интерполяционной зависимости. Вычислить ожидаемое значение функции при x = 0.308, 0.325, 0.312.

Для решения задачи воспользуемся функцией interp1. В листинге 12.6 представлено решение примера 12.3, а на рис. 12.3 — графическая иллюстрация.

	
% Экспериментальные точки
x =[0.298 0.303 0.31 0.317 0.323 0.33];
u =[3.25578 3.17639 3.1218 3.04819 2.98755 2.9195];
% Точки, в которых надо посчитать ожидаемое значение.
x1 =[0.308 0.312 0.325];
% Расчёт значений в точках 0.308, 0.312, 0.325 с помощью кубического сплайна.
u1s=interp1(x, u, x1, ’spline’)
% Расчёт значений в точках 0.308, 0.312, 0.325 с помощью линейного сплайна.
u1l=interp1(x, u, x1, ’linear’)
% Вычисление значений для графиков линейного и кубического сплайнов.
xi = 0.298:0.002:0.33;
uxis=interp1(x, u, xi, ’spline’);
uxil=interp1(x, u, xi, ’linear’);
% Построение графика
plot(x, u, ’*b;experimentl;’, xi, uxil, ’-r;linear spline;’, xi, uxis
	, ’-b;cubic spline;’, x1, u1s, ’pr;points(cubic spline);’, x1,
	u1l, ’<b;points(linear spline);’);
axis([0.29, 0.34, 2.8, 3.3]);
grid on;
% Результаты работы программы,
u1s = 3.1370 3.1031 2.9685
u1l = 3.1374 3.1008 2.9681
Листинг 12.6. Решение примера 12.3
Кубический и линейный сплайны к примеру 12.3

увеличить изображение
Рис. 12.3. Кубический и линейный сплайны к примеру 12.3

Как и при решении задачи аппроксимации (подбора кривой методом наименьших квадратов), при построении интерполяционных зависимостей, необходимо первоначально поставить и решить задачу с точки зрения математики, и только потом использовать функции пакета Octave.

Этой задачей мы завершаем краткое введение в Octave. В книге были рассмотрены только некоторые функции и методы решения математических и инженерных задач. Далее читатель может самостоятельно продолжить изучение Octave. Официальная страница справки http://www.gnu.org/software/octave/doc/interpreter/. Следует помнить, что существует огромное количество расширений к пакету, описание пакетов расширений приведено на странице http://octave.sourceforge.net.

< Лекция 11 || Лекция 12: 12345
Алексей Игнатьев
Алексей Игнатьев

Возможна ли разработка приложения на Octave с GUI?

Евгений Ветчанин
Евгений Ветчанин

Добрый день. Я самостоятельно изучил курс "Введение в Octave" и хочу получить сертификат. Что нужно сднлать для этого? Нужно ли записаться на персональное обучение с тьютором или достаточно перевести деньги?