Помогите,пожалуйста,с задачей:
Построить на экране множество точек, координаты которых удовлетворяют следующим неравенствам или системам неравенств:[ATTACH]1378[/ATTACH]
Логарифм я так преобразовала ln(2*x+y-2)/ln(1/3)>ln(y+1)/ln(1/3)
Построить на экране множество точек
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
На самом деле, как мне кажется, все гораздо проще, чем кажется изнмчально.
Можно даже было не преобразовавать логарифм с основанием 1/3 к нартуральному. А вспомнить, что функция логарифма с основанием, меньшим единицы, является убывающей. Т.е. бОльшему значению аргумента соответствует мЕньшее значение функции.
Ну и помнить, что логарифм можно брать только от положительных чисел.
Поэтому условие
Log (1/3) (2*x+y-2)> Log (1/3)(y+1)
Преобразуется в набор трех неравенств:
(2*x+y-2) < (y+1) // !! здесь уже именно <, а не >
(2*x+y-2) > 0
(y+1) >0
Причем, первое упрощается (вычитаем y из обеих частей неравенства, переносим 2 направо и делим на 2 обе части) и получаем:
x < 3/2
2*x+y-2 > 0
y >1
Второе неравенство тоже преобразуется к линейному. Корень квадратный - функция возрастающая, и может браться от неотрицательного числа, т.е. второе неравенствао будет эквивалентно трем:
y-2*x-3 < 3-2*x
y-2*x-3 >=0
3-2*x >=0
Упрощая:
y < 6
y-2*x-3 >=0
x <= 3/2
Объдиняем эти две тройки и с учетом "поглощения" условия (x <= 3/2) более жестким (x < 3/2) получаем:
x < 3/2
2*x+y-2 > 0
y >1
y < 6
y-2*x-3 >=0
Таким образом, эти пятьь линейных неравенств дают пять полуплоскостей, их пересечение и будет искомым множеством точек.
Можно даже было не преобразовавать логарифм с основанием 1/3 к нартуральному. А вспомнить, что функция логарифма с основанием, меньшим единицы, является убывающей. Т.е. бОльшему значению аргумента соответствует мЕньшее значение функции.
Ну и помнить, что логарифм можно брать только от положительных чисел.
Поэтому условие
Log (1/3) (2*x+y-2)> Log (1/3)(y+1)
Преобразуется в набор трех неравенств:
(2*x+y-2) < (y+1) // !! здесь уже именно <, а не >
(2*x+y-2) > 0
(y+1) >0
Причем, первое упрощается (вычитаем y из обеих частей неравенства, переносим 2 направо и делим на 2 обе части) и получаем:
x < 3/2
2*x+y-2 > 0
y >1
Второе неравенство тоже преобразуется к линейному. Корень квадратный - функция возрастающая, и может браться от неотрицательного числа, т.е. второе неравенствао будет эквивалентно трем:
y-2*x-3 < 3-2*x
y-2*x-3 >=0
3-2*x >=0
Упрощая:
y < 6
y-2*x-3 >=0
x <= 3/2
Объдиняем эти две тройки и с учетом "поглощения" условия (x <= 3/2) более жестким (x < 3/2) получаем:
x < 3/2
2*x+y-2 > 0
y >1
y < 6
y-2*x-3 >=0
Таким образом, эти пятьь линейных неравенств дают пять полуплоскостей, их пересечение и будет искомым множеством точек.
BBB писал(а):На самом деле, как мне кажется, все гораздо проще, чем кажется изнмчально.
Можно даже было не преобразовавать логарифм с основанием 1/3 к нартуральному. А вспомнить, что функция логарифма с основанием, меньшим единицы, является убывающей. Т.е. бОльшему значению аргумента соответствует мЕньшее значение функции.
Ну и помнить, что логарифм можно брать только от положительных чисел.
Поэтому условие
Log (1/3) (2*x+y-2)> Log (1/3)(y+1)
Преобразуется в набор трех неравенств:
(2*x+y-2) < (y+1) // !! здесь уже именно <, а не >
(2*x+y-2) > 0
(y+1) >0
Причем, первое упрощается (вычитаем y из обеих частей неравенства, переносим 2 направо и делим на 2 обе части) и получаем:
x < 3/2
2*x+y-2 > 0
y >1
Второе неравенство тоже преобразуется к линейному. Корень квадратный - функция возрастающая, и может браться от неотрицательного числа, т.е. второе неравенствао будет эквивалентно трем:
y-2*x-3 < 3-2*x
y-2*x-3 >=0
3-2*x >=0
Упрощая:
y < 6
y-2*x-3 >=0
x <= 3/2
Объдиняем эти две тройки и с учетом "поглощения" условия (x <= 3/2) более жестким (x < 3/2) получаем:
x < 3/2
2*x+y-2 > 0
y >1
y < 6
y-2*x-3 >=0
Таким образом, эти пятьь линейных неравенств дают пять полуплоскостей, их пересечение и будет искомым множеством точек.
Спасибо,сейчас попробую написать программу)
У меня так получилось, правильно или нет?
Код: Выделить всё
uses crt,graph;
const
x0=320;
y0=240;
p=20;
k=10;
var
d, m, i, j:integer;
x, y:real;
s:string;
procedure osi;
begin
line(x0-p*k,y0,x0+p*k,y0);
line(x0,y0-p*k,x0,y0+p*k);
for i:=1 to k*2 do
line((x0-p*k)+p*(i-1),y0-k,(x0-p*k)+p*(i-1),y0+k);
for i:=2 to k*2+1 do
line(x0-k,(y0-p*k)+p*(i-1),x0+k,(y0-p*k)+p*(i-1));
line(x0,y0-p*k,x0-k,(y0-p*k)+k);
line(x0,y0-p*k,x0+k,(y0-p*k)+k);
line((x0+p*k),y0,(x0+p*k)-k,y0-k);
line((x0+p*k),y0,(x0+p*k)-k,y0+k);
for i:=1 to k*2+1 do
begin
if i<>k+1 then
begin
str(i-(k+1),s);
outtextxy((x0-p*k)+p*(i-1)-3,y0+10,s);
str(k+1-i,s);
outtextxy(x0+15,(y0-p*k)+p*(i-1)-3,s)
end
else
end;
outtextxy((x0-p*k)+p*k+3,y0+8,'0');
outtextxy(540,y0,'x');
outtextxy(x0,15,'y')
end;
begin
clrscr;
d:=detect;
initgraph(d, m, '');
osi;
for i:=1 to 639 do
for j:=1 to 479 do
begin
x:=(i-320)/p;
y:=(j-240)/(-p);
if (x<3/2)and(2*x+y-2>0)and(y>1)and(y<6)and(y-2*x-3>=0) then
putpixel(i, j, 1)
end;
readkey;
closegraph
end.
Результат-то (т.е. картинка), наверное, будет правильным. Только, если это "учебная задача", не знаю, этого ли хочет преподаватель или нет
Т.е., возможно, требуется не перебирать все точки и проверять для каждой выполение неравенств (в этом случае логарифмы и корни можно было бы и вообще не упрощать). Или, быть может, идея как раз в том, чтобы нарисовать прямые (или, формально точнее говоря, полуплоскости), уравнения которых задаются полученными неравенствами.

Насколько я правильно поняла задание,нужно было сделать именно так,хотя не совсем уверена...Ну да ладно,завтра увидим 
Большое спасибо за помощь,очень благодарна

Большое спасибо за помощь,очень благодарна
