Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ПРОВЕРТЕ ПРОГУ, ПРОВЕРЬТЕ ПРОГУ 
:(
    Опции темы
pumbey
  Дата 20.5.2006, 00:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 20.5.2006

Репутация: нет
Всего: нет



значения:
1.    Функция:  f(x)=abs(cos(x)+sqr(sin(3-x))*sqr(sin(3-x)));
2.    Область значений аргумента:  x є [-1,1]
3.    Шаг изменения аргумента: Δx=0,02

условие:
1.   максимального (Ymax) и минимального  (Ymin) значений функции на заданном отрезке и соответствующих им значений аргумента (Xmax) и (Xmin);

  2. максимального ( y'max) и минимального ( y'min) значений первой производной   заданной функции в интервале x   [-1,1]
  и соответствующих им значений аргумента ( dxmax) и (dxmin );

3. площадь фигуры, ограниченной сверху кривой y=f(x), снизу – осью абсцисс, слева и справа – прямыми х = -1 и х = 1.

4. площади фигуры, ограниченной сверху кривой y=f’(x), снизу – осью абсцисс, слева и справа – прямыми x = -1 и x = 1. Расчет площади фигуры проводить по формуле «правых прямоугольников» с заданной точностью Ε≤0,001.
 
            Точность вычислений E оценивать по формуле :
 ,
            Где Si – значение интеграла при n разбиениях интервала интегрирования;
              Si+1 – значение интеграла при 2n разбиениях интервала интегрирования;

       5.  Построение графиков функций y=f(x); y=f’(x). 
прога:
Код

program p_S_s;
uses CRT,Graph;
function gr:integer;
var
i,j:integer;
begin
 moveto(300,0);
 lineto(300,getmaxy);
 moveto(0,300);
 lineto(getmaxx,300);
end;
var
    i,j:integer  ;
    x,y,z,Ymax,Ymin,Xmax,Xmin:real;
    dx,S:real;
    h,s0,st,f1,ff,e,a,b:real;
          Gd, Gm, n:integer;
    w:string;
function f(x:real):real;
         begin
              f:=abs(cos(x)+sqr(sin(3-x))*sqr(sin(3-x)));
         end;
function Dif(x,dx:real):real;
         begin
              Dif:=(f(x+dx)-f(x))/dx;
         end;

BEGIN
clrscr;
Gd := Detect;
  InitGraph(Gd, Gm, 'd:\bp\bgi\');
  if GraphResult <> grOk then
    Halt(1);


for i:=-100 to 100 do
  begin
       x:=i/100;
       y:=f(x);
       j:=round(-y*100);
       PutPixel(i+300,j+300,10); { Plot "stars" }
 end;
     x:=-1; dx:=0.02;
     Ymax:=0;Ymin:=100;
     Xmax:=x;Xmin:=x;
     while x<=1.001 do
           begin
           ff:=f(x);
                if ff>Ymax then
                   begin
                        Ymax:=f(x);
                        Xmax:=x;
                   end;
                if ff<Ymin then
                   begin
                        Ymin:=f(x);
                        Xmin:=x;
                   end;
                x:=x+dx;
           end;


      n:=201;
      e:=0.001;
      a:=-1;
      b:=1;
      st:=0;
             repeat
                    h:=(b-a)/n;

                    x:=a;
                    f1:=f(x);
                    s0:=0;
                    st:=0;
                    while x<b do
                      begin
                       s0:=s0+f(x);
                       x:=x+h;
                      end;
                      s0:=s0*h;
                      n:=n*2;
                      x:=a;
                      h:=(b-a)/n;
                    while x<b do
                      begin
                       st:=st+f(x);
                       x:=x+h;
                      end;
                      st:=st*h;
           until abs((st-s0)/st)<e;
                      S:=st;
 gr;
 outtextxy(10,10,'S = ');
 str(s:2:3,w);
 outtextxy(40,10,w);
 outtextxy(10,20,'X(max) = ');
 str(Xmax:2:3,w);
 outtextxy(80,20,w);
 outtextxy(10,30,'Y(max) = ');
 str(Ymax:2:3,w);
 outtextxy(80,30,w);
 outtextxy(10,40,'X(min) = ');
 str(Xmin:2:3,w);
 outtextxy(80,40,w);
 outtextxy(10,50,'Y(min) = ');
 str(Ymin:2:3,w);
 outtextxy(80,50,w);

 readkey;
 ClearDevice;
dx:=0.02;
for i:=-100 to 100 do
  begin
       x:=i/100;
       y:=dif(x,dx);
       j:=round(-y*100);
       PutPixel(i+300,j+300,10); { Plot "stars" }
 end;


     x:=-0.99; dx:=0.02;
     Ymax:=0;Ymin:=100;
     Xmax:=x;Xmin:=x;
     while x<=0.99 do
           begin
           ff:=dif(x,dx);
                if ff>Ymax then
                   begin
                        Ymax:=dif(x,dx);
                        Xmax:=x;
                   end;
                if ff<Ymin then
                   begin
                        Ymin:=dif(x,dx);
                        Xmin:=x;
                   end;
                x:=x+dx;
           end;
      n:=199;
      e:=0.001;
      a:=-0.99;
      b:=0.99;
      st:=0;
             repeat
                    h:=(b-a)/n;
                    x:=a;
                    f1:=dif(x,dx);
                    s0:=0;
                    st:=0;
                    while x<b do
                      begin
                       s0:=s0+dif(x,dx);
                       x:=x+h;
                      end;
                      s0:=s0*h;
                      n:=n*2;
                      x:=a;
                      h:=(b-a)/n;
                    while x<b do
                      begin
                       st:=st+dif(x,dx);
                       x:=x+h;
                      end;
                      st:=st*h;
           until abs((st-s0)/st)<e;
                      S:=st;

 gr;
 outtextxy(10,10,'S = ');
 str(s:2:3,w);
 outtextxy(40,10,w);
 outtextxy(10,20,'X(max) = ');
 str(Xmax:2:3,w);
 outtextxy(80,20,w);
 outtextxy(10,30,'Y(max) = ');
 str(Ymax:2:3,w);
 outtextxy(80,30,w);
 outtextxy(10,40,'X(min) = ');
 str(Xmin:2:3,w);
 outtextxy(80,40,w);
 outtextxy(10,50,'Y(min) = ');
 str(Ymin:2:3,w);
 outtextxy(80,50,w);

 readkey;
 CloseGraph;

END.




 
PM MAIL   Вверх
armageddon
Дата 22.5.2006, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 9.11.2005
Где: 239

Репутация: нет
Всего: нет



ну и вопросик, проверьте прогу? что именно не так? тебе самому не проверить работает ли она? 
PM MAIL   Вверх
nikitao
Дата 23.5.2006, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: нет
Всего: 26



armageddon,  smile 


pumbey, без проблем, только напиши коментарии, а то очень сложно, ибо ф-ции имеют неговорящие имена.

Сразу сделаю несколько замечаний( чтобы просто улучшить ваш код в дальнейшем  smile  )
1. Создовайте имена ф-ций и переменных говорящими. Лишних 2-3 буквы в дальнейшем вам могут сильно помочь.
2. Коментируйте код, а то сами запутаетесь.
3.  ф-ция  gr использует графический режим, но при этом не проверяет действительно ли программа на момент выполнения ф-ции в нем находится. Иными словами ее использование не безопасно  smile 
4. Как я понял блок глобальных переменных у вас находится между ф-циями  smile . Это очень плохо. Страдает читабельность программы. 


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.2128 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.