k=1;
end
end
end
% --- задание интервала интерполяции
disp(' Задайте интервал интерполяции [a b] ');
predel=input(' Введите [a b] ->');
key1=1;
while key1~=0, % цикл по узлам интерполяции N
% -- очистка переменных для нового цикла расчетов
i=[];j=[];ii=[];x=[];x1=[];x2=[];A1=[];A2=[];n=[];k=[];
C1=[];C2=[];P1=[];P2=[];Error1=[];Error2=[];
f=[];f0=[];f1=[];f2=[];
%-------------------------------------------------------------------------
disp(' Задайте порядок интерполирующего полинома Pn(x) ')
disp(' (Число узлов интерполяции будет N+1): ')
N=input(' Введите порядок полинома N ->');
delta=(predel(2)-predel(1))/(NN-1); % -- Шаг построения графика функции
delta1=(predel(2)-predel(1))/N; % -- Шаг интерполяции
%-------------------------------------------------------------------------
j=1:NN; % - количество точек для построения графика функции
i=1:N+1;
ii=0:N;
x(j)=predel(1)+delta*(j-1); % -- Расчет х для построения графика функции
f=feval(txtFUN,x); % -- расчет значений интерполируемой функции f(x) для
% --построения графика функции
% -- Узлы интерполяции (x-координата)
x1(i)=predel(1)+delta1*(i-1); % -- равномерное распределение
x2(ii+1)=(predel(1)+predel(2))/2+((predel(2)-predel(1))/2)*… cos(((2*ii+1)*pi)/(2*N+2)); % -- оптимальное распределение
% --- расчет функции (имя функции находится в переменной txtFUN)
f1=feval(txtFUN,x1); % -- для узлов с равномерным распределением
f2=feval(txtFUN,x2); % -- для узлов с оптимальным распределением
%-------------------------------------------------------------------------
%------- установки графического окна для отображения графика функции
[a,fig]=figflag('Программа линейной интерполяции: Графики',1);
if a==0
figN1=figure;
end
figure(figN1);
set(figN1,'Name','Программа линейной интерполяции: Графики',...
'NextPlot','add',...
'NumberTitle','off');
% --- Построение графика функции и узлов интерполяции
plot(x,f,'-g',x1,f1,'ow',x2,f2,'+w');
title(' Вид интерполируемой функции f(x) в интервале интерполяции');
xlabel(' o - равномерное х - оптимальное распределение узлов')
disp(' ');
disp(' Жми любую клавишу ...')
pause
%-------------------------------------------------------------------------
% --- Формирование матрицы системы уравнений для расчета коэф-тов
% --- интерполирующего полинома
for i=1:N+1,
for n=0:N,
A1(i,n+1)=x1(i)^n; % -- для равномерного распределения узлов
end
end
%------------------------------------------------------
for i=1:N+1,
for n=0:N,
A2(i,n+1)=x2(i)^n; % -- для оптимального распределения узлов
end
end
%-------------------------------------------------------------------------
% --- Решение системы уравнений и нахождение коэф-тов полинома
disp(' ');
disp(' Интерполяция функции f(x) полиномом вида : ');
disp(' P=C(1)*X^0+C(2)*X^1+C(3)*X^2+...+C(N+1)^N, ');
disp(' где N - порядок интерполирующего полинома ');
disp(' ');
%-------------------------------------------------------
C1=inv(A1)*f1'; % -- решение системы уравнений
disp(' Коэф-ты интерполирующего полинома P1(x) ')
disp(' (при равномерном распределении узлов) ')
for k=1:N+1,
fprintf(' C1(%g) = %g \n',k-1,C1(k));
end
%-------------------------------------------------------
C2=A2\f2'; % -- решение системы уравнений
disp(' Коэф-ты интерполирующего полинома P2(x) ');
disp(' (при оптимальном распределении узлов) ');
for k=1:N+1,
fprintf(' C2(%g) = %g \n',k-1,C2(k));
end
%-------------------------------------------------------
disp(' ');
disp(' Жми любую клавишу ...')
pause
% --- расчет интерполирующего полинома для равномерного распределения
for j=1:NN,
P1(j)=0;
for n=0:N,
P1(j)=P1(j)+C1(n+1)*x(j)^n;
end
end
% --- расчет интерполирующего полинома для оптимального распределения
for j=1:NN,
P2(j)=0;
for n=0:N,
P2(j)=P2(j)+C2(n+1)*x(j)^n;
end
end
%-------------------------------------------------------------------------
% -- вызов графического окна
[a,fig]=figflag('Программа линейной интерполяции: Графики',1);
if a==0
figN=figure;
else
figN=fig;
end
figure(figN);
set(gcf,'NextPlot','add');
%--- построение интерполирующих полиномов в виде графика
plot(x,f,'-w',x1,f1,'og',x,P1,'-.g',x2,f2,'ob',x,P2,':b');
title(' Интерполяция функции f(x) полиномом P(x)')
xlabel(' белый - f(x) зеленый - P1(x) синий - P2(x)')
pause
%-------------------------------------------------------------------------
% -- Расчет ошибки интерполяции
Error1=abs(f-P1); % -- ошибка для равномерного распределения
Error2=abs(f-P2); % -- ошибка для оптимального распределения
% -- Нахождение максимального значения ошибки
MaxErr1=max(Error1);
MaxErr2=max(Error2);
f0=zeros(1,N+1);
% --- Построение графика ошибки
[a,fig]=figflag('Программа линейной интерполяции: Ошибка',1);
if a==0
figN2=figure;
else
figN2=fig;
end
figure(figN2);
set(figN2,'Name','Программа линейной интерполяции: Ошибка',...
'NextPlot','add',...
'NumberTitle','off');
plot(x,Error1,'-g',x,Error2,'-b',x1,f0,'og',x2,f0,'ob')
title(' Ошибка интерполяции ')
xlabel(' зеленый - P1(x) синий - P2(x)')
pause
disp('Максимальная ошибка интерполяции функции f(x) :')
fprintf(' MaxErr1= %g \n MaxErr2= %g \n',MaxErr1,MaxErr2)
%-------------------------------------------------------------------------
% --- Блок запроса на повторный запуск процедуры расчета коэф-тов
k=1; % -- Начало блока запроса
while k~=0,
t=input(' Изменить число узлов интерполяции (y/n) ? ->','s');
if isempty(t)==1, t='y'; end;
txt=sscanf(t(1),'%s');
if txt=='y' | txt=='n'
k=0;
else
k=1;
end
end % -- Конец блока запроса
if txt=='y'
key1=1;
elseif txt=='n'
key1=0;
end
end % -- Конец цикла по узлам N
%-------------------------------------------------------------------------
% --- Блок запроса на повторный запуск программы
k=1; % -- Начало блока запроса
while k~=0,
t=input(' Ввести новую функцию (y/n) ? ->','s');
if isempty(t)==1, t='y'; end;
txt=sscanf(t(1),'%s');
if txt=='y' | txt=='n'
k=0;
else
k=1;
end
end % -- Конец блока запроса
if txt=='y'
key=0;
elseif txt=='n'
key=1;
end
end % -- Конец общего цикла программы whille key~=0
clc;
close all;
disp(' Вот и все ... ');
% ----------- END PROGRAM
Пример оформления титульного листа ПЗ
Приложение В (продолжение)
Пример оформления задания на курсовой проект (работу)Приложение В (продолжение)
Пример оформления списка литературы
Список использованных источников
Черкашин М.В. Вычислительные методы. Курс лекций (часть 2). - Томск: ТУСУР, 2003.
Вержбицкий В.М. Численные методы (линейная алгебра и нелинейные уравнения): Учебное пособие для ВУЗов. – М.: Высшая школа, 2000. –266 с.
Турчак Л.И. Основы численных методов. – М., Наука, 1987. – 320 с.
Тихонов А.Н., Костомаров Д.П. Вводные лекции по прикладной математике. – М., Наука, 1984.
Самарский А.А., Гулин А.В. Численные методы. – М., Наука, 1989. – 432 с.
Боглаев Ю.П. Вычислительная математика и программирование. – М., Высшая школа, 1990. – 544с.
Ракитин В.И., Первушин В.Е. Практическое руководство по методам вычислений с приложением программ для персональных компьютеров: Учебн. пособие. – М.: Высшая школа, 1998. - 383 с.
www.exponеnta.ru\matlab - сайт по математическим методам и программам.
www.ishodniki.ru\pascal – сайт, посвященный программированию на языке PASCAL.
Иванова Л.М. Методы решения СЛАУ // «Информатика и образование». - 2000. - № 4. – С. 12-23.