Построение плавных кривых по точкам

Определение начальной точки графика и шага построения, расчёт величины сглаживания. Кривая Безье: координаты графика, погрешности и счётчик количества точек. Полиномиальная кривая и массив значений для решения полинома. Описание фрагмента кода.

Рубрика Коммуникации, связь, цифровые приборы и радиоэлектроника
Вид лабораторная работа
Язык русский
Дата добавления 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.