Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка ИНФОРМАТИКА_2009.doc
Скачиваний:
17
Добавлен:
02.06.2015
Размер:
1.08 Mб
Скачать

Задание 3. Вывод на текстовый экран таблицы и графика функции

Вывести на текстовый экран таблицу и график значений функции на интервале значений аргумента x, изменяющегося с шагом h.

Вариант

1

0

0.1

2

0

0.1

3

0

0.1

4

-10

10

0.5

5

-2

1

0.1

6

0

0.15

7

0

0.15

8

0

0.15

9

-1

2

0.1

10

0

2

0.2

11

0

0.1

12

0

0.15

13

0

3

0.1

14

0

0.1

15

-1

3

0.15

16

0

3

0.125

17

-1

1

0.05

18

0

6

0.2

19

1

5

0.15

20

0

2

0.05

21

-10

10

0.5

22

0

6

0.2

23

0

4

0.1

24

0

10

0.25

25

0

0.1

26

0

0.2

27

0

0.1

28

0

3

0.1

29

0

3

0.1

30

0

3

0.1

Пример

//Программа для вывода таблицы и графика функции y=exp(-x/2)*sin(x)

#include<iostream.h>

#include<math.h>

#include<stdio.h>

#include<iomanip.h>

#include<conio.h>

void main()

{

double a,b,h,x,y;

int n;

cout<<"Введите a,b,h "<<endl; //a=0, b=6.28, h=0.2

cin>>a>>b>>h;

getchar();

cout<<"\n Таблица и график функции y=exp(-x/2)*sin(x)"<<endl<<endl;

cout<<" x\t\t y\n\n";

for(n=1,x=a;x<=b+h/2;x+=h,n++)

{ cout<<setprecision(2)<<setw(5)<<setiosflags(ios::fixed)<<x;

y=exp(-x/2)*sin(x);

cout.setf(ios::scientific,ios::floatfield);

cout<<setw(15)<<setprecision(3)<<y

<<setw((int)((y+0.15)*(60/(0.6+0.15))))<<'*'<<endl;

//под график функции отводится по 60 позиций в строке

//минимальное значение y = -0.11, максимальное значение y = 0.512

cout.setf(0,ios::floatfield);

if(n%20= =0){cout<<"Для продолжения нажмите Enter"; getchar();}

}

cout<<"Конец программы";

getchar();

}

Задание 4. Итерационные циклы

Вычислить значение функции точное по её выражению и приближенное по её разложению в ряд суммируя те члены ряда для которых где- заданная ошибка (вводится с клавиатуры) Подсчитать также количество просуммированных членов ряда

N

Примечание

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

Пример 1

Из выражения для члена ряда находим:

#include<iostream.h>

#include<math.h>

#include<stdio.h>

void main()

{double x,y,eps,a,beta;

int k,n;

cout<<"Введите x=";

cin>>x;

y=pow(cos(x),2);

cout<<endl<<"При x="<<x<<" точное значение y="<<y<<endl<<endl;

cout<<"Введите eps (конец - 0):";

cin>>eps;

while(eps!=0)

{ for(y=0, n=0, k=1, a=x*x; fabs(a)>=eps&&n<1000; y+=a, n++,

beta =-2*x*x/(2*k+1)/(k+1), a*= beta, k++);

cout<<"При eps="<<eps<<" приближенное значение y="<<1-y<<endl

<<" просуммировано "<<n<<" членов ряда"<<endl<<endl;

cout<<"Введите eps (конец - 0):";

cin>>eps;}

cout<<"Конец программы.Нажмите Enter.";

getchar();

}

Пример 2

#include<iostream.h>

#include<math.h>

#include<stdio.h>

void main()

{double x,y,eps,a,s;

int k,n;

cout<<"Введите x=";

cin>>x;

y=pow(log(1+x),2)/2;

cout<<endl<<"При x="<<x<<" точное значение y="<<y<<endl<<endl;

cout<<"Введите eps (конец - 0):";

cin>>eps;

while(eps!=0)

{ for(y=0, n=0, k=1, a=x*x/2, s=0; fabs(a)>=eps&&n<1000; n++, k++)

{ y+=a; s+=1.0/k; a*=-x*(k+1)/(k+2)*(s+1.0/(k+1))/s;}

cout<<"При eps="<<eps<<" приближенное значение y="<<y<<endl

<<" просуммировано "<<n<<" членов ряда"<<endl<<endl;

cout<<"Введите eps (конец - 0):"; cin>>eps; }

cout<<"Конец программы. Нажмите Enter.";

getchar();

}