Ответ к упражнению
Для того, чтобы выполнить упражнение вам необходимо изменить код функции OnMouseMove
следующим образом:void CDrawDlg::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
////////Мой код начинается здесь///////////
if((nFlags 8l MK_LBUTTON)==MK_LBUTTON)
{
CCIientDC dc(this);
// dc.SetPixel(point.x, poi nt.y, RGB(123,211,98));
CPen NewPen(PS_SOLID, 5, RGB(255,0,0);
dc.SelectObject(&NewPen);
dc.MoveTo(m_PrevX, m_PrevY);
dc.LineTo(point.x, point.y);
m_PrevX=poi nt.x;
m_PrevY=poi nt.y;
}
////////Мой код заканчивается здесь///////////
CDialog::OnMouseMove(nFlags, point);
}
Вы создали и выполнили программу Draw.exe
, с помощью которой вы можете рисовать, путем передвижения мыши, при нажатой ее левой кнопки. Также вы познакомились с функцией OnMouseMove, которая выполняется при передвижении мыши, и с функцией OnLButtonDown — при нажатии на левую кнопку мыши.Вы закончили третий урок!
МАТЕМАТИЧЕСКИЙ ПРАКТИКУМ
Задачи с решениями
Ведет
1.
Положим, что мы хотим приблизить вещественное число| α — (p/q)|< ε
Воспользуемся для этого двумя изображающими аппаратами, именно систематическими (двоичными) дробями с одной стороны и цепными (непрерывными) дробями — с другой, и оценим потребные для хранения числа а количества информации при каждом из способов представления.
Случай систематических дробей хорошо известен. При разложении числа в двоичную дробь длины m, т. е. при использовании m значащих бит для мантиссы погрешность приближения числа α составит — (1/2)∙2-m
= 2-m-1. Поэтому для достижения потребной точности ε мы должны иметь2-m-1
< ε => -m - 1 < log2 ε => m > -log2 ε - 1 = log2(1/ε) - 1.Таким образом для достижения точности
бит информации.
2.
Разложим теперь наше числои возьмем в качестве представления числа
Известно, что для записи числа
Iс
= Σni=1 log2(2)
Остается связать данное количество информации с потребной точностью представления числа
Известно (см. [1], стр. 40, формула (30)), что подходящая дробь
построенная по числу
|α
Поэтому для приближения
1/q2
n < ε => qn > 1/√εОстается получить оценку сверху для
Для знаменателей
qк
= aкqк-1 + aкqк-2,причем по определению полагается q-1
= 0, q0 = 1. Тогда q1 = а1, q2 = a2a1 + 1, q3 = a3a2a1 + a3 + a1 и т. д.Лемма.
Для знаменателей qn верна оценка qn <= 2n-1πn, где πn= Пn i=1= ai.Доказательство
(методом мат. индукции). Дляпоскольку выражение в круглых скобках не превосходит единицы ибо аn
>= 1, аn+1 >= 1. Лемма доказана.Опираясь теперь на лемму, заключаем, что для аппроксимации числа
1/√ε < qn
=< 2n-1Пni-1 aiСледовательно, используя (2), находим:
Таким образом, учитывая (1), получаем соотношение:
Ic
(ε) >= (1/2)∙I2(ε) - n + 3/2Впрочем, данная оценка довольно груба. Ее можно немного усилить.
С другой стороны, очевидно, qn
>= Пn i=1 ai (доказывается тоже индукцией), поэтому если1/q2
n < ε < 1/q2n-1то
qn-1
< 1/√ε(5)
и, значит
Поэтому,
Если принять, что 1/q2
n < ε, то оценка упрощается:Таким образом видим, что теоретическая нижняя граница для