Разработать программу построения графика функции 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;
}
Объяснение кода листинга программы
В этом коде:
- Функция
f(x)представляет собой функцию, которую необходимо визуализировать. - Программа разбивает интервал от x1 до x2 на 80 равных отрезков и вычисляет соответствующую y для каждого отрезка.
- Она сохраняет максимальное и минимальное значение y, а также наибольшее значение ymax-ymin, которое будет использоваться для масштабирования графика.
- Затем программа создает пустую матрицу
Scr[20][80]для представления графика. - Используя два вложенных цикла, она заполняет матрицу символами
* и помечает точку на графике, соответствующую максимальному значению y. - Затем она масштабирует график, перемещая линии сетки так, чтобы они соответствовали максимальному и минимальному значениям y.
- Наконец, она выводит график на консоль и приостанавливает выполнение программы до тех пор, пока пользователь не нажмет любую клавишу.