Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2008, 16:17   #1
ViNcHeStEr
Delphi
Форумчанин
 
Регистрация: 12.06.2008
Сообщений: 137
По умолчанию Формула на языке Pascal

Нужно построить график по формуле |y|=3^|x|-50.
Я знаю как построить график.
Вопрос: как записать эту формулу на языке Pascal.
ViNcHeStEr вне форума Ответить с цитированием
Старый 23.06.2008, 16:22   #2
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

примерно так:

y := ABS(Power(3, x) - 50)

Функцию Power напишешь сам, она должна принять значение степени, сделать его по модулю и возвести тройку в x.
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 23.06.2008, 17:39   #3
bag
Пользователь
 
Регистрация: 20.06.2008
Сообщений: 95
По умолчанию

Карась, попробуй в оригинальную формулу подставить x=0 и в свою. По-моему результаты немного различаются. Поясню: условие |y|=-49 невыполнимо, а если подставить в твою формулу, то все нормально. В том-то и вся фишка!

Во-вторых, если подставить x=4, то в оригинале получится |y|=31, значит имеется 2 решения: y=31 и y=-31

Решение должно по следующему алгоритму:
1) Проверяем, что значение x входит в диапазон
(-бесконечность;-log 50 по осн. 3]AND[-log 50 по осн. 3; бесконечность)
2) Пользуясь формулой Карася найти значение |y|
3) Построить на графике 2 точки: +|y| и -|y|, соответствующие текущему значению x
Не забывайте оставлять отзывы (кнопочка в левом нижнем углу сообщения)

Последний раз редактировалось Stilet; 03.07.2008 в 09:20.
bag вне форума Ответить с цитированием
Старый 24.06.2008, 14:31   #4
ViNcHeStEr
Delphi
Форумчанин
 
Регистрация: 12.06.2008
Сообщений: 137
По умолчанию

Я незнаю как записать в Паскале 3^|x|.
ViNcHeStEr вне форума Ответить с цитированием
Старый 24.06.2008, 14:51   #5
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

a^b = exp(b*ln(a))

3^|x|-50 === exp(abs(x)*ln(3)) - 50

|y|=3^|x|-50. - математически неверная запись!
eoln вне форума Ответить с цитированием
Старый 24.06.2008, 15:25   #6
ViNcHeStEr
Delphi
Форумчанин
 
Регистрация: 12.06.2008
Сообщений: 137
По умолчанию

Спасибо! Я тоже думаю что запись математически неверная, т.к.:
Код:
program Grafik;
uses graph;
const
shag=0.001;
min=-50;
max=50;
centerx=320;
centery=240;
var
driver,mode,x,y:integer;
begin
readln;
driver:=0;
mode:=0;
initgraph(driver,mode,'c:\bp\bgi');
line(320,0,320,480);
line(0,240,640,240);

x:=min;
while x<=max do
begin
y:=exp(abs(x)*ln(3))-50; {Type mistmatch}
y:=abs(y);
if abs(y) < MaxInt then
putpixel(centerx+trunc(x),centery-trunc(y),red);
x:=x+shag;
end;

readln;
end.
ViNcHeStEr вне форума Ответить с цитированием
Старый 24.06.2008, 17:57   #7
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Цитата:
Спасибо! Я тоже думаю что запись математически неверная
Цитата:
y:=exp(abs(x)*ln(3))-50; <U><I><B>{Type mistmatch}
y: real должна быть. Запись неверна т.к. не подпадает под определение уравнения кривой. Рассмотреть надо совокупность уравнений:
y=3^|x|-50
-y=3^|x|-50
eoln вне форума Ответить с цитированием
Старый 03.07.2008, 09:03   #8
ViNcHeStEr
Delphi
Форумчанин
 
Регистрация: 12.06.2008
Сообщений: 137
По умолчанию

Вот программа построения графика:
Код:
program Grafik;
uses graph;
const
shag=0.001;
min=-50;
max=50;
centerx=320;
centery=240;
var
driver,mode:integer;
x,y:real;
begin
readln;
driver:=0;
mode:=0;
initgraph(driver,mode,'c:\bp\bgi');
line(320,0,320,480);
line(0,240,640,240);

x:=min;
while x<=max do
begin
y:=exp(abs(x)*ln(3))-50;
y:=abs(y);
if abs(y) < Maxint then
putpixel(centerx+trunc(x),centery-trunc(y),red);
x:=x+shag;
end;

readln;
end.
Но мне кажется график слишком маленький и следовательно неправильный... А ещё нужно написать на осях XY координаты, но как это сделать чтобы координаты соответствовали графику?

Последний раз редактировалось Stilet; 03.07.2008 в 09:21.
ViNcHeStEr вне форума Ответить с цитированием
Старый 03.07.2008, 14:12   #9
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
|y|=3^|x|-50.
Это нормальная математическая запись и она действительно представляет совокупность двух уравнений
Цитата:
y=3^|x|-50
y=50-3^|x|
Значит строить надо две разных ветки графика. Чтобы график выглядел как во вложении, нужно провести масштабирование по обеим осям, растянуть по оси Х и сжать по оси У. Тут сначала на бумажке провести необходимые расчеты, ввести поправки в формулы, а потом строить график.
Вложения
Тип файла: doc Нужно построить график по формуле.doc (73.0 Кб, 10 просмотров)
puporev вне форума Ответить с цитированием
Старый 03.07.2008, 14:32   #10
ViNcHeStEr
Delphi
Форумчанин
 
Регистрация: 12.06.2008
Сообщений: 137
По умолчанию

Вот подставил так, не работает:
Код:
program Grafik;
uses graph;
const
shag=0.001;
min=-50;
max=50;
centerx=320;
centery=240;
var
driver,mode:integer;
x,y:real;
begin
readln;
driver:=0;
mode:=0;
initgraph(driver,mode,'c:\bp\bgi');
line(320,0,320,480);
line(0,240,640,240);

x:=min;
while x<=0 do
begin
y=50-exp(abs(x)*ln(3));
y:=abs(y);
if abs(y) < Maxint then
putpixel(centerx+trunc(x),centery-trunc(y),red);
x:=x+shag;
end;

while x>0 do
begin
y:=exp(abs(x)*ln(3))-50; {ОШИБКА}
y:=abs(y);
if abs(y) < Maxint then
putpixel(centerx+trunc(x),centery-trunc(y),red);
x:=x+shag;
end;

readln;
end.
ViNcHeStEr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Формула Holodok Помощь студентам 3 19.05.2008 08:19
Программирование на алгоритмическом языке Turbo Pascal Дима82 Помощь студентам 28 10.05.2008 10:19
Программа на русском языке в Windows XP на другом языке... Как? 29bit Свободное общение 4 01.02.2008 17:24
Формула Daniil2 Microsoft Office Excel 5 13.12.2007 18:33
Сумма ряда на ЭВМ и вычисленная аналитически, программы на языке Pascal SunCHO Помощь студентам 2 02.05.2007 22:37