Моделирование функционального ряда
Написание программы на языке высокого уровня Си, которая выводит на экран вид каждого из членов ряда Фурье и их суммы. Обзор результатов моделирования вычисления суммы ряда в пакете MathCAD. Построение графиков фиксированного числа членов ряда и их суммы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 05.12.2012 |
Размер файла | 615,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
13
Размещено на http://allbest.ru/
Размещено на http://allbest.ru/
Министерство образования Российской Федерации
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ
Кафедра телевидения и управления (ТУ)
Пояснительная записка к курсовому проекту
по дисциплине “ Информатика ”
МОДЕЛИРОВАНИЕ ФУНКЦИОНАЛЬНОГО РЯДА
Преподаватель Доцент кафедры ТУ В. А. Кормилин
2004
Содержание
- Задание
- Введение
- 1. Основная часть
- 1.1 Алгоритм написания программы
- 1.2 Описание программы
1.3 Результаты работы программы
- Заключение
Список используемых источников
Приложения
Задание
Дан ряд: .
Написать программу на языке Си, которая выводит на экран вид каждого из членов ряда и их суммы. Число членов ряда должно вводится с клавиатуры.
Построить графики фиксированного числа членов ряда и их суммы в среде математического пакета MathCAD.
Форма отчетности: отчет оформленный с использованием редактора Word, содержащий задание, содержание, введение, описание алгоритма программы, описание работы программы с иллюстрациями, результат моделирования вычисления суммы ряда в пакете MathCAD, выводы, приложение с листингом программы, приложение с формулами, использованных при моделирования вычисления суммы ряда в пакете MathCAD.
Введение
фурье моделирование сумма фиксированный
Основной целью данного проекта является повышения уровня знаний в области разработки программ на алгоритмическом языке высокого уровня Си, изучение основ работы в текстовом редакторе Word и оформление отчета по системе образовательных стандартов ВУЗов [1]. При написании программы главный акцент ставится на изучение работы программы в графическом режиме и соответствующих функций.
1. Основная часть
1.1 Алгоритм написания программы
Инициализация (описание переменных).
Ввод с клавиатуры числа членов ряда.
Включение графического режима.
Вычисление основных параметров.
Рисование осей координат.
Подпись осей координат и нанесение масштаба.
Цикл по членам ряда.
Цикл по аргументу.
Расчет в цикле значения члена ряда.
Проверка возможности вывести на экран полученное значения члена ряда.
Преобразование полученных значений в координаты экрана.
Вывод значений на экран.
Конец цикла по аргументу.
Конец цикла по членам ряда.
Цикл по аргументу.
Цикл по члену ряда.
Расчет члена ряда.
Расчет суммы членов ряда.
Конец цикла по члену ряда.
Проверка возможности вывести на экран полученное значения суммы членов ряда.
Преобразование полученных значений в координаты экрана.
Вывод значений на экран.
Конец цикла по аргументу.
Пауза.
Выключение графического режима.
Конец программы.
2.2 Описание программы
Для упрощения описания данной программы она разбивается на блоки (смотрите приложение А) и далее каждый из них отдельно описывается.
Блок(include): Директивой ”#include”подключаем файлы-прототипы, содержащие описание стандартных функций, необходимых для работы компилятора, а также инициализация функций и типов переменных. Для выполнения данной программы необходимо подключить заголовочные файлы: stdio.h - для определения некоторых типов и объявления функций, полезных при работе с файлами и устройствами ввода-вывода; graph.h - для подключения графического режима; conio.h - для выполнения нестандартных операций ввода-вывода; math.h - для подключения математических функций.
Блок(var): Здесь происходит инициализация типов переменных. Переменные n, N0, a, b - вспомогательные; kx, ky - коэффициенты пересчета из декартовой системы координат в систему координат в графическом режиме; nxp, nyp - текущие параметры графического разрешения; k - шаг аргумента; pi - число Пи; y, y0, x - рабочие переменные.
Блок(param): С помощью функции printf и scanf запрашиваем число членов ряда [2].
Блок(v-mode):Далее задаём разрешение экрана (_setvideomode(_MAXRESMODE)), и считываем её конфигурацию (_getvideoconfig( &vc)) [2].
Блок(const):В этом блоке идёт присваивание переменным(nxp, nyp, ntc, ntr, kx, ky, k) значения в зависимости от разрешения, и выбранной аналоговой системы координат. Pi - число Пи, a, b - соответственно начало и конец отрезка на котором определен ряд y(x).
Блок(osi):Блок osi выводит на экран оси координат (с помощью функций _lineto, _moveto), число членов ряда и подписи осей (с помощью функций printf).
Блок(ryad): Устанавливается цвет линий с кодом 10(зеленый); инициализация числовых значений переменных и начинается цикл по номеру члена ряда. В этот же цикл вложен цикл по аргументу. В данном случае используется цикл for. В нем y присваивается начальное значение x(-2), потом, если это не первый член ряда, то с помощью третьего цикла находится значение нужного члена ряда (если это первый член ряда, то третий цикл пропускается). Затем с помощью коэффициентов пересчёта kx, ky аналоговые координаты последовательно пересчитываются в графические (предварительно проверяется принадлежность вычисленного значения оси y). Далее, графический указатель перемещается в точку с координатами xg, yg с помощью графической функции _moveto (если это первая точка) или рисуется линия от предыдущей точки до рассчитанной, с помощью графической функции _lineto (если это последующие точки). Далее с каждым разом выполнения цикла к значению x прибавляется установленный шаг k и вычисляется значение функции в каждой последующей точке с учётом этого шага до тех пор пока значение x не достигнет 2. Потом выше написанное повторяется для следующего члена ряда, пока не превысит введенного числа членов ряда.
Блок(sum): Устанавливается цвет линий с кодом 4(красный); С помощью цикла for начинается цикл по аргументу для вычисления координат суммы членов ряда. В этом же цикле содержится цикл по сумме членов ряда, для того чтобы вычислить каждое последующее значение функции в зависимости аргумента. Затем строится сумма членов ряда[3].
Блок(end):С помощью функции getch() ставим паузу для просмотра результатов. Выключаем графический режим с помощью команд setvideomode (_DEFAULTMODE) . Конец программы.
2.3 Результаты работы программы
В результате работы программы на языке программирования высокого уровня Си, которая выводит на экран вид каждого из членов ряда и их суммы, мы получили графики членов ряда и их сумму. В пакете MathCAD составили общую формулу ряда и суммы (смотрите приложение Б).
Графики для пяти членов, при моделировании на Си и в пакете MathCAD, показаны на рисунках 2.1, 2.2.
Рисунок 2.1 - Результат моделирования пяти членов ряда на Си
Рисунок 2.2 - Результат моделирования пяти членов ряда в MathCAD
Графики для 20 членов, при моделировании на Си и в пакете MathCAD показаны на рисунках 2.3 и 2.4
Рисунок 2.3 - Результат моделирования 20 членов ряда на Си
Рисунок 2.4 - Результат моделирования 20 членов ряда в MathCAD
Графики для 85 членов, при моделировании на Си и в пакете MathCAD показаны на рисунках 2.5 и 2.6
Рисунок 2.5 - Результат моделирования 85 членов ряда на Си
Рисунок 2.6 - Результат моделирования 85 членов ряда в MathCAD
При задании 5, 20 и 85 членов ряда при моделировании на Си и в пакете MathCAD, сравниваем полученные результаты. Соответствие графиков при моделировании на Си и пакете MathCAD подтверждают правильность написания и функционирование программы. При суммировании 20 и 85 членов ряда получаем одинаковые результаты. Поэтому, считаем, что дальнейшее увеличение количества членов ряда не изменит конечного результата.
Заключение
В данном курсовом проекте была написана программа, которая выводит на экран вид каждого из членов ряда Фурье и их суммы. Программа позволяет вводить число членов ряда с клавиатуры. Изменяя его значение можно видеть, как меняется значение их суммы. Были изучены основы программирования на языке высокого уровня Си и проведено ознакомление с методами работы в графическом и текстовом режимах. Изучены основы работы в пакете MathCAD и текстовом редакторе Word. Было проведено оформление отчета по системе образовательных стандартов ВУЗов.
Список используемых источников
1. Система образовательных стандартов. Работы студенческие учебные и выпускные квалификационные. Общие требования и правила оформления/ Составители А.А. Чернышов, Л.И. Кирпиченко. - Томск: Издательство ТУСУР, 2003. - 36 с.
2. Подбельский В.В., Фомин С.С. Программирование на языке Си. - М.:Финансы и статистика, 2001. - 325 с.
3. Котолинская Г.П., Галиновский О.И. Программирование на языке Си. - Минск: Высшая школа, 1991, - 250 с.
Приложения
Приложение А
Листинг программы на Си
//include
#include<stdio.h>
#include<graph.h>
#include<conio.h>
#include<math.h>
void main()
{
//var
int n, N, N0;
short nxp ,nyp ,ntc ,ntr ,xg ,yg;
double x ,pi ,a ,b ,kx ,ky ,k ,y ,y0;
struct videoconfig vc;
//param
printf("Enter a number parts sequence: ");
scanf("%d", &N);
//v-mode
_setvideomode(_MAXRESMODE);
_getvideoconfig( &vc);
//const
pi=3.14; a=-2*pi; b=2*pi;
nxp=vc.numxpixels;
nyp=vc.numypixels;
ntr=vc.numtextrows;
ntc=vc.numtextcols;
kx=nxp/(4*pi); ky=nyp/10;
k=(4*pi)/nxp;
//osi
_moveto(0, nyp/2);
_lineto(nxp, nyp/2);
_lineto(nxp-10, nyp/2-3);
_lineto(nxp, nyp/2);
_lineto(nxp-10, nyp/2+3);
_moveto(nxp/2, nyp);
_lineto(nxp/2, 0);
_lineto(nxp/2-3, 10);
_lineto(nxp/2, 0);
_lineto(nxp/2+3, 10);
_setcolor(15);
_settextposition(0,5);
printf("Chislo chelonov ryada ravno: %d", N);
for(x=a; x<=b; x+=pi)
{
xg=(short)(nxp/2+x*kx);
_moveto(xg,nyp/2-3);
_lineto(xg,nyp/2+3);
}
for(y=-10; y<=10; y+=1)
{
yg=(short)(nyp/2-y*ky);
_moveto(nxp/2-3, yg);
_lineto(nxp/2+3, yg);
}
_settextposition(0, ntc/2+2);
_outtext("10");
_settextposition(ntr/10+1, ntc/2+2);
_outtext("8");
_settextposition(ntr/5+1, ntc/2+2);
_outtext("6");
_settextposition(3*ntr/10+1, ntc/2+2);
_outtext("4");
_settextposition(4*ntr/10+1, ntc/2+2);
_outtext("2");
_settextposition(6*ntr/10+1, ntc/2+2);
_outtext("-2");
_settextposition(7*ntr/10+1, ntc/2+2);
_outtext("-4");
_settextposition(8*ntr/10+1, ntc/2+2);
_outtext("-6");
_settextposition(9*ntr/10+1, ntc/2+2);
_outtext("-8");
_settextposition(ntr/2+2, 0);
_outtext("-2PI");
_settextposition(ntr/2+2, ntc/4);
_outtext("-PI");
_settextposition(ntr/2+2, ntc/2+2);
_outtext("0");
_settextposition(ntr/2+2, 3*ntc/4);
_outtext("PI");
_settextposition(ntr/2+2, ntc-2);
_outtext("2PI");
//ryad
_setcolor(10);
for(N0=1; N0<=N; N0++)
{
for(x=a; x<=b; x+=k)
{
y=x;
for(n=2; n<=N0; n++)
{
y*=pow(-1,n-1)*pow(x, 2)/2/(2*n-1)/(n-1);
}
if (y>10)
continue;
xg=(short)(nxp/2+x*kx);
yg=(short)(nyp/2-y*ky);
if (x==a)
_moveto(xg, yg);
else
_lineto(xg, yg);
}
}
//sum
_setcolor(4);
for(x=a; x<=b; x+=k)
{
for(n=1; n<=N; n++)
{
if (n==1) {
y0=x;
y=x; }
else {
y0*=pow(x, 2)/2/(2*n-1)/(n-1);
y+=pow(-1,n-1)*y0; }
}
if (y>10)
continue;
xg=(short)(nxp/2+x*kx);
yg=(short)(nyp/2-y*ky);
if (x==a)
_moveto(xg, yg);
else
_lineto(xg, yg);
}
//end
getch();
_setvideomode(_DEFAULTMODE);
}
Приложение Б
Размещено на Allbest.ru
...Подобные документы
Исходный текст программы и ее экранная форма. Программа вычисления и выдачи на печать суммы/произведения элементов бесконечного числового ряда, вычисления числового ряда для известного числа членов ряда. Значение максимального элемента в матрице.
контрольная работа [29,0 K], добавлен 07.12.2010Работа в Pascal, теория рядов. Главные признаки сходимости знакоположительных рядов. Общее понятие о ряде Тейлора. Вычисление конечной суммы факториального ряда для заданного массива значений. Исходный текст программы. Результаты выполнения программы.
контрольная работа [1,6 M], добавлен 06.08.2013Составление блок-схемы алгоритма решения задачи, погрешности вычисления суммы членов числового ряда. Разработка программ на языке на Visual Basic, работа с массивами. Особенности работы со строковыми данными. Варианты реализации формы приложения.
контрольная работа [220,4 K], добавлен 18.06.2010Использование программной системы Mathcad для выполнения, документирования и использования вычислений и инженерных расчетов. Вычисление пределов, суммы ряда. Работа с матрицами, построение трехмерного графика. Решение систем нелинейных уравнений.
отчет по практике [1,5 M], добавлен 11.09.2014Считать требуемую точность достигнутой, если модуль разности между текущим и следующим значениями суммы отличаются меньше, чем на коэффициент точности.
лабораторная работа [124,3 K], добавлен 03.12.2010Определения "ряд" и "сумма ряда". Свойства и сходимость сумм числового ряда. Основные методики приближенного нахождения суммы бесконечных рядов. Методы расчета сумм числовых рядов и формулы суммирования. Особенности разложения по специальным функциям.
курсовая работа [1,3 M], добавлен 09.01.2017Разработка алгоритма, представление его в виде блок-схемы. Программа для табулирования функции. Ввод и вывод данных с рабочего листа MS Excel. Ввод данных через диалоговое окно, вывод результатов на рабочий лист MS Excel. Вычисление суммы членов ряда.
контрольная работа [329,7 K], добавлен 16.10.2013Табличный вывод значений суммы ряда и номера последнего элемента суммы в зависимости от значений величин входных параметров с применением операторов ветвления и циклов. Блок-схема алгоритма решения. Время работы программы для расчета одного значения.
контрольная работа [762,9 K], добавлен 14.05.2013Составление программы разветвляющейся структуры для вычисления заданной функции. Нахождение произведения чётных и нечётных первых чисел натурального ряда. Приёмы программирования обработки одномерных массивов. Расчет суммы положительных элементов массива.
контрольная работа [1,3 M], добавлен 20.12.2012Вычисление значения суммы ряда, абсолютной и относительной погрешности. Упорядочение массива по убыванию элементов сверху вниз и слева направо. Построение графика функции. Текстовая строка, проверка числа открывающихся и закрывающихся скобок в строке.
курсовая работа [875,9 K], добавлен 07.06.2014Предварительный анализ заданного временного ряда на предмет наличия тренда. Обоснование наличия сезонности по графическому представлению одноименных элементов ряда разных лет. Применение модели для прогноза. Выбор типа остатков и корректировка модели.
контрольная работа [218,8 K], добавлен 12.09.2011Вычисление суммы ряда с заданной точностью. Форма представления исходных данных. Разработка алгоритма и его описание. Выбор метода обработки информации. Упорядочение элементов строк матрицы по возрастанию. Программа подсчета числа слов в предложении.
курсовая работа [23,9 K], добавлен 11.02.2016Выполнение заданий на вычисление функции на указанном диапазоне и построение графика функции. Нахождение суммы числового ряда. Нахождение корней уравнения командой "Подбор параметра". Описание технологии работы со списками в электронной таблице Excel.
контрольная работа [35,3 K], добавлен 15.11.2010Общие сведения в области формирования контрольной суммы и проверки кластеров. Основные элементы в файловой системе Windows и их взаимодействие. Разработка программы для подсчета и проверки контрольной суммы кластеров, тестирование и обработка результатов.
курсовая работа [1,3 M], добавлен 25.04.2011Программа на языке VBA, которая вводит исходные данные, выполняет расчеты и выводит на экран. Лист с начальными данными. Ввод начальных (нулевых) значений для расчетных величин. Вспомогательные переменные, счетчики циклов. Формирование матрицы данных.
курсовая работа [2,7 M], добавлен 01.12.2010Ввод данных, построение графиков, встроенные функции БС и ПС для вычисления будущей стоимости с помощью формулы простых процентов (MS Excel). Синтаксис функции БС, вычисление будущего значения единой суммы. Вычисление текущего значения суммы (функция ПС).
лабораторная работа [1,8 M], добавлен 12.12.2010Табличный метод вычисления контрольной суммы. Реализация на практике вычисления циклического контрольного кода параллельным и последовательным методами. Аппаратная реализация вычисления CRC в параллельном и последовательном коде, математическое описание.
курсовая работа [573,7 K], добавлен 09.08.2015Расчет специализированного вычислителя тригонометрических функций, основанное на разложении ряда Тейлора с использованием чисел Бернулли. Код программы вычисления на языке С++. Граф-схема алгоритма. Схематическое представление входов и выходов проекта.
курсовая работа [1,8 M], добавлен 29.12.2012Рассмотрений особенностей программирования на C/C++. Знакомство с функциями Main. Этапы расчета суммы и произведения арифметических переменных. Анализ основных способов составления программы вычисления суммы. Сущность понятия "модифицированный массив".
контрольная работа [468,8 K], добавлен 14.03.2013Составление схемы алгоритма и программы для построения графика временной функции, работающей как в машинном, так и в реальном времени. Пример вычисления степенного ряда с помощью схемы Горнера. Описание переменных программы, листинг, процедуры и функции.
курсовая работа [67,6 K], добавлен 20.11.2012