Построение графика временной функции

Тип работы:
Реферат
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ

БЕЛОРУССКАЯ ГОСУДАРСТВЕННАЯ ПОЛИТЕХНИЧЕСКАЯ

АКАДЕМИЯ

Кафедра «ТЭС»

Реферат

ПО ДИСЦИПЛИНЕ «Информатика»

Тема: «Построение графика временной функции»

Выполнил: студент гр. 106 410

Мойсеня Е.

Руководитель: Кононенко З. И.

МИНСК 2011

Содержание

  • Введение
  • 1. Выбор и обоснование методов решения
  • 1.1 Метод Ньютона
  • 1.2 Схема Горнера
  • 2. Разработка схем алгоритмов основной программы и подпрограмм
  • 2.1 Таблица имён переменных
  • 2.2 Схемы алгоритмов подпрограмм
  • 2.3 Схема алгоритма основной программы
  • 2.4 Компоновка программы пользователя и распечатка листинга программы
  • 3. Результат расчета
  • 3.1 Распечатка исходных величин
  • 3.2 Распечатка вычисленных величин
  • Список используемых источников

Введение

С началом глобальной компьютеризации появилась возможность упростить решение однотипных задач.

Интенсивное развитие технологических процессов тесно связано с применением электронной техники, и особенно цифровых вычислительных машин. Поэтому при обучении инженеров — теплоэнергетиков особое внимание должно уделяться компьютерной подготовке. Инженер должен уметь «общаться» с ЭВМ, работать на ней, знать основы программирования на алгоритмических языках, уметь использовать ЭВМ в своей будущей профессиональной деятельности.

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

PASCAL считается языком высокого уровня, на котором можно выполнять многочисленные операции.

Целью курсового проекта является закрепление навыков программирования на алгоритмическом языке TURBO PASCAL на примере разработки алгоритма и программы расчета временной функции.

1. Выбор и обоснование методов решения

1.1 Метод Ньютона

Метод Ньютона используется для решения нелинейных уравнений. Метод основан на последовательном приближении к корню уравнения при заданных начальных условиях: начальное приближение и точность вычисления. В методе Ньютона осуществляется экстраполяция с помощью касательной к кривой в данной точке. В основе метода лежит разложение функции по формуле Тейлора. Члены, содержащие h во второй и более высоких степенях, отбрасываются. Для нахождения корня используется соотношение xn+1 = xn + h. Предполагается, что переход от xn к xn+1 приближает значение функции к нулю.

h = - f (x) /f' (x)

тогда

xn+1 = xn — f (x) /f' (x)

Геометрически метод Ньютона эквивалентен замене небольшой дуги y=f (x) касательной, проведенной в некоторой точке кривой.

1.2 Схема Горнера

Существует много методов для решения полиномов на языке PASCAL. Один из этих методов — разложение полинома по схеме Горнера. Полином

f (x) = a0 + a1t + + a2t2+ a3t3+ a4t4+ … + antn

по схеме Горнера представляется в виде

f (x) = a0 + t (a1 + t (a2 +t (a3 +… + t (an-1 + t an) …)))

Данное разложение полинома удобно тем, что в нём отсутствует возведение в степень, что значительно ускоряет вычисление полинома.

2. Разработка схем алгоритмов основной программы и подпрограмм

2.1 Таблица имён переменных

Иден.

Наименование

I, j

Счётчик

x, w, p, g

Коэффициенты временной функции

Fi

Угол для вычисления коэффициента w

T

Время

t0, tkon, tkv

Время: начальное, конечное, квантования

syst

Массив коэффициентов системы уравнений

r1, r2

Корни системы

x0

Начальное приближение

eps

Точность вычисления корня

x, xpred

Последующее и предыдущее приближение корня

* Примечание.

В подпрограммах к идентификаторам данных переменных добавляется буква f.

алгоритм программа график функция

2.2 Схемы алгоритмов подпрограмм

Функция решения системы уравнений:

Решение нелинейного уравнения

Само решение нелинейного уравнения

Временная функция

2.3 Схема алгоритма основной программы

2.4 Компоновка программы пользователя и распечатка листинга программы

{программу подготовил студент группы 106 410}

{Мойсеня Е. }

Program var18 (moisenja);

uses crt;

type massiv = array [1. 3,1. 2] of real;

var

i: integer; {счётчик}

vyb: byte; {Для диалога}

syst: massiv; {для cсистемы уравнений}

g: real;

p, eps, x0: real; {для нелинейного уравнения}

x, w: real; {коэффициенты временной функции}

fi: byte; {угл для коэф-а v}

t, t0, tkon, tkv: real; {для функции}

j: byte; {для вывода таблицы (коорд x) }

{*************** решение системы ***************}

function sist (A: massiv): real;

var i, j: byte; {счётчики}

r1, r2: real; {решения системы}

begin

for j: = 1 to 2 do

for i: = 3 downto 1 do

A [i, j]: = A [i, j] /A [1,j];

for i: = 1 to 3 do A [i, 2]: = A [i, 1] - A [i, 2];

r2: = A [3,2] /A [2,2];

r1: = (A [3,1] - r2*A [2,1]);

if abs (r1) > abs (r2) then sist: = r1 else sist: = r2;

end;

{**************************************************}

{** * решение нелинейного уравнения **************}

function nelin (fx0, feps: real): real;

var x, xpred: real;

function f (r: real): real; {Заданная функция}

begin

f: = exp ® + ln ® — 10*r;

end;

function fpr (r: real): real; {Её производная}

begin

fpr: = exp ® — 10 + 1/r;

end;

begin

x: = fx0;

repeat

begin

xpred: =x;

x: = xpred — f (xpred) /fpr (xpred);

end;

until (f (x) < feps) and (abs (x-xpred) < feps);

nelin: = x;

end;

{*************************************************}

{************* функция **************************}

function ft (xf, wf, pf, gf, tf: real): real;

begin

ft: =abs (pf + gf + tf* (wf + tf*xf));

end;

{*************************************************}

BEGIN

{********** Решаем систему уравнений ************}

clrscr;

Writeln ('Решаем систему уравнений + a1z + b1v = d1 ');

Writeln (' + a2z + b2v = d2 ');

Writeln ('Введите коэффициенты a1, b1, d1, a2,. ');

for j: = 1 to 2 do

begin

for i: = 1 to 3 do

begin

gotoXY (25 + i*6, 4 + j);

read (syst [i, j]);

end;

end;

g: = sist (syst);

Writeln ('Наибольшее по модулю решение системы g= ', g: 4: 2);

Write ('Для продолжения любую клавишу'); readkey;

{ readln; }

{****** Решаем нелинейное уравнение ***************}

clrscr;

Writeln ('Решаем нелинейное уравнение e^ (x) +ln (x) — 10x=0 методом Ньютона ');

Write ('Вводим начальное значение x0 = '); readln (x0);

Write ('Вводим точность расчёта E = '); readln (eps);

p: = nelin (x0,eps);

Writeln ('Корень уравнения e^ (x) +ln (x) — 10x=0 x= ', p: 6: 4);

Write ('Для продолжения нажмите любую клавишу'); readkey;

{**** подготовка к выводу таблицы **************}

clrscr;

Writeln ('Сейчас происходит подготовка к выводу значений ');

Writeln ('временной функции xt2 + wt + p + g, где ');

Writeln (' p — корень уранения e^ (x) +ln (x) — 10x=0 ');

Writeln (' m — больлший по модулю корень системы. ');

Writeln ('Ввод недостающих коэффициентов: ');

Write ('Введите x; x = '); readln (x);

Write ('w = tg (fi); введите fi (в градусах); fi = '); readln (fi);

w: = (sin (fi)) / (cos (fi));

Writeln ('');

Writeln ('Ввод параметров функции: ');

Write ('Введите начальное время t0; t0 = '); readln (t0);

Write ('Введите конечное время tkon; tkon = '); readln (tkon);

Write ('Введите время квантования tkv; tkv = '); readln (tkv);

Writeln ('');

Writeln ('В каком времени рассчитывать функцию? ');

Writeln (' 1 — если в машинном ');

Writeln (' 2 — если в реальном ');

readln (vyb);

Write ('Для вывода результатов всё готово. Нажмите любую клавишу'); readkey;

{****** в ы в о д р е з у л ь т, а т о в *************}

clrscr;

j: =0;

gotoXY (1+j, 1);

Writeln ('±----------------------------+ ');

gotoXY (1+j,

2);

Writeln ('¦ Значение t ¦ Значение f (t) ¦ ');

gotoXY (1+j,

3);

Writeln ('±-----------±---------------¦ ');

t: = t0; i: =1;

while t <= tkon do

begin

gotoXY (1+j, i+3); write ('¦');

gotoXY (14+j, i+3); write ('¦');

gotoXY (31+j, i+3); write ('¦');

gotoXY (4+j, i+3);

writeln (t: 5: 3);

gotoXY (18+j, i+3);

writeln (ft (x, w, p, g, t): 6: 4);

if vyb = 2 then delay (trunc (tkv*58 000));

if i > 19 then

begin

gotoXY (j+1, i+4);

Writeln ('±----------------------------+ ');

i: = - 2;

j: = j+40;

end;

t: = t + tkv; i: = i + 1;

end;

gotoXY (j+1, i+3);

Writeln ('±----------------------------+ ');

readkey;

END.

3. Результат расчета

3.1 Распечатка исходных величин

Начальное приближение корня нелинейного уравнения и заданная точность:

x0=3

e=10-3

Коэффициенты квадратного уравнения:

A1=4 A2 = 2

B1=1 B2 = 1

D1=5 D2 = 7

Время (начальное, конечное, квантования):

t0=0 c

tk=20 c

tkv=1 c

Коэффициенты временной функции:

X= 1

W= tg45o

3.2 Распечатка вычисленных величин

Значение t

Значение f (t)

0. 000

1. 000

2. 000

3. 000

4. 000

5. 000

6. 000

7. 000

8. 000

9. 000

10. 000

11. 000

12. 000

13. 000

14. 000

15. 000

16. 000

17. 000

18. 000

19. 000

20. 000

12. 5265

15. 1463

19. 7660

26. 3858

35. 0056

45. 6254

58. 2451

72. 8649

89. 4847

108. 1045

128. 7242

151. 3440

175. 9638

202. 5836

231. 2034

261. 8231

294. 4429

329. 0627

365. 6825

404. 3022

444. 9220

Список используемых источников

1. Дембовский Л. М. Основы диалоговых режимов работы. Уч. Пособие, БПИ

2. Вальвачев А. Н. Программирование на языке Паскаль. Справочное пособие. Минск: В. ш. 1989 г.

3. Л. А. Тарасевич — Конспект

ПоказатьСвернуть
Заполнить форму текущей работой