Смекни!
smekni.com

Задачи изучения дисциплины 5 4 Перечень дисциплин, усвоение которых необходимо для изучения данной дисциплины: 6 (стр. 19 из 19)

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.