Контрольная работа по предмету "Информатика, программирование"


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

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



Задание: 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)  тогда



                         



               Вывод 



                      



                    ' 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.







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







Вывод:



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



 



Не сдавайте скачаную работу преподавателю!
Данную контрольную работу Вы можете использовать для выполнения своих заданий.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :