Сайт в помощь студенту Грамоте учиться – всегда пригодится

Скачать реферат полностью

 

 

Контрольная (курсовая) работа №3
По Информатике

 

Выполнил студент- заочник 2го курса
Шифр – ЭПА-04-588
Группа – 247
«____»___________2009г. «____»___________2009г.
Срок предоставления работы по графику Дата отправки работы
№_____________ по журналу «____»___________2009г.
___________________ Хусаинов Р.З.
отметка о зачете работы
Преподаватель
____________________
Подпись преподавателя
«____»_____________2009г.


  1. Построить два графика в одной координатной сетке: функция f(x)=Sin(x)+Sin(3x)/3 и F(x)=Sin(x)+Sin(3x)/3+Sin(5x)/5+Sin(7x)/7. Диапазон изменения переменной х Є[0;6.28]. На графике вывести обозначение масштабов переменных, вывести название графика.

Программа:
/* Программа построения графиков функции*/
/* F(x)=Sin(x)+Sin(3x)/3+Sin(5x)/5+Sin(7x)/7*/
/* и f(x)=Sin(x)+Sin(3x)/3*/

#include <conio.h>
#include <graphics.h>
#include <math.h>
void main()
{
/* Инициализация графического режима и переменных*/
int i,a,bf=220,bF=220;
float x,db;
double dx;
int dr=VGA, mode=VGAHI;
initgraph(&dr,&mode,"c:\\TC\\BGI");
/*initgraph (&dr,&mode,"G:\\lang\\tc\\bgi");*/

/* Прорисовка осей*/
setbkcolor(BLACK); setlinestyle(0,0,2);

 line (20,220,640,220); /*X*/
moveto (630,218);lineto(640,220);lineto(630,222);lineto(630,218);

 line (20,0,20,440); /*Y*/
moveto (20,0);lineto(18,10);lineto(22,10);lineto(20,0);

/*Разметка осей*/
setcolor (WHITE);
for(i=20;i<440;i=i+20)
{outtextxy (20,i-3,"-");}
outtextxy (30,420,"-1");
outtextxy (30,20,"1");
outtextxy (32,2,"Y");
outtextxy (630,205,"X");

/* Название графика*/
setfillstyle (1,GREEN);
bar (50,435,68,445);
settextstyle (6,0,1);
outtextxy (80,429,"-Функция f(x)=Sin(x)+Sin(3x)/3");
setfillstyle (1,RED);
bar (50,455,68,465);
outtextxy (80,450,"-Функция F(x)=Sin(x)+Sin(3x)/3+Sin(5x)/5+Sin(7x)/7");

/*Определение приращения (x) и координат по осям*/
dx=6.28/580; /*dx с шагом в 1 пиксель по х*/
db=(460-20)/2;

/*Построение графика Sin(x)+(Sin(3x))/3*/
moveto (20,220);
for (i=0;i<=580;i++)
{
setlinestyle(0,0,4);
setcolor(GREEN);
x=dx*i;
a=20+i;
bf=220-db*(sin(x)+(sin(3*x))/3);
lineto(a,bf); /*Рисуем f(х)*/
moveto(a,bF); /*Переходим к F(x)*/
/*Построение графика Sin(x)+(Sin(3x))/3+(Sin(5x))/5+(Sin(7x))/7*/
setcolor(RED);
bF=220-db*(sin(x)+(sin(3*x))/3+(sin(5*x))/5+(sin(7*x))/7);
lineto(a,bF); /*Рисуем F(х)*/
moveto(a,bf); /*Переходим к f(x)*/
/*Ставим метку по оси Х*/
if(i%(580/10)==0)
{
setcolor(WHITE);
outtextxy(a,217,"|");
moveto(a,bf);
gotoxy(a/8+2,15);
printf ("%3.2f",x );
}
}
getch();
closegraph();
}


Пример исполнения:



2.Выполнить расчет определенного интеграла функции f (x)=Sin(x)+(Sin(3x))/3 методом трапеции. Диапазон изменения переменной х=[0;6.28]. Построить график зависимости погрешности расчета интеграла от количества точек расчета N=20…150. Истинное значение рассчитывается с помощью формулы Ньютона-Лейбница.

Программа:
/*Программа построения графика зависимости погрешности расчета интеграла*/
/* функции f(x)=Sin(x)+(Sin(3x))/3 при х=[0;6.28], методом трапеции, */
/* от количества точек расчета 'n'=20...150 */

#include <conio.h>
#include <math.h>
#include <graphics.h>
void main()
{
/* Инициализация графического режима и переменных*/
int i,n,nn,nx=150-20,a,a1,b,b1;
float w,da,db,k,ny=4.45;
double st,sl,y,x,dx;
int dr=VGA, mode=VGAHI;
initgraph(&dr,&mode,"c:\\TC\\BGI");
/*initgraph (&dr,&mode,"G:\\lang\\tc\\bgi");*/

/* Прорисовка осей*/
textcolor(7); setcolor(7); setbkcolor(BLACK); setlinestyle(0,0,2);

 line (50,380,640,380); /*X*/
moveto (630,382);lineto(640,380);lineto(630,378);lineto(630,382);

 line (50,0,50,380); /*Y*/
moveto (50,0);lineto(48,10);lineto(52,10);lineto(50,0);

/*Разметка осей*/
/*По оси 'Y'*/
for(i=380,k=0;i>=60;i=i-(380-60)/10,k+=ny/10)
{
outtextxy (45,i-3,"-");
gotoxy (1,i/16+1);
printf ("%3.2f",k);
}
/*По оси 'X'*/
for(i=50,k=20;i<=570;i=i+(570-50)/13,k+=10)
{
outtextxy (i-3,380,"|");
gotoxy(i/8+1,25);
printf ("%3.0f",k);
}
outtextxy (62,8,"%");
outtextxy (630,360,"n");

/*Название графика*/
settextstyle(6,0,2); setcolor(7);
outtextxy(10,420,"График зависимости погрешности расчета интеграла, методом");
outtextxy(10,438,"трапеции, функции f(x)=Sin(x)+(Sin(3x))/3 при х=[0;6.28]");
outtextxy(10,456,"от количества точек расчета.");

 outtextxy(160,8,"Количество точек расчета?(20...150)-");
gotoxy(70,2); scanf("%d",&nn);

/*Определение приращения по осям*/
da=(570-50)/nx;
db=(380-60)/ny;

/*Расчет итеграла f(x)=Sin(x)+(Sin(3x))/3*/
for(n=20;n<=150;n++)
{
dx=6.28/n;
st=0;sl=0;
for(i=0;i<n;i++)
{
x=dx*i;
/*методом трапеции*/
st+=(((sin(x)+(sin(3*x))/3)+(sin(x+dx)+(sin(3*(x+dx)))/3))/2)*dx;
/*методом Ньютона-Лейбница*/
y=sin(x)+(sin(3*x))/3;
y+=3*(sin(x+dx/3)+(sin(3*(x+dx/3)))/3);
y+=3*(sin(x+dx*2/3)+(sin(3*(x+dx*2/3)))/3);
y+=(sin(x+dx)+(sin(3*(x+dx)))/3);
sl+=y/8*dx;
}
/*Расчет погрешности*/
w=(sl-st)/sl*100;
if(n==nn)
{
setcolor(7);
outtextxy(160,24,"Погрешность");
gotoxy(56,3);
printf("- %6.4f%",w);

                            outtextxy(80,24*2,"Значение интеграла:");
outtextxy(160,24*3,"метод трапеции");
gotoxy(53,6);
printf("- %+20.18f",st);

                            outtextxy(160,24*4-8,"метод Ньютона-Лейбница");
gotoxy(53,7);
printf("- %+20.18f",sl);
}

/*Вывод в график*/
setlinestyle(0,1,1);setcolor(GREEN);
a=50+da*(n-20);
b=380-db*w;
if(n==20){a1=a;b1=b;}
else {line(a,b,a1,b1); a1=a; b1=b;}
if(n==nn)
{
setlinestyle(1,1,1);setcolor(7);
moveto(a,b);lineto(a,380);moveto(a,b);
lineto(50,b);moveto(a,b);
}
}
getch();
closegraph();
}

Пример исполнения:


Алгоритм: