Лаба 3
.DOCМинестерство образования Российской Федерации
Санкт-Петербургский
Государственный Электротехнический Университет
«ЛЭТИ»
К лабораторная Работя №3
«Вычисление значения полинома».
Работу выполнил: Студент группы №0221 Голиков А.Н. Преподаватель: Коновалов Г.М.
Санкт-Петербург 2000
Вычисления значений полинома.
Цель работы: ознакомление с методами вычисления значений полинома и способами их оценки на примере полинома:
P(x)= -x7+7x6-21x5+35x4-35x3+21x2-7x+1 (Вар 13.)
“Прямое” вычисление:
Протокол работы:
V=[-1,7,-21,35,-35,21,-7,1];
x0=1;
[y0,pogr0]=lab2kuz(V,x0)
y0 =
0
pogr0=
1.7764e-013
h=0.013;
x=x0-h:0.01.*h:x0+h;
[y,pogr]=lab2kuz(V,x);
plot(x,y1)
grid
gtext('"Прямое" Вычисление')
текст файла lab2kuz.m
function [y,e]=lab2kuz(V,x)
%Функция считает значение полинома
% P(x)= V1*X^N + V2*X^(N-1) + ... + V(N-1)*X + VN
%с некоторой погрешностью Е, допущенной машиной при вычислениях.
%Формат функции:
% [P,e]=lab2kuz2(V,x)
%, где P и e - возвращаемые функцией значения соответственно
%полинома и погрешности, с которой он расчитан, а входные параметры
%V и х вводятся пользователем (V - массив содержащий коэфициенты
%полинома, x - корень, при котором рассчитывать полином.)
%
%Смотр. также функции: POLYVAL; LAB2KUZ2
%Работу выполнил студент гр 0221 Голиков АН
y=0;
n=length(V);
e=abs(V(1)).*(n+1);
d=0;
for i=1:1:n
e=e+abs(d).*((2.*n)+2-i);
d=V(i).*(x.^(n-i));
y=y+d;
end
e=e.*0.5.*eps;
Практические погрешности, определенные по графику
|max|=1.75*10-14
X[0.990;1.009]
Вычисление функцией POLYVAL:
Протокол работы:
V=[-1,7,-21,35,-35,21,-7,1];
x0=1;
y=polyval(V,x0)
y =
0
h=0.011;
x=x0-h:0.01.*h:x0+h;
y=polyval(V,x);
plot(x,y)
текст файла polyval.m
можно прочитать в
дирриктории MatLab.
Практические погрешности,
определенные по графику
|max|=5*10-15
X[0.991;1.008]
Вычичление по схеме Горнера
Протокол работы:
V=[-1,7,-21,35,-35,21,-7,1];
x0=1;
[y0,pogr0]=lab2kuz2(V,x0)
y =
0
pogr0 =
2.1205e-014
h=0.011;
x=x-h:0.01*h:h+x;
[y,pogr]=lab2kuz2(V,x);
plot(x,y);
grid;
Текст файла lab2kuz2.m
function [b,e]=lab2kuz2(V,x)
%Функция считает значение полинома
% P(x)= V1*X^N + V2*X^(N-1) + ... + V(N-1)*X + VN
%с некоторой погрешностью Е, допущенной машиной при вычислениях.
%Формат функции:
% [P,e]=lab2kuz2(V,x)
%, где P и e - возвращаемые функцией значения соответственно
%полинома и погрешности, с которой он расчитан, а входные параметры
%V и х вводятся пользователем (V - массив содержащий коэфициенты
%полинома, x - корень, при котором рассчитывать полином.)
%
%Смотр. также функции: POLYVAL; LAB2KUZ
%Работу выполнил студент гр 0221 Голиков АН
n=length(V);
d=eps./2;
b=V(1);
e=0;
for i=2:1:n;
tmp=b;
b=b.*x+V(i);
e=e.*abs(x)+(abs(b)+2*abs(tmp)).*d;
end
Практические погрешности, определенные по графику
|max|=5*10-15
X[0.992;1.008]
Вывод: на практике убедился, что ЭВМ при счете делает погрешности, а также
ознакомился с полиномами, их вычислением, оценкой погрешностей .