Разработать программу построения графика функции y=f(x) - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Разработать программу построения графика функции y=x-1/(3+sin3.6x), интервал: x=[0;0.85] на Си, желательно с блок-схемой

Решение задачи: «Разработать программу построения графика функции y=f(x)»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
double f(double x)
{
       return exp(-0.08*x)*sin(x);
} 
 
int main(int argc, char *argv[])
{
  
  int n,i,j,m;
  double Y[80];
  char Scr [20] [80];
  double x,y,x1,x2,dx,ymax,ymin;
  
  x1=0;
  x2=30;
  dx=(x2-x1)/80;
  
  ymax=0;
  ymin=0;
  
  i=0;
  for (x=x1; x<=x2; x+=dx)
   {
      y=f(x);
      if (y>ymax) ymax=y;
      if (y<ymin) ymin=y;
      Y[i++]=y;
   }       
   
   ymax=ymax+(ymax-ymin)*0.1;
   ymin=ymin-(ymax-ymin)*0.1; 
  
  for (i=0; i<20; i++)
   for (j=0; j<80; j++) Scr[i][j]=' ';
    
  for (i=0; i<80; i++)
  {
      m=20*(ymax-Y[i])/(ymax-ymin);
      Scr [m] [i]='*';
  }
  
  for (i=0; i<20; i++)
    for (j=0; j<80; j++) printf("%c",Scr[i][j]);
  
  system("PAUSE");  
  return 0;
}

Объяснение кода листинга программы

В этом коде:

  1. Функция f(x) представляет собой функцию, которую необходимо визуализировать.
  2. Программа разбивает интервал от x1 до x2 на 80 равных отрезков и вычисляет соответствующую y для каждого отрезка.
  3. Она сохраняет максимальное и минимальное значение y, а также наибольшее значение ymax-ymin, которое будет использоваться для масштабирования графика.
  4. Затем программа создает пустую матрицу Scr[20][80] для представления графика.
  5. Используя два вложенных цикла, она заполняет матрицу символами * и помечает точку на графике, соответствующую максимальному значению y.
  6. Затем она масштабирует график, перемещая линии сетки так, чтобы они соответствовали максимальному и минимальному значениям y.
  7. Наконец, она выводит график на консоль и приостанавливает выполнение программы до тех пор, пока пользователь не нажмет любую клавишу.

Оцени полезность:

9   голосов , оценка 3.667 из 5
Похожие ответы