Написание программы расчета 512 точек функции в диапазоне [-1.5;2] на языке С++. Построение графика функции

Страницы работы

Содержание работы

Министерство образования Российской Федерации

КРАСНОЯРСКАЯ ГОСУДАРСТВЕННАЯ АКАДЕМИЯ

ЦВЕТНЫХ МЕТАЛЛОВ И ЗОЛОТА

Институт               Металлургии

Кафедра                 АПП

Группа                   АМЦ–00–2

Дисциплина           ПОА

Отчет о лабораторной работе №1

Вариант №5

Проверил преподаватель           ____________________             Ратушняк В.С.

(подпись, дата)

Выполнил студент                             ____________________             Дембицкий Ю.С.

(подпись, дата)         

Красноярск, 2004 год.


Порядок выполнения

1.  Написать программу расчета 512 точек функции в указанном диапазоне. Результат оформить в виде таблицы. Таблицу постранично вывести на экран и записать в файл.

2.  Построить график функции на указанном диапазоне.

3.  Найти все нули функции (точки разрыва, любого рода, входящие в диапазон – нулями не считаются).

Каждый пункт задания предполагает создание отдельной подпрограммы, отвечающей основным требованиям, предъявляемым к алгоритмам: минимизация объема, универсальность, читаемость и т.д.

А именно:

 1. Программа расчета 512 точек функции и построение таблицы значений, должна использовать подпрограмму расчета значений у(х), подпрограмма должна быть универсальной, т.к. предполагается ее использование при нахождении нулей функции при выполнении пункта задания №3. Запись таблицы в файл производить в текстовом формате, с использованием буферизированных файловых потоков данных. Постраничный вывод на экран можно организовывать в произвольной форме, «шапку» таблицы не обязательно каждый раз выводить на экран. Вывод осуществлять так же с использованием буферизированных потоков ввода-вывода.

2.  Построение графика функции по таблице значений записанных в файл, необходимо сделать полностью универсальной подпрограммой. (Пример такой подпрограммы подробно описан в методических указаниях к курсовому проектированию по дисциплине «Программирование и основы алгоритмизации»). Желательно так же выполнять такую подпрограмму в виде включаемого в модуль main() файла, для более удобного последующего использования в курсовой работе.

3. Нахождение нулей выполнять с помощью подпрограмм «метод деления на 2»  с оценкой результата либо по знаку у(х), либо по знаку у’(х) в зависимости от вида нулевой точки.

Задание

 в диапазоне [-1.5;2].


Выполнение работы

Блок-схемы данных алгоритмов представлена на рисунках 1–5.

1. Главная программа


 


Рисунок 1 – Главная программа (расчета 512 точек, построение таблицы значений)


 


Рисунок 2 – Подпрограмма расчета значений y(x) (f_y(x))


2. Подпрограмма построения графика

 


 


 


 


 


Рисунок 3 – Подпрограмма построения нрафика функции по таблице значений записанных в файл (gr(char *fn))


3. Подпрограмма нахождения нулей методом половинного деления с оценкой результата по знаку функции y(x).

Рисунок 4 – Подпрограмма нахождения нулей методом половинного деления с оценкой результата по знаку функции y(x)

Рисунок 5 – Подпрограмма определения знака функции (sig(y))


Текст главной программы (файл laba1.cpp):

//При помощи препроцессорных директив подключаем необходимые функции

#include <iostream.h> //Потоки ввода-вывода

#include <graphics.h> //Работа с графикой

#include <stdio.h>    //Функции ввода-вывода

#include <conio.h>    //Работа с терминалом

#include <math.h>     //Математические функции

#include <fstream.h>  //Работа с файловыми потоками

#include "gr_lab1.cpp"//Программа построения графика

void main(void)       //Тело программы

{ void gr(char *fn);  //Подключение функции построения графика

  textcolor(15);

  clrscr();

  double f_y(double); //Подключение подпрограммы вычисления функции

  double x1=-1.5, x2=2, c=(x2-x1)/511.1;

  int i=0;int t=0;

  char *fn="my_f.dat";

  fstream f; //Создание файлового потока

  f.open (fn, ios::out); //Присоединение указателя на файл к потоку f

  cout <<"x=        "<<"y=       "<<"№п/п"<<'\n';

  for (double x=x1; x<=x2; x+=c)

   { i++;t++;

     double y=f_y(x);

     f<<x<<','<<y<<'\n';

     cout.precision(5);//Обращение к объекту cout с целью округления

    //выводимых значений до пятого знака дробной части

Похожие материалы

Информация о работе

Тип:
Отчеты по лабораторным работам
Размер файла:
136 Kb
Скачали:
0