Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Разработать программу вывода на экран в графическом режиме графиков двух функций. (http://www.tehnari.ru/f41/t36317/)

anonimka 24.05.2010 13:48

Turbo Pascal.Разработать программу вывода в графическом режиме графиков двух функций
 
Вложений: 1
Доброго времени суток!Прошу помочь мне с этой программой:

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

Vladimir_S 24.05.2010 14:12

(│x│> ∞) - это мне нравится! Впечатляет.
А еще, не сочтите за наглость, но позвольте полюбопытствовать: на каком языке требуется составить программу?

anonimka 24.05.2010 17:45

Цитата:

Сообщение от Vladimir_S (Сообщение 338187)
(│x│> ∞) - это мне нравится! Впечатляет.
А еще, не сочтите за наглость, но позвольте полюбопытствовать: на каком языке требуется составить программу?

Я это условие не сама придумала...Ну что вы,отсутствие языка на котором требуется составить программу-моя ошибка.Turbo Pascal

Vladimir_S 25.05.2010 11:38

Цитата:

Сообщение от anonimka (Сообщение 338275)
Я это условие не сама придумала...

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

anonimka 25.05.2010 12:45

Цитата:

Сообщение от Vladimir_S (Сообщение 338578)
Теперь по сути. Это всё обязательно надо впихнуть в одну программу? И вычисление обеих функций, и построение графиков, и решение уравнения методом Ньютона? Или можно разбить на несколько программ? И еще. Чтобы у Вас заработало построение графиков, нужно, чтобы был грамотно (под Ваш компьютер) сконфигурирован графический режим, т.е. правильно заданы параметры функции InitGraph. Вы это умеете?

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

Vladimir_S 25.05.2010 23:17

Цитата:

Сообщение от anonimka (Сообщение 338600)
Вообще желательно в одну,где график будет занимать большую часть экрана.
Задать параметры функции 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.

anonimka 26.05.2010 14:31

Цитата:

Сообщение от Vladimir_S (Сообщение 338877)
Вы уж не взыщите, но заниматься дальнейшим украшательством типа числовой разметки осей возможности нет.
Несколько пояснений:
Epsilon1 задает точность вычисления ряда Тейлора (кстати, на самом деле это просто разложение функции Exp(x)), Epsilon2 - точность определения корня уравнения методом Ньютона. Значения Xmax (верхний предел) следует брать небольшими, не выше 2 - 3.

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

Gektor 26.05.2010 17:40

Вложений: 1
а если точно такое же задание но только вот с этими функциями то много нужно в программе изменить?

Vladimir_S 26.05.2010 20:33

Цитата:

Сообщение от Gektor (Сообщение 339127)
а если точно такое же задание но только вот с этими функциями то много нужно в программе изменить?

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

Gektor 26.05.2010 23:16

Цитата:

Сообщение от Vladimir_S (Сообщение 339188)
Да нет, не так чтобы много. А уж если разобраться в программе, так и вовсе пустяки. Успехов!

спасибо:tehnari_ru_889:


Часовой пояс GMT +4, время: 05:45.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.