• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Разработать программу вывода на экран в графическом режиме графиков двух функций.

anonimka

Ученик
Регистрация
24 Май 2010
Сообщения
4
Реакции
0
Баллы
0
Turbo Pascal.Разработать программу вывода в графическом режиме графиков двух функций

Доброго времени суток!Прошу помочь мне с этой программой:

Разработать программу вывода на экран в графическом режиме графиков двух функций на интервале от xнач до xкон с шагом dx. Первая функция задана с помощью ряда Тейлора, ее вычисление должно выполняться с точностью ε. Значение параметра b для второй функции вводится с клавиатуры.
Найти корень второго уравнения с помощью метода Ньютона.
 

Вложения

Последнее редактирование:
(│x│> ∞) - это мне нравится! Впечатляет.
А еще, не сочтите за наглость, но позвольте полюбопытствовать: на каком языке требуется составить программу?
 
(│x│> ∞) - это мне нравится! Впечатляет.
А еще, не сочтите за наглость, но позвольте полюбопытствовать: на каком языке требуется составить программу?
Я это условие не сама придумала...Ну что вы,отсутствие языка на котором требуется составить программу-моя ошибка.Turbo Pascal
 
Я это условие не сама придумала...
Объясню. Не зависимо от того, кто это придумал, комизм ситуации заключается в том, что знак неравенства перепутан. То, что там написано, читается так: х по абсолютной величине превышает бесконечность. Полная чушь. Ну ладно, на самом деле ясно, что подразумевается просто любое значение х.
Теперь по сути. Это всё обязательно надо впихнуть в одну программу? И вычисление обеих функций, и построение графиков, и решение уравнения методом Ньютона? Или можно разбить на несколько программ? И еще. Чтобы у Вас заработало построение графиков, нужно, чтобы был грамотно (под Ваш компьютер) сконфигурирован графический режим, т.е. правильно заданы параметры функции InitGraph. Вы это умеете?
 
Теперь по сути. Это всё обязательно надо впихнуть в одну программу? И вычисление обеих функций, и построение графиков, и решение уравнения методом Ньютона? Или можно разбить на несколько программ? И еще. Чтобы у Вас заработало построение графиков, нужно, чтобы был грамотно (под Ваш компьютер) сконфигурирован графический режим, т.е. правильно заданы параметры функции InitGraph. Вы это умеете?

Вообще желательно в одну,где график будет занимать большую часть экрана.
Задать параметры функции InitGraph я смогу.
 
Вообще желательно в одну,где график будет занимать большую часть экрана.
Задать параметры функции InitGraph я смогу.
Тогда, например, как-то так:
Код:
USES Graph,CRT;

VAR
 Xmin,Xmax,X,dX,Epsilon1,Epsilon2,b,Xbef,Xaft,AV:REAL;
 XgrMin,XgrMax,YgrMin,YgrMax,StepGridX,StepGridY:WORD;
 ScaleX,ScaleY:REAL;

Function f1(xf:Real):Real;
 VAR S,a:Real;
     k:Word;
 begin
  S:=0;
  a:=1;
  k:=1;
  Repeat
   S:=S+a;
   a:=a*xf/k;
   Inc(k);
  Until Abs(a)<Epsilon1;
  f1:=S;
 end;

Function f2(xf:Real):Real;
 begin
  f2:=Exp(xf)+b;
 end;

BEGIN
 Write('Xmin= ');
 ReadLn(Xmin);
 Write('Xmax= ');
 ReadLn(Xmax);
 Write('dX= ');
 ReadLn(dX);
 Write('Epsilon1= ');
 ReadLn(Epsilon1);
 Write('Epsilon2= ');
 ReadLn(Epsilon2);
 Repeat
  Write('b= ');
  ReadLn(b);
  If b>=0 then WriteLn('Incorrect value of b!!! It must be <0');
 Until b<0;

 { Newton calculation }
 Xaft:=0;
 Repeat
  Xbef:=Xaft;
  Xaft:=Xbef-f2(Xbef)/Exp(Xbef);
 Until ABS(Xbef-Xaft)<Epsilon2;
 WriteLn('The result of Newton calculation is ',Xaft);
 AV:=Ln(-b);
 WriteLn('The accurate value is               ',AV);
 WriteLn;
 WriteLn('Press "Enter" to continue...');
 ReadLn;

 {Здесь нужно инициализировать графический режим}
 ClearDevice;
 ScaleX:=600/(Xmax-Xmin);
 ScaleY:=400/(f1(Xmax)-f2(Xmin));
 Line(40,ROUND(f1(Xmax)*ScaleY),640,ROUND(f1(Xmax)*ScaleY));
 If Xmin>0 then
  Line(40,0,40,440)
 else
  Line(40-Round(Xmin*ScaleX),0,40-Round(Xmin*ScaleX),440);
 SetLineStyle(SolidLn,0,ThickWidth);
 SetColor(11);
 MoveTo(40,ROUND((f1(Xmax)-f1(Xmin))*ScaleY));
 X:=Xmin;
 Repeat
  X:=X+dX;
  LineTo(40+Round((X-Xmin)*ScaleX),ROUND((f1(Xmax)-f1(X))*ScaleY));
 Until ROUND(X*10000)=ROUND(Xmax*10000);
 SetColor(14);
 MoveTo(40,ROUND((f1(Xmax)-f2(Xmin))*ScaleY));
 X:=Xmin;
 Repeat
  X:=X+dX;
  LineTo(40+Round((X-Xmin)*ScaleX),ROUND((f1(Xmax)-f2(X))*ScaleY));
 Until ROUND(X*10000)=ROUND(Xmax*10000);
 ReadKey;
 CloseGraph;
END.
Вы уж не взыщите, но заниматься дальнейшим украшательством типа числовой разметки осей возможности нет.
Несколько пояснений:
Epsilon1 задает точность вычисления ряда Тейлора (кстати, на самом деле это просто разложение функции Exp(x)), Epsilon2 - точность определения корня уравнения методом Ньютона. Значения Xmax (верхний предел) следует брать небольшими, не выше 2 - 3.
 
Вы уж не взыщите, но заниматься дальнейшим украшательством типа числовой разметки осей возможности нет.
Несколько пояснений:
Epsilon1 задает точность вычисления ряда Тейлора (кстати, на самом деле это просто разложение функции Exp(x)), Epsilon2 - точность определения корня уравнения методом Ньютона. Значения Xmax (верхний предел) следует брать небольшими, не выше 2 - 3.

Премного благодарна вам за предоставленную программу и пояснения!
А насчет украшательства,нужно ведь и мне какую-то лепту внести.
Еще раз спасибо.
 
а если точно такое же задание но только вот с этими функциями то много нужно в программе изменить?
 

Вложения

а если точно такое же задание но только вот с этими функциями то много нужно в программе изменить?
Да нет, не так чтобы много. А уж если разобраться в программе, так и вовсе пустяки. Успехов!
 
Назад
Сверху