Основы программирования в среде Turbo Pascal

Программирование нестандартных функций. Матрицы и операции над ними. Решение нелинейных уравнений и численное интегрирование. Оптимизация функции и численное дифференцирование. Аппроксимация функции: методы решения, описание программы, результаты.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 12.08.2011
Размер файла 70,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Введение

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

1. использование принципиально новых методологических основ проектирования;

2. широкое применение экономико-математических методов проектирования;

3. всесторонняя автоматизация инженерного труда.

С появлением ЭВМ возможность автоматизации стала реальностью. Появилось много систем автоматизированного проектирования (САПР), управления производством, управления технологическими процессами и др. Возникли новые методы решения таких задач (в отличие от традиционных), которые рассматриваются в курсе информатике. Одной из известных программ является Turbo Pascal. В данной работе мы будем использовать 7-ю версию этой программы.

программирование функция turbo pascal

1. Программирование нестандартных функций

1.1 Постановка задачи

Составить алгоритм и программу вычисления функции с использованием нестандартных функций и подпрограмм (процедур).

1.2 Метод решения

В этой задаче встречается нестандартная функция sh ? параболический синус.

Для определения этой функции воспользуемся невыполняемым оператором FUNCTION.

Составим блок - схемы для определения функции Sh (рис. 1.1) и основной функции Y(рис. 1.2):

Да

Рис.1.1

Рис.1.2

1.3 Описание программы

Program Irina1;

uses crt;

var x,y: Real;

Label 5;

function MySh(x:real):Real;

begin

MySh:=(Exp(x)+Exp(-x))/2;

end;

begin

clrscr;

begin

5: write ('Vvedite x: x= ');

read (x);

end;

if x>0 then

Y:=MySh(ln(x)) + ln(MySh(x)) - Sqrt(x)

else goto 5;

begin

writeln ('y= ',y:5:3);

end;

readkey;

end.

1.4 Результаты

Ручной счёт Машинный счёт

x = 1 Y= 0.434 x = 1 Y= 0.434

x = 3 Y= 2.244 x = 3 Y= 2.244

1.5 Вывод по работе

относительная погрешность составляет 0%.

2. Матрицы и операции над ними

2.1 Постановка задачи

Составить алгоритм и программу операций над матрицами.

(Aij-Bij- Cij)•Djk•L; i=3, j=2,k=3.

2.2 Метод решения

В данной задаче нам предстоит применить правила сложений матриц и умножения

матрицы на число.

Разницей матриц А( i, j ) и B( i , j) называется матрица Е( i , j ) того же порядка, каждый элемент которого равен сумме соответствующих элементов матриц А и В:

E( i , j) =A( i , j)-B( i , j).

Умножением матрицы А( i , j ) на число V называется матрица В( i , j), получающаяся

из матрицы А умножением всех её элементов на V.

Составим блок ? схему (смотри стр. 8-10):

Да

Да

Да

Да

Да

Да

Да

Да Да

Да Да

Да

Да

2.3 Описание программы

Program Irina3;

uses crt;

const L=3;

M=2;

N=3;

VAR

A:array[1..L,1..M] of integer;

B:array[1..L,1..M] of integer;

C:array[1..L,1..M] of integer;

D:array[1..M,1..N] of integer;

E:array[1..L,1..M] of integer;

X:array[1..L,1..M] of integer;

Y:array[1..L,1..N] of integer;

Z:array[1..L,1..N] of integer;

i,j,k,V:integer;

begin

clrscr;

for i:=1 to L do

for j:=1 to M do

begin

write('Vvedite element [',i,',',j,'] matricu A: A[',i,',',j,']= ');

read(A[i,j]);

end;

for i:=1 to L do

for j:=1 to M do

begin

write('Vvedite element [',i,',',j,'] matricu B: B[',i,',',j,']= ');

read(B[i,j]);

end;

for i:=1 to L do

for j:=1 to M do

begin

write('Vvedite element [',i,',',j,'] matricu C: C[',i,',',j,']= ');

read(C[i,j]);

end;

for j:=1 to M do

for k:=1 to N do

begin

write('Vvedite element [',i,',',k,'] matricu D: D[',i,',',k,']=');

read(D[i,k]);

end;

begin

write('Vvedite znachenie V: V= ');

read(v);

end;

for i:=1 to L do

for j:=1 to M do

begin

E[i,j]:= A[i,j]-B[i,j];

end;

for i:=1 to L do

for j:=1 to M do

begin

writeln('E[',i,',',j,']= ',E[i,j]);

end;

for i:=1 to L do

for j:=1 to M do

begin

X[i,j]:= E[i,j] - C[i,j];

end;

for i:=1 to L do

for j:=1 to M do

begin

writeln ('X[',i,',',j,']= ',X[i,j]);

end;

for i:=1 to L do

for k:=1 to N do

Y[i,k]:= 0;

for i:=1 to L do

for j:=1 to M do

for k:=1 to N do

begin

Y[i,k]:= Y[i,k]+ (X[i,j]*D[j,k]);

end;

for i:=1 to L do

for k:=1 to N do

begin

writeln('Y[',i,',',k,']= ',Y[i,k]);

end;

for i:=1 to L do

for k:=1 to N do

begin

Z[i,k]:=Y[i,k]*V

end;

for i:=1 to M do

for k:=1 to M do

begin

writeln('Z[',i',',k']= ,Z[I,k]);

end;

readkey;

end.

2.4. Результаты

2.4.1 Ручной счёт

1 2 3 3 2 1 2 2 2 -4 -2 0

A 1 2 3 - B 3 2 1 - C 2 2 2 = X -4 -2 0

1 2 -12 -6 0

X -4 -2 0 * D 2 1 = Y -12 -6 0

-4 -2 0 1 2 -12 -6 0

-12 -6 0 -24 -12 0

Y -12 -6 0 * 2 = Z -24 -12 0

-12 -6 0 -24 -12 0

Y -12 -6 0 * 2 = Z -24 -12 0

-12 -6 0 -24 -12 0

2.4.2 Машинный счёт

-24 -12 0

Z -24 -12 0

-24 -12 0

2.5 Вывод по работе

Относительная погрешность составляет 0%

3. Решение нелинейных уравнений
3.1 Постановка задачи
Найти значения корней нелинейного уравнения по методу половинного деления на отрезке [a, в] с точностью Е. .
3.2 Метод решения
Подставляя значения а=3 и в=6 в функцию F(x), легко проверить, что F(1)•F(2)>0
(т.е. функция не меняет свой знак на концах отрезка), и производная не меняет знак, поэтому в интервале [3,6] корней нет. Проверим это с помощью программы. Блок-схема приведена на рис. 3.
Нет
Да
Да Да
Нет
Рис.3
3.3 Описание программы
Program Irina4;
uses crt;
var A,B,X,Fa,Fb,Fx,e:real;
Label 5,
10,
15,
20;
begin
clrscr;
5: write('Vvedite A: A= ');
read(A);
10: write('Vvedite B: B= ');
read(B);
write('Vvedite e: e= ');
read(e);
if a<=0 then goto 5 else
if b<=0 then goto 10 else
Fa:=5*ln(a)-a+1;
15: X := (A + B)/2;
Fx:=5*ln(x)-x+1;
if (ABS(Fx) < e) then goto 20;
if ((Fa*Fx) <= 0) then b:=x else
begin
A:=X; Fa:=Fx;
end;
begin
if (ABS(A-B) >= e) then goto 15;
end;
20: write('X= ',X:5:3);
ReadKey;
end.
3.4 Результаты
3.4.1 Машинный счёт.
Машина считает с точностью е = 0,001.
Ш На отрезке [0,1;5] х = 1;
Ш На отрезке [3;16] х = 14,302;
3.4.2 Ручной счёт
Ш На отрезке [0,1;5] х = 1;
Ш На отрезке [3;16] х = 14,302;
3.5. Вывод по работе
Относительная погрешность составляет 0%.
4. Численное интегрирование
4.1 Постановка задачи
Составить алгоритм и программу для вычисления определённого интеграла. Число разбиений каждого интервала интегрирования принять равным 10.
, a =4, b =5, c =6, n =10.
4.2 Метод решения
Для решения таких задач чаще всего применяют методы прямоугольников, трапеции и Симпсона. В нашей задаче мы применим метод прямоугольников. Блок-схема к программе на рис.1 и рис2.
Рис.1
Рис.2
4.3 Описание программы
Program Irina5;
uses crt;
var i:integer;
x1,x2,S1,S2,S,h1,h2:real;
const n=10;
a=0;
b=1;
c=2;
function Mych(x:real):real;
begin
Mych := (Exp(x/2)+Exp(-x/2))/2;
end;
begin
clrscr;
x1:=a; S1:= 0;
h1:=(b-a)/n;
for i:=1 to n do
begin
S1 := S1 + 1/(Mych(x1/2)*Mych(x1/2));
x1:=x1+h1;
S1 := S1*h1;
end;
x2:=b; S2:= 0;
h2:=(c-b)/n;
for i:=1 to n do
begin
S2 := S2 + 1/(1+cos(x2));
x2:=x2*h2;
S2 := S2*h2;
end;
S := S1 + S2;
writeln('S= ',S:5:3);
readkey;
end.
4.4 Результаты
Ручной счёт: Машинный счёт:
A=4, b=5, c=6, h=10, S=0.161; A=4, b=5, c=6, h=10, S=0.161;
4.5 Вывод по работе
Относительная погрешность составляет 0%.
5. Оптимизация функции
5.1 Постановка задачи
Составить алгоритм и программу вычисления наибольшего и наименьшего значений функции на интервале [a,b]=[3,6].
.
5.2 Метод решения
Решение проводим по методу перебора, при котором при нахождении наибольшего значения функции у перед циклом задают в качестве начального значения заведомо малую е, а внутри цикла находят текущее значение у при следующих условиях:
При нахождении минимальной величины функции за начальное значение принимают заведомо большую величину, с которой сравнивают текущее значение у с использованием следующих условий:
Составим блок - схему (см. стр.21):
Нет
Нет
Нет
Да
5.3 Описание программы
Program OptimFun;
uses crt;
var x,h,Y,Ymax,Ymin:real;
const a=3;
b=6;
begin
clrscr;
Write('Input h= ');
Read(h);
Ymax:=5*ln(3)-3+1;
Ymin:=5*ln(6)-6+1;
x:=a;
While x<=b do
begin
Y:=5*ln(x)-x+1;
If Y>Ymax then Ymax:=Y;
x:=x+h;
end;
begin
Writeln('Ymax= ',Ymax:4:2);
end;
begin
x:=b;
while x>=a do
begin
Y:=5*ln(x)-x+1;
if Y<Ymin then Ymin:=Y;
x:=x-h;
end;
begin
writeln('Ymin= ',Ymin:4:2);
end; end;
readkey;
end.
5.4 Результаты при h = 0.001
ручной счёт: ymax =4.05, ymin =3.49; машинный счёт: ymax =4.05, ymin =3.49.
5.5 Вывод
Относительная погрешность составляет 0%.
6. Численное дифференцирование
6.1 Постановка задачи
Составить алгоритм и программу решения дифференциального уравнения: .
6.2 Метод решения

Решение проводим по методу Эйлера. Первообразную функцию в каждой точке определяем по формулам:

Составим блок - схему(см. рис.6).

Да

Рис.6

6.3 Описание программы

Program Difur;

Uses crt;

Label 25, 20;

Var X,Y,X0,Y0,H,Xk:Real;

Begin

Clrscr;

20: Write('Input X0= ');

Read(X0);

Write('Input Y0= ');

Read(Y0);

Write('Input H= ');

Read(H);

Write('Input Xk= ');

Read(Xk);

X:=X0;

Y:=Y0;

If (x*x*x-1)>0 then

25: Y:=Y+H*(x/(x*x*x-1));

Writeln ('X= ', X:4:6,'Y= ',Y:4:6);

X:=X+H;

If X<=Xk Then goto 25;

else goto 20;

Readkey;

End.

6.4 Результаты Машинный счёт:

X0= 2, X= 2.000, Y= 5.286,

Y0= 5, X= 3.000, Y= 5.401,

H= 1, X= 4.000; Y= 5.465.

Xk= 4;

Ручной счёт:

X= 2.000, Y= 5.286,

X= 3.000, Y= 5.401,

X= 4.000; Y= 5.465.

6.5 Вывод

Относительная погрешность составляет 0%.

7. Аппроксимация функции

7.1 Постановка задачи

Найти аппроксимирующую функцию.

Изменение функции у от аргумента х

Значения х

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1.0

1.1

1.2

1.3

1.4

3,7

2,95

2,63

2,45

2,32

2,23

2,16

2,09

2,05

2,0

1,96

1,93

1,9

1,87

7.2 Метод решения

Решать будем методом наименьших квадратов:

Составим блок - схему (см. стр. 26):

7.3 Описание программы

Program Aproks;

uses crt;

const n=14;

var K1,K2,L1,L2,A0,A1:Real;

X,Y:Array[1..n] of real;

i:integer;

Begin

Clrscr;

For i:=1 to n do

begin

Write('Input X[',i,']= ');

Read(X[i]);

end;

For i:=1 to n do

begin

Write('Input Y[',i,']= ');

Read(Y[i]);

end;

K1:=0; K2:=0;

L1:=0; L2:=0;

For i:=1 to n do

begin

K1:=K1+X[i];

K2:=K2+X[i]*X[i];

L1:=L1+Y[i];

L2:=L2+X[i]*Y[i];

end;

A0:=(L2*K1-L1*K2)/(K1*K1-n*K2);

A1:=(K1*L1-n*L2)/(K1*K1-n*K2);

Writeln('A0= ',A0:4:2, 'A1= ',A1:4:2);

Readkey;

end.

7.4 Результаты

7.4.1 Машинный счёт

Подставляем значения х и у из таблицы 7.1. (см. стр.25).

А0= 3,08; А1 =-1,04.

7.4.1. Ручной счёт

;

=

А0= 3,08;

А1= -1,04.

7.5 Вывод по работе

Сравнивая значения машинного и ручного счёта, мы видим точное совпадение чисел.

Заключение

Итак, подводя итоги можно сказать, что появление ЭВМ действительно упростило труд инженеров в разработке проектных решений производственных задач. Работая с программой Turbo Pascal, мы убедились, что это быстрый и точный метод решения задач расчетного и проектного характера. К тому же эта программа очень удобна и проста в применении. Сравнивая ручной счет с машинным, мы увидели, что погрешность вычислений минимальна.

Список использованной литературы

1 Технологическая информатика: методичка /Е. А. Карев: Ульяновск, 2006г.- 52 с

2 Программирование в среде Turbo Pascal: методичка/Ю.В. Псигин, О.Г. Крупенников: Ульяновск, 2008г.- 95 с.

3 Информатика: учебное пособие/Е.А. Карев: Ульяновск, 2006г.- 103 с.

Размещено на Allbest.ru


Подобные документы

  • Точность вычислений, классификация погрешностей. Оценка апостериорной погрешности, численное дифференцирование. Численное решение систем линейных уравнений. Аппроксимация функций методом наименьших квадратов. Решение нелинейных уравнений с неизвестным.

    методичка [611,8 K], добавлен 10.10.2010

  • Разработка алгоритма и программы, обеспечивающей вычисление максимального значения функции на заданном отрезке, первой производной заданной функции. Методика расчёта, алгоритм решения задачи, описание программы. Результаты расчётов и графики функций.

    курсовая работа [576,6 K], добавлен 17.05.2011

  • Традиционные языки высокоуровневого программирования. Обзор методов интегрирования. Оценка апостериорной погрешности. Численное решение систем линейных уравнений. Аппроксимация функций методом наименьших квадратов. Решение дифференциальных уравнений.

    методичка [6,4 M], добавлен 23.09.2010

  • Обзор элементов языка программирования Паскаль, решение задач путем использования численных методов на компьютере. Алгоритм нахождения интеграла функции с помощью метода прямоугольников. Комплекс технических средств, необходимых для решения задачи.

    контрольная работа [36,6 K], добавлен 07.06.2010

  • Разработана программа решения двух задач на языке программирования Turbo Pascal. Спецификация задания. Описание входных и выходных данных. Математическая постановка задачи. Алгоритм ее решения. Описание и блок-схема программы. Результаты тестирования.

    курсовая работа [275,8 K], добавлен 28.06.2008

  • Применения численного интегрирования. Интерполяционные методы нахождения значений функции. Методы прямоугольников, трапеций и парабол. Увеличение точности, методы Гаусса и Гаусса-Кронрода. Функциональные модели и программная реализация решения задачи.

    курсовая работа [450,9 K], добавлен 25.01.2010

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

    курсовая работа [1,2 M], добавлен 17.08.2013

  • Изучение требований и реализации пользовательского интерфейса в среде Turbo Pascal. Разработка текстового, графического режимов работы дисплеев. Рассмотрение численных методов решения трансцендентных уравнений, их алгоритмизации и программирования.

    шпаргалка [776,8 K], добавлен 07.05.2010

  • Интегрирование аналитических выражений с помощью приближенных численных методов. Реализация численного интегрирования функции двух переменных. Понятие двойного интеграла, его геометрический смысл. Решение с помощью метода ячеек, программная реализация.

    курсовая работа [398,5 K], добавлен 25.01.2010

  • Основные методы структурного программирования. Методы половинного деления, Крамера, прямоугольников. Применение языка программирования Turbo Pascal 7.0. Решение системы линейных алгебраических уравнений. Описание стандартных и не стандартных функций.

    курсовая работа [376,8 K], добавлен 14.01.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.