РефератыИнформатикаРаРазработка математической модели на основе описанных методов

Разработка математической модели на основе описанных методов

Цель работы: Получить навыки описания метода решения математической модели на примере решения задач аналитической геометрии.


Задание: 1) Согласно заданному варианту описать методы решения задачи.


2) На основе описанных методов разработать математическую модель.


Задача: Задано множество точек, найти параметры окружности минимального радиуса, проходящие через три точки множества.


Ход работы

І)Математическая постановка задачи:


1) Найти наименьший радиус окружности по формуле: i : = 1…n


D=, где ;


j : = 1… 2)D1,D2,D3- радиусы окружности;


3) XY, XY, XY, XY- координаты точек множества;


4) D=-формула нахождения расстояния между двумя точками;


5)


-система уравнения или неравенства;


6)


-совокупность уравнения или неравенства;





7) -знак больше


-знак меньше


=-знак равно;


8) A, B, C, E- некоторые точки с определенными координатами


ІІ) Описание методов решения:


Метод 1. Метод заключается в том , что бы найти наименьший радиус окружности с помощью последовательного соединения точек с одной, а затем проделывания этого с каждой из точек множества. Затем, с помощью формулы нахождения расстояния между двумя точками


(D=),необходимо вычислить длины получившихся отрезков. После вычисления отрезки необходимо сравнить между собой. В результате если два отрезка, выходящие из одной точки, равны - это и есть радиусы окружности. Но из условия, поставленные задачей, необходимо найти минимальный радиус окружности проходящей через три точки множества. Если при сравнении несколько пар одинаковых отрезков - необходимо найти наименьшую пару – это и будет минимальный радиус окружности. (Рис.№1)



Рис.№1


Метод 2.Второй метод заключается в том, что бы искать минимальный радиус окружности при помощи соединения множество точек между собой, и в результате получение множество геометрических фигур ( в данном случае геометрические фигуры – треугольники). Затем необходимо найти расстояние сторон треугольника. Для этого возьмем формулу нахождения расстояния между двумя точками (D=). В случаи, если стороны выходящие из одной точки равны – это и есть радиусы окружности, так как через равные отрезки, выходящие из одной точки можно провести окружность с центром точки соединения этих отрезков. В случае, если в конечном результате вычисления несколько равных сторон, выходящих из одной точки, необходимо найти минимальный радиус окружности. Минимальным радиусом будут стороны с наименьшей длиной (рис.№ 2).


ІІІ) Анализ метода решения:


Первый метод более эффективен, чем второй, так как требует меньшее количество арифметических расчетов, и в памяти будет занимать меньшее количество ресурсов.


ІY) Формализация выбранного метода:


1) D1=


D2=


D3=;


2) Если D1=D3, то выполняется пункт 3, иначе пункт 4;


3) D1, D3 - радиусы окружности;


4) Если D2=D3, то выполняется пункт 5, иначе пункт 6;


5) D2, D3 – радиусы окружности;


6) Если D1=D2 , то выполняется пункт 7, иначе пункт 8;


7) D1, D2 – радиусы окружности;


8) Если D1=D2 , и/или D2=D3, и/или D1=D3, то выполняется пункт 9;


9) В случаи пункта 8 необходимо сравнить на меньший радиус:



D1=D2 D1=D3 D2=D3


D1D3 D1D2 D2D1


D1D3 D1D2 D2D1



D2D3 D3D2 D3D1


D2D3 D3D2D1 D3D1


10) Затем необходимо повторить это с оставшимися точками пока не перегенирируются все точки.


YІ. Геометрическое решение задачи



A= (-5;0);


B= (-3;2);


E= (0;1);


C= (-3;-2), так как D=, отсюда


1) AB=


AE=


AC=


Так как AB=AC, ABAE, ACAE, значит АВ и АС- радиусы окружности с центром в точке А.


2) АВ=


ЕВ=


СВ=


Так как АВЕВ, ЕВСВ, АВСВ, значит АВ, ЕВ, СВ- не являются радиусами окружности и точка В- не является центром окружности.


3) АЕ=


СЕ=


ВЕ=


Так как АЕСЕ, СЕВЕ, АЕВЕ, значит АЕ, СЕ, ВЕ- не являются радиусами окружности и точка Е- не является центром окружности.


4) АС=


ЕС=


СВ=


Так как АСЕС, ЕССВ, АССВ, значит АС, ЕС, СВ- не являются радиусами окружности и точка С- не является центром окружности.


Из данного множества точек можно провести только одну окружность с минимальным радиусом, проходящей через три точки множества. Отсюда следует, что минимальным радиусом являются отрезки АВ и АС.


Алгоритм реализации:


выполнять


ввод


n





пока ((n>3) и (n<20))


для i:=1..m


Вывод



‘Введите координаты’,I,’-ой точки.’





Ввод



D[i].x, D[i].y





Вывод



‘D[‘,i,’].x =’,D[i].x;


‘D[‘,i,’].y =’,D[i].y;






для i:=1..(n-3)



для k:=i+1..(n-2)



для l:=j+1..(n-1)



для j:=l+1...n





dk:= (D [i].x-D [k].x)²+(D [i].y-D [k].y)²;



dl:= (D [i].x-D [l].x)²+( D[i].y-D [l].y)² ;





dj= (D [j].x-D [j].x)²+(D [j].y-D [j].y)² ;







Если (dk=dl) или (dk=dj) тогда



Вывод



‘Точка ',i,'- является центром окружности!'



Иначе



Вывод



'Точка ',i,' не является центром окружности!'







Если (dk=dl) или (dj=dl) тогда



Вывод

r />


' dl- возможный радиус окружности!'



Иначе



Вывод



'dl-не образует радиус..'



Если (dk=dj) или (dk=dl) тогда



Вывод



' dk- возможный радиус окружности!'



Иначе



Вывод


'dk-не образует радиус.. '



Если (dj=dl) или (dj=dk) тогда



Вывод


' dj- возможный радиус окружности!’



Иначе



Вывод



' dj-не образует радиус’


если (dk<dj) и (dk=dl) то



Вывод



' dk- Наименьший радиус окружности!'



Если (dk<dl) и (dk=dj) то



Вывод



' dl- Наименьший радиус окружности!'



Если (dk=dj) и (dl=dk) тогда



Вывод



' dk и dj и dl- Наименьший радиус окружности!'



Листинг программы:


Program alex;


uses crt;


Type Point = Record


x,y : real;


End;


pnt = Array [1..20] Of Point;


var


q, nstr,cstr:string;


c:char;


D:pnt;


l,n,i,k,j,code:integer;


di,dj,dk,dl,Dmin:real;


begin


clrscr;


writeln(' Донецкий государственный институт искусственного интеллекта');


writeln;


writeln;


gotoxy(40,6);


write('Кафедра програмного обеспечения');


gotoxy(40,7);


writeln(' интеллектуальных систем');


gotoxy(19,10);


writeln(' Лабораторная работа #2');


writeln(' по курсу:"Алгоритмизация вычислительных процессов"');


writeln(' тема:"Разработка алгоритмов и программы"');


gotoxy(60,20);


write('Выполнил:');


gotoxy(60,21);


write(‘');


gotoxy(60,22);


write();


writeln;


writeln;


writeln;


write('Нажмите любую клавишу');


readkey;


clrscr;


writeln(' Задание: Задано множество точек. Найти параметры окружности');


writeln('минимального радиуса проходящей через три точки множества.');


gotoxy(1,25);


write('Нажмите любую клавишу...');


readkey;


clrscr;


repeat


Writeln('Введите количество точек');


readln(nstr);


writeln;


val(nstr,n,code);


if (code<>0) then


begin


clrscr;


writeln('Это не число! Попробуйте еще раз.');


n:=5;


end;


if not( n in[3..20]) then


begin


clrscr;


code:=1;


writeln('Число не находится в заданном диапазоне! Попробуйте еще раз')


end;


until (code=0);


clrscr;


for i:=1 to n do


begin


repeat


write('Введите координату Х ',i,'-ой точки: ');


readln(cstr);


val(cstr,D[i].x,code);


if (code<>0) then


begin


writeln('Это не число! Попробуйте еще раз.');


continue


end;


clrscr;


if ((D[i].x>100) or (D[i].x<-100)) then


begin


clrscr;


writeln('Диапазон координат точек от -100 до 100!');


code:=1;


continue


end;


until (code=0);


repeat


write('Введите координату Y ',i,'-ой точки: ');


readln readln val(cstr,D[i].y,code);


if (code<>0) then


begin


clrscr;


writeln('Это не число! Попробуйте еще раз.');


code:=1;


continue


end;


clrscr;


if ((D[i].y>100) or (D[i].y<-100)) then


begin


clrscr;


writeln('Диапазон координат точек от -100 до 100!');


code:=1;


continue


end;


until (code=0);


end;


for i:=1 to n do


begin


writeln('D[',i,'].x=',D[i].x);


writeln('D[',i,'].y=',D[i].y);


end;


for i:= 1 to (n-3) do


for k:= i+1 to (n-2) do


for l:= k+1 to (n-1) do


for j:= l+1 to n do


begin


begin


begin


begin


dk:=Sqrt(Sqr(D[i].x-D[k].x)+Sqr(D[i].y-D[k].y));


dl:=Sqrt(Sqr(D[i].x-D[l].x)+Sqr(D[i].y-D[l].y));


dj:=Sqrt(Sqr(D[i].x-D[j].x)+Sqr(D[i].y-D[j].y));


Dmin:=dk;


begin


if (dk=dl) or (dj=dl) then


writeln ('',dl:7:2,' dl-возможный радиус окружноости')


else


writeln ('dl-не образует радиус');


if (dk=dj) or (dk=dl) then


writeln ('',dk:7:2,' dk-возможный радиус окружности')


else


writeln ('dk-не образует радиус');


if (dj=dl) or (dj=dk) then


writeln ('',dj:7:2,' dj-возможный радиус окружности')


else


writeln ('dj-не образует радиус');


if (dk=dl) or (dk=dj) then


writeln ('Точка ',i,' является центром окружности')


else


writeln ('Точка ',i,' не является центром окружности!');


end;


begin


if (dk<dj) and (dk=dl) then


writeln ('dk i dl-наименьший радиус окружности') ;


if (dk<dl) and (dk=dj) then


writeln ('dk i dj-наименьший радиус окружности');


if (dk=dj) and (dk=dl) then


writeln ('dk i dj i dl-наименьший радиус окружности');


end;


end;


end;


end;


end;


readLn;


end.


Экранные формы:



Вывод:


В ходе лабораторной работы я изучил навыки описания метода решения математической модели на примере решения задач аналитической геометрии.

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Разработка математической модели на основе описанных методов

Слов:1499
Символов:13439
Размер:26.25 Кб.