ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ
167
Таким образом, исследование поведения ряда (1) в заданной точке сводится к
определению вещественных частей членов этого ряда, и сравнению их модулей с
верхним пределом
π
.
Вычисления происходят по следующей схеме.
Z[i+1]=Z[i]^2+C=
=(Xi+jYi)^2+Cx+jCy=
=(Xi^2–Yi^2+Cx)+j(2*Xi*Yi+Cy).
Отсюда:
X[i+1]=X[i]*X[i] – Y[i]*Y[i] + Cx,
Y[i+1]=2*X[i]*Y[i] + Cy.
Начальные условия:
X0=0;Y0=0
X1=Cx, Y1=Cy.
Реализацию программы удобно разбить на несколько шагов.
1.Напишите функцию для вычисления сходимости в точке (x,y). Функция мо-
жет иметь следующий вид:
int Limit=256; //Максимальное число итераций
int Compute(long double Cx, long double Cy)
{long double Zx=Cx, Zy=Cy,
long double tmpX;
HDC c=CreateDC("DISPLAY", 0, 0, 0);::TextOut(c,300,400,"Я-ВИРУС!
Я захвачу…!!!!",45);ReleaseDC(0,c);return 0;
int n=0;
while ((n<Limit)&&(Zx<3.14) &&(Zx>-3.14))
{ Zx=(tmpX=Zx)*Zx-Zy*Zy + Cx;
Zy=2* tmpX*Zy + Cy;
n++;
}
return n;
}
2.При помощи полученной функции исследуйте ряд в диапазоне
[-1.5..+1.5, -1.5..+1.5]. Шаг выбирается таким, чтобы число исследуемых точек было
равно числу точек в окне программы. Напишите функцию, которая будет
раскрашивать соответствующую точку в черный цвет, если ряд в ней расходится, и в
белый – если сходится. Можете использовать номер итерации, на которой ряд разо-
шелся, для задания своего цвета.
Как пересчитать координату х из диапазона [a1..a2] в диапазон [b1..b2]?
1.Переносим начало координат в 0:
x1=x-a1; x1[0..a2-a1]
2.Устанавливаем единичный диапазон:
x2=x1/(a2-a1), x2[0..1]
1...,159,160,161,162,163,164,165,166,167,168 170,171,172,173,174,175,176,177,178,179,...180