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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2012, 11:52   #1
Evielle
Пользователь
 
Регистрация: 23.04.2012
Сообщений: 22
По умолчанию C++, точка разрыва

Проблемы с построением уравнения y=a/(x+b) + c;
Предположим, что переменные все указаны верно и функционируют. Как в циклах подправить код?

Вот сама функция построения и решения:
Код:
float equation3()
{
      float xmin, ymin, xmax, ymax;
      float tchn; //для погрешность
      
      xmin=x0;
      xmax=x1; 
         
      for(; x0<=xmax+step; x0+=step) //нахождения min, max по игрек
      { 
            x=x0;
            y=(a/(x+b))+c;
            if (y>ymax) ymax=y;
            if (y<ymin) ymin=y;     
      }
      
      
      
      //точное значение интеграла
      tchn=a*(log(abs(xmax+b))-log(abs(xmin+b)))+c*(xmax-xmin);
      
      x0=xmin;
      initwindow(400,300);
      moveto(0,150);
      for(; x0<=xmax+step; x0+=step)
      {
            x=x0;
            y=(a/(x+b))+c;
            lineto((x-xmin)*400/(xmax-xmin),(ymax-y)*300/(ymax-ymin));      
      }
      
      line((((0-xmin)/(xmax-xmin))*300),0,(((0-xmin)/(xmax-xmin))*300),300); //os y 
      line(0,(((ymax-0)/(ymax-ymin))*300),400,(((ymax-0)/(ymax-ymin))*300));
      
      float randx, randy, urrand, S, Sf;
      float K=0.0,N=0.0;
      Sf=(xmax-xmin)*(ymax-ymin);
            
      srand(time(0));
      for(int i=1; i<=n; i++) //проверка точек рандомных
      {
            randx=randomx(xmin, xmax);
            randy=randomy(ymin, ymax);
            urrand=(a/(randx+b))+c;
             
            if ((urrand<0 && randy<0 && randy>urrand) || (urrand>0 && randy>0 && randy<urrand))
            {
               K++;
               putpixel((randx-xmin)*400/(xmax-xmin),(ymax-randy)*300/(ymax-ymin), 15);
            }
               else putpixel((randx-xmin)*400/(xmax-xmin),(ymax-randy)*300/(ymax-ymin), 10);                 
      }
              
      S=Sf*(K/n);
      cout<<"\n";      
      cout<<"Приблеженное значение = "<<S<<"\n"; 
      cout<<"Точное значение = "<<tchn<<"\n";
      cout<<"Относительная погрешность = "<<abs(tchn-S)/tchn*100<<"%\n";
      cout<<"Абсолютная погрешность = "<<abs(tchn-S)<<"\n";            
}

Последний раз редактировалось Evielle; 31.05.2012 в 14:31.
Evielle вне форума Ответить с цитированием
Старый 01.06.2012, 09:10   #2
Evielle
Пользователь
 
Регистрация: 23.04.2012
Сообщений: 22
По умолчанию

Ребят, больше нет к кому обратиться..
Evielle вне форума Ответить с цитированием
Старый 01.06.2012, 09:18   #3
Aventus
Пользователь
 
Аватар для Aventus
 
Регистрация: 20.02.2012
Сообщений: 42
По умолчанию

Версия языка C++ которая позволяет реализовать построение уравнения достаточно старая. По этому малоизвестна.
Aventus вне форума Ответить с цитированием
Старый 01.06.2012, 13:57   #4
Evielle
Пользователь
 
Регистрация: 23.04.2012
Сообщений: 22
По умолчанию

Я просто строю по точкам. Не понимаю о чем вы..

Ну, хорошо. А тогда просто алгоритм? Дабы достать эту точку и убрать бесконечность по Y.
Evielle вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
процедура для разрыва связи с интернетом shilovec5377 Работа с сетью в Delphi 2 10.05.2012 20:01
процедура для разрыва связи с интернетом shilovec5377 Работа с сетью в Delphi 0 10.05.2012 17:36
Как узнать позицию разрыва страницы edikamn Microsoft Office Excel 1 10.09.2010 16:19
ServerSocket не чуствует разрыва leontv Работа с сетью в Delphi 11 07.11.2007 21:40