При анализе задачи полезно сделать изображение области в любом графическом редакторе или на бумаге (потом сфотографировать), а затем изображение области поместить на форму (рис. 9):

Рис.2

Для размещения на форме изображения, созданного в данном случае в редакторе Paint, используется компонент Image с закладки Additional палитры компонентов. Чтобы загрузить содержимое графического файла, необходимо воспользоваться свойством Picture (инспектор объектов, закладка Properties) - в раскрывшемся диалоговом окне нажать на кнопку Load и указать необходимое имя файла.

Для математического описания внутренности квадрата в данном случае очевидно использовать соотношения

(x<= 1) and (x>= -1) and (y<=1) and (y>=-1)

Рассмотрим случай, когда необходимо определить принадлежность некоторой точки с координатами (х, у) полуплоскости (см. рис 10)

Рис 10

Рассмотрим самую примитивную схему действий для составления необходимого нам неравенства. Если совершенно случайно составление уравнения прямой вызывает затруднение, можно воспользоваться следующей схемой. Общий вид уравнения прямой . Точки с координатами и принадлежат нашей прямой. Значит, решив систему уравнений , мы получим значения и уравнение прямой имеет вид . Теперь обсудим знак неравенства, позволяющий описать “верхнюю” полуплоскость, содержащую точку с координатами . По рисунку видно, что интересующая нас точка имеет координаты . Подставим их в полученное уравнение и определим знак: . Т. о. знак в неравенстве будет “больше”. Но поскольку необходимо включить в нашу полуплоскость и саму прямую , поменяем знак на“больше либо равно”: .

НЕ нашли? Не то? Что вы ищете?

Описание области неравенствами не будет сложной задачей, если описывать область поэтапно, отсекая “лишние” зоны.

Фрагмент кода:

{***********************************************************}

procedureTfrm_Z2.btnResultClick(Sender: TObject);

  var x, y : extended;

begin

x:=StrToFloat(edtX. Text);

y:=StrToFloat(edtY. Text);

if (x<=1) and (x>=-1) and (y<=1) and (y>=-1)

  then lblResult. Caption:= 'Точка с введенными координатами

                       принадлежит фигуре'

          else lblResult. Caption:= 'Точка с введенными координатами не

принадлежит фигуре';

end;

{***********************************************************}

Нахождение суммы ряда

Для заданных значений и вычислить сумму ряда

,        где .

с точностью . Суммирование ряда завершить, если модуль очередного члена ряда не превосходит  . Предусмотреть ограничение количества слагаемых ряда – если их количество превосходит максимально допустимое, выдать сообщение 'Требуемая точность вычислений не достигнута'.

       Форма будет иметь следующий вид (рис. 11):

Рис.11

При анализе данной задачи необходимо отметить, что каждый новый член ряда должен быть получен, опираясь на предыдущий или его часть. Рассмотрим соотношение элементов . В рассматриваемой задаче для, соответственно . Отсюда . Далее важно определиться с начальным значением (в нашем случае ) и проследить, чтобы порядок накопления суммы и значения счетчика ряда менялись в нужной последовательности. Чтобы осознать значимость следования операторов, попробуйте поменять в теле цикла местоположение оператора  i:= i+1 - “поднимите” его в начало тела цикла, сразу после слова begin. Выполнив фрагмент программы пошагово, вы убедитесь, что общий член ряда будет видоизменен – уже при вы получите вместо необходимого  .

Фрагмент кода:

{***********************************************************}

procedureTfrm_Z3.btnOKClick(Sender: TObject);

var         sum, x, eps, a, mnog :  extended;

i, m_dop:  Word;

begin

// Присвоение значенийx, eps, m_dop

       i:= 0;  {количество членов ряда}

         a:= x;  { a  - первый член ряда }

         Sum:= a;  { Sum - первая частичная сумма ряда }

while (abs(a) > eps) and (i<=m_dop)  do

  begin

mnog:= - x*x/(2*i+2)/(2*i+3);

a:= a*mnog;

                 Sum:= Sum+a;

i:= i+1; 

  end;

// вывод результатов в поле mem_Result в зависимости от накопленного переменной i значения m_dop

{***********************************************************}

Но для случая рядов, в которых в общем виде члена ряда нет рекуррентных выражений (например, факториала или возведения в степень), использование соотношения должно быть иным. Рассмотрим в качестве примера рядВ неми . Т. о., если , то при . Но при вычислении следующего () члена ряда происходит умножение и деление на одно и то же число, в данном случае 3. Поэтому целесообразно включить в рекуррентно накапливаемое очередное значение члена ряда лишь числитель. Соответствующий фрагмент кода может выглядеть так:

mnog:= - x*x;

while (abs(a) >eps) and (i<=m_dop)  do

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20