Построение плавных кривых по точкам
Определение начальной точки графика и шага построения, расчёт величины сглаживания. Кривая Безье: координаты графика, погрешности и счётчик количества точек. Полиномиальная кривая и массив значений для решения полинома. Описание фрагмента кода.
Рубрика | Коммуникации, связь, цифровые приборы и радиоэлектроника |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 16.10.2012 |
Размер файла | 338,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
ГУАП
Отчет по выполнению работы
“Построение плавных кривых по точкам. arccot(x)/x,10 точек”
Работу принял: Жуков А.Д.
Работу выполнил: Балашов Д.А.
СПб, 2011
1. Цель работы: построение графика функции arccot(x)+sin(x)
график точка кривая погрешность
1) Формулы
- Catmull Rom
- Безье
2) Фрагмент кода
var
Form1: TForm1;
const cnt=9; //10 точек
var y,x: array[0..cnt] of real;
const sta=20*pi/200; //начальная точка графика
const ste=215*pi/(255*cnt); //шаг построения
implementation
{$R *.dfm}
function fu(x:real):real;
begin
result:= arccot(x)+sin(x); //функция
end;
procedure TForm1.FormCreate(Sender: TObject);
var i: byte;
begin
for i:=0 to cnt do begin
y[i]:=fu(sta+ste*i);
chart1.Series[0].AddXY(sta+ste*i,y[i]);
x[i]:=sta+ste*i;
end;
edit1.Clear;
edit2.Clear;
edit3.Clear;
edit4.Clear;
end;
procedure TForm1.Button1Click(Sender: TObject);
var i: word;
sm: integer; //величина сглаживания (кол-во точек на шаг)
begin
sm:=100;
for i:=0 to cnt*sm do
chart1.Series[1].AddXY(sta+i*ste/sm,fu(sta+i*ste/sm));
end;
procedure TForm1.Button2Click(Sender: TObject); //кривая Безье
var i: single;
xx,yy,pog: real; //координаты графика Безье,погрешность
ct: word; //счётчик кол-ва точек графика Безье
begin
pog:=0;
ct:=0;
i:=0;
while i<=1 do begin
xx:=(((1-i)*x[0]+3*i*x[1])*(1-i)+3*i*i*x[1])*(1-i)+power(i,3)*x[2];
yy:=(((1-i)*y[0]+3*i*y[1])*(1-i)+3*i*i*y[1])*(1-i)+power(i,3)*y[2];
chart1.Series[2].Addxy(xx,yy);
pog:=pog+abs(yy-fu(xx)); //вычисление погрешности (координата Безье-координата оригинала)
inc(ct);
i:=i+0.01;
end;
i:=0;
while i<=1 do begin
xx:=(((1-i)*x[2]+3*i*x[3])*(1-i)+3*i*i*x[4])*(1-i)+power(i,3)*x[5];
yy:=(((1-i)*y[2]+3*i*y[3])*(1-i)+3*i*i*y[4])*(1-i)+power(i,3)*y[5];
chart1.Series[2].Addxy(xx,yy);
pog:=pog+abs(yy-fu(xx));
inc(ct);
i:=i+0.01;
end;
i:=0;
while i<=1 do begin
xx:=(((1-i)*x[5]+3*i*x[6])*(1-i)+3*i*i*x[7])*(1-i)+power(i,3)*x[8];
yy:=(((1-i)*y[5]+3*i*y[6])*(1-i)+3*i*i*y[7])*(1-i)+power(i,3)*y[8];
chart1.Series[2].Addxy(xx,yy);
pog:=pog+abs(yy-fu(xx));
inc(ct);
i:=i+0.01;
end;
i:=0;
while i<=1 do begin
xx:=(((1-i)*x[7]+3*i*x[8])*(1-i)+3*i*i*x[8])*(1-i)+power(i,3)*x[9];
yy:=(((1-i)*y[7]+3*i*y[8])*(1-i)+3*i*i*y[8])*(1-i)+power(i,3)*y[9];
chart1.Series[2].Addxy(xx,yy);
pog:=pog+abs(yy-fu(xx));
inc(ct);
i:=i+0.01;
end;
edit1.Text:=floattostr(pog/ct);
end;
procedure TForm1.Button3Click(Sender: TObject); //кривая Catmull Rom
var i: single;
xx,yy, pog: real;
p: integer; //номер точки
ct: word;
begin
pog:=0;
ct:=0;
for p:=0 to cnt-3 do begin
i:=0;
while i<=1 do begin
xx:=0.5*(0-i*power(1-i,2)*x[0+p]+
(2-5*i*i+3*i*i*i)*x[0+p]+i*(1+4*i-3*i*i)*x[1+p]-i*i*(1-i)*x[2+p]);
yy:=0.5*(0-i*power(1-i,2)*y[0+p]+
(2-5*i*i+3*i*i*i)*y[0+p]+i*(1+4*i-3*i*i)*y[1+p]-i*i*(1-i)*y[2+p]);
chart1.Series[3].AddXY(xx,yy);
pog:=pog+abs(yy-fu(xx));
inc(ct);
i:=i+0.01; //счётчик кол-ва точек
end;
end;
p:=cnt;
i:=0;
while i<=1 do begin
xx:=0.5*(0-i*power(1-i,2)*x[p-2]+
(2-5*i*i+3*i*i*i)*x[p-1]+i*(1+4*i-3*i*i)*x[p]-i*i*(1-i)*x[p]);
yy:=0.5*(0-i*power(1-i,2)*y[p-2]+
(2-5*i*i+3*i*i*i)*y[p-1]+i*(1+4*i-3*i*i)*y[p]-i*i*(1-i)*y[p]);
chart1.Series[3].AddXY(xx,yy);
pog:=pog+abs(yy-fu(xx));
inc(ct);
i:=i+0.01;
end;
edit2.Text:=floattostr(pog/ct);
end;
procedure TForm1.Button4Click(Sender: TObject); //Полиномиальная кривая
var am: array[0..cnt] of array[0..cnt+1] of real; //массив значений для решения полинома
j,k: byte;
i,ct: word;
xx,yy,pog: real;
begin
pog:=0;
ct:=0;
for i:=0 to cnt do
for j:=0 to cnt do am[i,j]:=power(x[i],cnt-j); //расчёт полинома
for i:=0 to cnt do am[i,cnt+1]:=y[i]; //присвоение полинома функции
for k:=1 to cnt do
for j:=k to cnt do
for i:=cnt+1 downto k(*-1*) do
am[j,i]:=am[j,i]-am[k-1,i]*am[j,k-1]/am[k-1,k-1];//st 1
for k:=cnt downto 1 do
for j:=k-1 downto 0 do
for i:=cnt+1 downto k do
am[j,i]:=am[j,i]-am[j,k]*am[k,i]/am[k,k];//st 2
for i:=0 to cnt do am[i,cnt+1]:=am[i,cnt+1]/am[i,i];//st 3
for i:=0 to cnt*100 do
begin
xx:=sta+i*ste/100;
yy:=0;
for j:=0 to cnt do yy:=yy+am[j,cnt+1]*power(sta+i*ste/100,cnt-j);
chart1.Series[4].AddXY(xx,yy);
pog:=pog+abs(yy-fu(xx));
inc(ct);
end;
edit3.Text:=floattostr(pog/ct);
end;
procedure TForm1.Button5Click(Sender: TObject); //очистить серии
begin
chart1.Series[1].Clear;
chart1.Series[2].Clear;
chart1.Series[3].Clear;
chart1.Series[4].Clear;
chart1.Series[5].Clear;
edit1.Clear;
edit2.Clear;
edit3.Clear;
edit4.Clear;
end;
procedure TForm1.Button6Click(Sender: TObject);
var i: single;
p: byte;
xx, yy, b0, b1, b2, b3, bb, bb1, bb2, pog: real;
ct: word;
begin
pog:=0;
ct:=0;
bb1:=100;
bb2:=1;
bb:=2*power(bb1,3)+4*power(bb1,2)+4*bb1+bb2+2;
p:=0;
while p<=4 do begin
i:=0;
while i<=1 do begin
b0:=2*power(bb1,3)*power(1-i,3)/bb;
b1:=(2*power(bb1,3)*i*(i*i-3*i+3)+2*bb1*bb1*(i*i*i-3*i+2)+2*bb1*(i*i*i-3*i+2)+bb2*(2*i*i*i-3*i*i+1))/bb;
b2:=(2*bb1*bb1*i*i*(3-i)+2*bb1*i*(3-i*i*i)+2*bb2*i*i*(3-2*i)+2*(1-i*i*i))/bb;
b3:=2*i*i*i/bb;
xx:=b0*x[p]+b1*x[p+1]+b2*x[p+2]+b3*x[p+3];
yy:=b0*y[p]+b1*y[p+1]+b2*y[p+2]+b3*y[p+3];
chart1.Series[5].AddXY(xx,yy);
pog:=pog+abs(yy-fu(xx));
inc(ct);
i:=i+0.01;
end;
p:=p+1;
end;
edit4.Text:=floattostr(pog/ct);
end;
end.
Размещено на Allbest.ru
Подобные документы
Количество поверочных элементов. Выбор образующего полинома. Построение матрицы синдромов для однократной ошибки. Схема кодера циклического кода. Оценка вероятности обнаруживаемой ошибки на выходе системы передачи. Алгоритм построения дешифратора.
контрольная работа [3,6 M], добавлен 03.12.2010Построение и расчёт пушки Пирса с использованием радиального потока в сферической системе координат, универсальных кривых и карты эквипотенциалей. Построение связи между током и сферическим напряжением на аноде с помощью решения уравнения Пуассона.
контрольная работа [144,8 K], добавлен 02.12.2013Назначение и принципы построения диспетчерского контроля. Построение и расчёт принципиальной схемы устройства. Патентный поиск и анализ существующих систем. Расчёт частот для использования микроконтроллера. Описание альтернативной модели устройства.
дипломная работа [4,8 M], добавлен 15.03.2013Встроенная навигационная система. Общая характеристика GPS-навигации. Ориентирование по известным точкам, по электронной карте, открытой в OziExplorer. Особенности GPS-навигатора и его базовые приемы использования. Координаты точек, снятых с местности.
реферат [25,6 K], добавлен 25.07.2009Формирование математической модели сигнала и построение ее графика. Спектральный состав сигнала. Исследования спектрального состава сигнала с помощью быстрых преобразований ряда Фурье. Построение графика обработанного сигнала. Верхняя граничная частота.
курсовая работа [187,7 K], добавлен 14.08.2012Увеличение общего количества разрядов при возрастании кратности исправляемой ошибки. Изменение среднего числа искаженных разрядов при линейном изменении квадратического отклонения. Определение частоты потери сообщений. Построение графика функции.
лабораторная работа [368,0 K], добавлен 01.12.2014Описание принципиальной схемы устройства. Расчёт зависимости величины входного тока от величины двоично—десятичного кода. Технология изготовления печатной платы электрохимическим способом. Достоинства фоторезиста на основе поливинилового спирта.
дипломная работа [1,3 M], добавлен 09.07.2015Расчёт относительной погрешности сопротивления резисторов. Оценка математического ожидания относительной погрешности сопротивлений резисторов, дисперсии относительных погрешностей сопротивлений резисторов, отклонения измеренного значения величины.
контрольная работа [22,5 K], добавлен 29.04.2009Получение структурно-алгоритмической схемы системы автоматического регулирования по заданным математическим моделям. Построение кривых Михайлова и Найквиста. Расчет настроек регулятора, обеспечивающих минимальное значение интегральной оценки качества.
курсовая работа [824,4 K], добавлен 09.05.2011Определение величины интенсивности отказов изделия. График вероятности безотказной работы. Расчет комплекса одиночного ЗИП. Расчет погрешности: схема функционального узла; параметры элементов. Расчет среднего значения производственной погрешности.
контрольная работа [429,2 K], добавлен 29.11.2010