Основные задачи программирования с помощью языка Паскаль

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    461,20 kb
  • Опубликовано:
    2011-08-12
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Основные задачи программирования с помощью языка Паскаль

Введение

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

В качестве примеров рассмотрим основные задачи программирования с помощью языка Паскаль.

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

.1 Составить алгоритм и программу вычисления функции

Y = ,

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

.2 На языке Паскаль функцию описывают с помощью невыполняемого оператора Function1:

Function F(x:Tk):T (где F - имя функции; x - формальный параметр; Tk - тип параметра; T - тип имени функции, например, целого, вещественного и др. типов). Обращение к функции осуществляется в правой части оператора присваивания по имени F(X1,X2,Xk) ( где F - имя функции; Xk - фактические параметры).

В данном случае представим гиперболическую функцию тангенс в виде нестандартной функции с формальным параметром X:

Fns(X) = Th(X) = (Exp(x) - Exp(-X)) / (Exp(X) + Exp(-X)).

Блок-схема к программе показана на рис. 1.

Рис. 1. Блок-схема программы вычисления функции Y = Th(x)/ - x2 :(а) - для вычисления нестандартной функции; (б) - для вычисления функции Y.       

.3 Программа вычисления и построения графика нестандартной функции:

Program GrTrFun; graph, crt; ga, gm, error: integer; ,Y,L,V:real; , MX, MX03, MX09, MSX, , MY09, MY005, MSY: INTEGER; :string[4]; z=0; Myth(x:real):Real; :=(Exp(x)-Exp(-x))/(Exp(x)+Exp(-x)); ; := DETECT; := DETECT;

INITGRAPH(GA, GM, 'C:\TP7\BGI');

ERROR := GRAPHRESULT; ERROR <> GROK THEN ('OSHIBKA!!!', #10#13,GRAPHERRORMSG(ERROR) ); HALT; ; := GetMaxX; MX03 := ROUND (0.3 * MX); := ROUND (0.9 * MX); := GetMaxY; MY09 := ROUND (0.9 * MY); := ROUND (0.05 * MY); (12); (5, MY09, MX-10, MY09); (MX03, MY005, MX03, MY-9); (5, MY09, 15, MY09-3); (5, MY09, 15, MY09+3); (MX-20, MY09-3, MX-10, MY09); (MX-20, MY09+3, MX-10, MY09); (MX03, MY005, MX03-3, MY005+10); (MX03, MY005, MX03+3, MY005+10); (0, 0, 2); SetColor(14); (MX03-40, MY005, ' Y '); (MX-40, MY09-25, ' X '); (0, 0, 1); SetColor(12); := ROUND(MY09 / 15); := -1.0; Y <= 13.501 do

(Y: 4: 1, ST); := ROUND (MY09 - MSY * Y); (MX03 + 3, A, MX03 - 3, A); (MX03 - 40, A - 3, ST); := Y + 0.5; ; := ROUND(MX09 / 6); := -1.8; X <= 4.401 do (X : 4 : 1, ST); := ROUND(MX03 + MSX * X); (A, MY09 + 3, A, MY09 - 3); (A, MY + 15, ST); := X + 0.2; ; (2); := -1.6; X <= 2.2 do := Myth(X);:= (x*x-z*z); V<=0 then := X + 0.0001 else := ( L/Sqrt(V) ) + x*x; Y<=13 then ( ROUND(MX03 + MSX * X), (MY09 - MSY * Y), 2); := X + 0.0001; ABS(X) < 1E-8 Then X := 0; ; (9); (1, 0, 4); ( ROUND(0.4 * MX), ROUND(0.1 * MY),

'Grafic in Turbo Pascal'); (15); (1,0,4); ( ROUND(0.4 * MX), ROUND(0.2 * MY),

'Proect: Osadchuka S.N.'); (15); (1, 0, 2); (ROUND(0.4*MX),ROUND(0.5*MY), 'Y=Th(X)/Sqrt(x*x+z*z)+x*x'); (9);

(0, 0, 2); ( ROUND(0.4 * MX), ROUND(0.4 * MY), 'Graphik function'); not KeyPressed do; ; .

.4 Результаты ручного счёта при z = 0:

при х = 0 Y=th(x) /  - x2 = нет корней;

при х = 1 Y=th(x) /  - x2 = 1.76;

при х = 2 Y=th(x) /  - x2 = 4.48;

Результаты машинного счёта соответствуют графику(см. рис. 2).

.5 Вывод:

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

Рис.2

2. Программирование операций над матрицами

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

(Atij + Btij )×Cik .

 

2.2 На языке Паскаль для описания массива используют оператор Array1. Например, запись Var A: Array [1..50] of Real указывает на то, что переменная А представляет массив, состоящий из 50 элементов вещественного типа. Запись Var C: Array [1..Imax,1..Ymax] of Integer характеризует переменную С, представляющую матрицу, состоящую из М строк и N столбцов, причём М = Imax и N = Ymax. Каждый элемент матрицы целочисленного типа (Integer).Ввод элементов осуществляется с помощью операторов Read и операторов цикла For. Вывод элементов массива производят операторами - Write, Writeln, For. Блок-схему к программе см. на стр.10-16.

Блок-схема к программе:






                                                                    Да




                                                                             Да













                                                                            





















                                                                             Да





                                                                                                  Да










                                                                          












                                                                              Да





                                                                                       Да















                                                                             Да





                                                                                     Да























                                                                                   Да





                                                                                     Да






























                                                                                Да

                          



                                                                                     Да





                                     Да

























                                                                              Да





                                                                                     Да





.3 Программа вычисления матрицы:

Program MatrFun; crt; L=2; =3; =3; :array[1..L,1..M] of integer; :array[1..L,1..M] of integer; :array[1..L,1..M] of integer; :array[1..M,1..L] of integer; :array[1..M,1..L] of integer; :array[1..M,1..L] of integer; :array[1..M,1..M] of integer; ,j,k:integer; ; i:=1 to L do j:=1 to M do ('Vvedite element [',i,',',j,'] matricu A: A[',i,',',j,']= '); (A[i,j]); ; i:=1 to L do j:=1 to M do ('Vvedite element [',i,',',j,'] matricu B: B[',i,',',j,']= '); (B[i,j]); ; i:=1 to L do j:=1 to M do ('Vvedite element [',i,',',j,'] matricu C: C[',i,',',j,']= '); (C[i,j]); ; i:=1 to L do j:=1 to M do [j,i]:= A[i,j]; ; i:=1 to L do j:=1 to M do [j,i]:= B[i,j]; ; i:=1 to L do j:=1 to M do[j,i]:= D[j,i]+ E[j,i]; ; j:=1 to M do k:=1 to N do [j,k]:=0; i:=1 to L do j:=1 to M do k:=1 to N do [j,k]:=Y[j,k]+(X[j,i]*C[i,k]); ; ; ; j:=1 to M do k:=1 to N do (' ', Y[j,k]); ;

end;

readkey;

end.

2.4 Результаты ручного и машинного счёта:

Дано:

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


.5 Вывод:

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

3. Программирование нелинейных уравнений.

.1 Найти значение корней нелинейного уравнения Y = 3×(X - 1)4 - 3×(X - 1)2, по методу половинного деления. Оформить графически.

.2 Суть метода половинного деления1 заключается в том, что приближённое значение корня на каком-либо отрезке может быть найдено исходя из физических соображений. После нахождения приближённого значения корня или отрезка, на котором находится этот корень, последовательно, шаг за шагом, уточняют значение корня. Составим блок-схему к программе(см.рис.3).



3.3 Программа вычисления нелинейного уравнения:

Program GrLinUravn;

uses graph, crt;

var ga, gm, error: integer;

X,Y,B,C,e,Fb,Fn,N:real;

A, MX, MX03, MX09, MSX,

MY, MY09, MY005, MSY: INTEGER; :string[4]; 10,15; := DETECT; := DETECT; ; ('Vvedite B: B= '); (B); ('Vvedite C: C= '); (C); ('Vvedite e: e= '); (e); := 3*Sqr(b-1)*Sqr(b-1)-3*Sqr(b-1);

: N := (B+C)/2; := (3*Sqr(n-1)*Sqr(n-1)) - 3*Sqr(n-1); (Abs(Fn) < e) then goto 15; (Fb*Fn) <= 0 then C:= N else := N; Fb := Fn; ; (Abs(B-C) >= e) then goto 10;

: write('N= ',N:5:3); ; ; ; (GA, GM, 'C:\TP7\BGI'); := GRAPHRESULT; ERROR <> GROK THEN ('OSHIBKA!!!', #10#13,GRAPHERRORMSG(ERROR) ); HALT; ; := GetMaxX; MX03 := ROUND (0.3 * MX); := ROUND (0.9 * MX); := GetMaxY; MY09 := ROUND (0.9 * MY); := ROUND (0.05 * MY); (12); (5, MY09, MX-10, MY09); (MX03, MY005, MX03, MY-9); (5, MY09, 15, MY09-3); (5, MY09, 15, MY09+3); (MX-20, MY09-3, MX-10, MY09); (MX-20, MY09+3, MX-10, MY09); (MX03, MY005, MX03-3, MY005+10); (MX03, MY005, MX03+3, MY005+10); (0, 0, 2); (14); (MX03-40, MY005, 'Y'); (MX-40,MY09-25, 'X'); (0, 0, 1); (12); := Round(MY09/23); :=-2; Y <= 20.001 do (Y: 4: 1, ST); := ROUND (MY09 - MSY * Y); (MX03 + 3, A, MX03 - 3, A); (MX03 - 40, A - 3, ST); := Y +1.0; ; := ROUND(MX09 / 10); := -3; X <= 7.801 do (X : 4 : 1, ST); := ROUND(MX03 + MSX * X); (A, MY09 + 3, A, MY09 - 3); (A, MY + 15, ST); := X + 1.0; ; (2); := -6; X <= 21.001 do := 3*Sqr(x-1)*Sqr(x-1)-3*Sqr(x-1); Y <= 20 THEN ( ROUND(MX03 + MSX * X), (MY09 - MSY * Y), 2); := x + 0.001; ABS(X) < 1E-8 Then X := 0; ; (15); := N; := 3*Sqr(x-1)*Sqr(x-1)-3*Sqr(x-1); Y <= 20 THEN ( ROUND(MX03 + MSX * X), (MY09 - MSY * Y), 15); ; (9); (1, 0, 4); ( ROUND(0.4 * MX), ROUND(0.1 * MY),

'Grafic in Turbo Pascal'); (15); (1,0,4); ( ROUND(0.4 * MX), ROUND(0.2 * MY),

'Proect: Osadchuka S.N.'); (9); (0, 0, 2); ( ROUND(0.4 * MX), ROUND(0.4 * MY), 'Graphik Lin. uravneniay'); not KeyPressed do; ; .

3.4 Результаты ручного и машинного счёта:


Результаты машинного счёта соответствуют графику (см. рис.4).

.5 Вывод:

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

Рис.4

4. Программирование численного интегрирования

.1 Составить алгоритм и программу вычисления определённого интеграла:

S = dx + , где a=5, b=10, c=15.

Число разбиения каждого интервала принять равным 10. Построить график.

.2 Найдём интеграл методом прямоугольников1. Составим блок-схему к программе (см. рис. 5)

Блок схема к программе:

Рис.5

4.3 Программа вычисления определённого интеграла:

Program GrIntegrFun; graph, crt; ga, gm, error,i: integer; ,Y,Z,k,S,S1,S2,h1,h2:real;

A, MX, MX03, MX09, MSX,

MY, MY09, MY005, MSY: INTEGER; :string[4]; n=10; =5; =10; =15; ; := DETECT; := DETECT; :=b; S1:= 0; := (c-b)/n; i:=1 to n do := S1 + (X+1)/Sqrt(x); :=x+h1; ; := S1*h1; ('S1= ', S1:5:3); ; :=c; S2:= 0; := (d-c)/n; i:=1 to n do := S2 + 1/(1+Exp(x)); :=x+h2; ; := S2*h2; ('S2= ', S2:5:3); ; := S1 + S2; ('S= ',S:5:3); ; ;

; (GA, GM, 'C:\TP7\BGI'); := GRAPHRESULT; ERROR <> GROK THEN ('OSHIBKA!!!', #10#13,GRAPHERRORMSG(ERROR) ); HALT; ; := GetMaxX; MX03 := ROUND (0.3 * MX); := ROUND (0.9 * MX); := GetMaxY; MY09 := ROUND (0.9 * MY); := ROUND (0.05 * MY); (12); (5, MY09, MX-10, MY09); (MX03, MY005, MX03, MY-9); (5, MY09, 15, MY09-3); (5, MY09, 15, MY09+3); (MX-20, MY09-3, MX-10, MY09); (MX-20, MY09+3, MX-10, MY09); (MX03, MY005, MX03-3, MY005+10); (MX03, MY005, MX03+3, MY005+10); (0, 0, 2); (14); (MX03-40, MY005, 'Y'); (MX-40,MY09-25, 'X'); (0, 0, 1); (12); := Round(MY09/8); :=-1.5; Y <= 7.001 do (Y: 4: 1, ST); := ROUND (MY09 - MSY * Y); (MX03 + 3, A, MX03 - 3, A); (MX03 - 40, A - 3, ST); := Y + 0.5; ; := ROUND(MX09 / 21); := -6.0; X <= 15.501 do (X : 4 : 1, ST); := ROUND(MX03 + MSX * X); (A, MY09 + 3, A, MY09 - 3); (A, MY + 15, ST); := X + 1.0; ; (2); := b; X <= c do := (x+1)/Sqrt(x); ( ROUND(MX03 + MSX * X), (MY09 - MSY * Y), 2); := x + 0.001; ABS(X) < 1E-8 Then X := 0; ; (15); := b; X < c do := 0; Y <= Z do := ((x+h1)+1)/Sqrt(x+h1); ( Round(MX03 + MSX * X), (MY09 - MSY * Y), 15); := Y + 0.001; ; := X + H1; ; (15); := c; Y := 0; Y <= Z do := (c+1)/Sqrt(c); ( Round(MX03 + MSX * X), (MY09 - MSY * Y), 15); := Y + 0.001; ; (15); := b; k := (b+h1); k <=c do := (k+1)/Sqrt(k); X <= k do ( Round(MX03 + MSX * X), (MY09 - MSY * Y), 15); := x + 0.001; ; := k + h1; ; (2); := c; X <= d do := 1 / ( 1 + Exp(x) ); ( Round(MX03 + MSX * X), (MY09 - MSY * Y), 2); := x + 0.001; Abs(x) < 1E-8 Then X := 0; ; (9); (1, 0, 4); ( ROUND(0.4 * MX), ROUND(0.1 * MY),

'Grafic in Turbo Pascal'); (15); (1,0,4); ( ROUND(0.4 * MX), ROUND(0.2 * MY),

'Proect: Osadchuka S.N.'); (9); (0, 0, 2); ( ROUND(0.5 * MX), ROUND(0.4 * MY), 'Graphik Integrala'); ; ; ; .

4.4 Результаты ручного и машинного счёта:

Ручной счёт:


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

S = 15.281, что соответствует графику (см. рис.6).

.5 Вывод:

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

Рис.6

паскаль программирование функция уравнение

5. Программирование задач оптимизации

.1 Составить алгоритм и программу для вычисления наибольшего и наименьшего значений функции y = 3×(x - 1)4 - 3×(x - 1)2 , на интервале [a,b] = [0;2.5] .

.2 Решаем задачу оптимизации методом перебора1, при котором при нахождении наибольшего значения функции у перед циклом задают в качестве наибольшего значения заведомо малую величину ɛ, а внутри цикла находят текущее значение у при следующих условиях:


При нахождении минимальной величины функции за начальное значение принимают заведомо большую величину, с которой сравнивают значение у с использованием условий:


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

Рис.7


5.3 Программа вычисления наибольшего и наименьшего значения функции:

Program GrOptimFun;

uses graph, crt;

var ga, gm, error: integer;

X,Y,h,Ymax,Ymin,Z,N,Nmin:real;

A, MX, MX03, MX09, MSX,

MY, MY09, MY005, MSY: INTEGER; :string[4]; b=0; =2.5; 10; := DETECT; := DETECT; ; ('Vvedite h: h= '); (h); := 3*Sqr(c-1)*Sqr(c-1)-3*Sqr(c-1); := 3*Sqr(b-1)*Sqr(b-1)-3*Sqr(b-1); := b; N<=c do := 3*Sqr(N-1)*Sqr(N-1)-3*Sqr(N-1); Z > Ymax then Ymax := Z; := N + h; ; ('Ymax = ', Ymax:5:3); ; := c; N >= B do := 3*Sqr(N-1)*Sqr(N-1)-3*Sqr(N-1); Z < Ymin then Ymin := Z; := N - h; ; ('Ymin = ', Ymin:5:3); ; ; ; ; ;

INITGRAPH(GA, GM, 'C:\TP7\BGI');

ERROR := GRAPHRESULT; ERROR <> GROK THEN ('OSHIBKA!!!', #10#13,GRAPHERRORMSG(ERROR) ); HALT; ; := GetMaxX; MX03 := ROUND (0.3 * MX); := ROUND (0.9 * MX); := GetMaxY; MY09 := ROUND (0.9 * MY); := ROUND (0.05 * MY); (12); (5, MY09, MX-10, MY09); (MX03, MY005, MX03, MY-9); (5, MY09, 15, MY09-3); (5, MY09, 15, MY09+3); (MX-20, MY09-3, MX-10, MY09); (MX-20, MY09+3, MX-10, MY09); (MX03, MY005, MX03-3, MY005+10); (MX03, MY005, MX03+3, MY005+10); (0, 0, 2); (14); (MX03-40, MY005, 'Y'); (MX-40,MY09-25, 'X'); (0, 0, 1); (12); := Round(MY09/23); :=-2; Y <= 20.001 do (Y: 4: 1, ST); := ROUND (MY09 - MSY * Y); (MX03 + 3, A, MX03 - 3, A); (MX03 - 40, A - 3, ST); := Y +1.0; ; := ROUND(MX09 /10); := -3; X <= 7.801 do (X : 4 : 1, ST); := ROUND(MX03 + MSX * X); (A, MY09 + 3, A, MY09 - 3); (A, MY + 15, ST); := X + 1.0; ; (2); := -6; X <= 21.001 do := 3*( Sqr(x-1) * Sqr(x-1) ) - 3*Sqr(x-1); Y <= 20 THEN ( ROUND(MX03 + MSX * X), (MY09 - MSY * Y), 2); := x + 0.001; ABS(X) < 1E-8 Then X := 0; ; (15); := 0.3; y:= Ymin; ( ROUND(MX03 + MSX * X), (MY09 - MSY * Y), 15); ; (15); := 1.7; y:= Ymin; ( ROUND(MX03 + MSX * X), (MY09 - MSY * Y), 15); ; (15); := 2.5; y:= Ymax; ( ROUND(MX03 + MSX * X), (MY09 - MSY * Y), 15); ; (9); (1, 0, 4); ( ROUND(0.4 * MX), ROUND(0.1 * MY),

'Grafic in Turbo Pascal'); (15); (1,0,4); ( ROUND(0.4 * MX), ROUND(0.2 * MY),

'Proect: Osadchuka S.N.'); (9); (0, 0, 2); ( ROUND(0.4 * MX), ROUND(0.4 * MY), 'Graphik Optimizacii'); not KeyPressed do; ; .

.4 Результаты ручного и машинного счёта:

Машинный счёт: Ymax = 8.43; Ymin = - 0.750

Машинный счёт соответствует графику (см. рис.8).

.5 Вывод:

На графике функции видно, что Ymax = 8.43; Ymin = - 0.75, что соответствует машинному счёту.

Рис.8

6. Программирование дифференциального уравнения

.1 Составить алгоритм и программу решения дифференциального уравнения y = | (1-x)Ì(1-2x)Ì(1-3x) | .



Блок-схема к программе показана на рис.9.

Рис.9

6.3 Программа решения дифференциального уравнения:

Program GrDifFun; graph, crt; ga, gm, error,i: integer; ,Y,c,c0,ck,y0,h,Fc:real; , MX, MX03, MX09, MSX, , MY09, MY005, MSY: INTEGER; :string[4]; 5,15; ; := DETECT; := DETECT; ; ('Vvedite c0: c0 = '); (c0); ('Vvedite y0: y0 = '); (y0); ('Vvedite cK: cK = '); (cK); ('Vvedite h: h = '); (h); := c0; := y0;

5: Fc := Fc + h*Abs((1-c)*(1-2*c)*(1-3*c)); ; ; ('c = ',c:5:3,' ':3,'Fc = ',Fc:5:3);

c := c + h; c <= cK then goto 5; ; ; ; (GA, GM, 'C:\TP7\BGI'); := GRAPHRESULT; ERROR <> GROK THEN ('OSHIBKA!!!', #10#13,GRAPHERRORMSG(ERROR) ); HALT; END; := GetMaxX; MX03 := ROUND (0.3 * MX); := ROUND (0.9 * MX); := GetMaxY; MY09 := ROUND (0.9 * MY);

:= ROUND (0.05 * MY); (12); (5, MY09, MX-10, MY09); (MX03, MY005, MX03, MY-9); (5, MY09, 15, MY09-3); (5, MY09, 15, MY09+3); (MX-20, MY09-3, MX-10, MY09); (MX-20, MY09+3, MX-10, MY09); (MX03, MY005, MX03-3, MY005+10); (MX03, MY005, MX03+3, MY005+10); (0, 0, 2); (14); (MX03-40, MY005, 'Y'); (MX-40,MY09-25, 'X'); (0, 0, 1); (12); := Round(MY09/15); :=-2; Y <= 13.001 do (Y: 4: 1, ST); := ROUND (MY09 - MSY * Y);(MX03 + 3, A, MX03 - 3, A); (MX03 - 40, A - 3, ST); := Y +1.0; ; := ROUND(MX09 / 8); := -2.4; X <= 5.801 do (X : 4 : 1, ST); := ROUND(MX03 + MSX * X); (A, MY09 + 3, A, MY09 - 3); (A, MY + 15, ST); := X + 0.2; ; (2); := -6; X <= 1.8 do := Abs((1-X)*(1-2*X)*(1-3*X)); Y<=13 then ( ROUND(MX03 + MSX * X), (MY09 - MSY * Y), 2); := x + 0.001; ABS(X) < 1E-8 Then X := 0; ; (15); := c0; Y := y0; x <= ck do := Y + h*Abs((1-x)*(1-2*x)*(1-3*x)); ( ROUND(MX03 + MSX * X), (MY09 - MSY * Y), 15); := x + h; ; (9); (1, 0, 4); ( ROUND(0.4 * MX), ROUND(0.1 * MY),

'Grafic in Turbo Pascal'); (15); (1,0,4); ( ROUND(0.4 * MX), ROUND(0.2 * MY),

'Proect: Osadchuka S.N.'); (9); (0, 0, 2); ( ROUND(0.4 * MX), ROUND(0.4 * MY), 'Graphik Dif. ravneniay'); not KeyPressed do; ; .

.4 Результаты ручного и машинного счёта:

Дано:

x0 = 0; y0 = 1; xk = 3; h = 0.5;

ручной счёт: машинный счёт:

с1 = 0; у1 = 1.5; с1 = 0; у1 = 1.5;

с2 = 0.5; у2 = 1.5; с2 = 0.5; у2 = 1.5;

с3 = 1.0; у3 = 1.5; с3 = 1.0; у3 = 1.5;

с4 = 1.5; у4 = 3.2; с4 = 1.5; у4 = 3.2;

с5 = 2.0; у5 = 10.75; с5 = 2.0; у5 = 10.75;

Результаты машинного счёта соответствуют графику (см. рис.10).

.5 Вывод: относительная погрешность составляет 0%.

Рис.10

7. Программирование аппроксимации

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

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

0.1

0.2

0.3

0.4

0.5

0.6

0.7

-0,46

-0.69

-0.75

-0.69

-0.56

-0.40

-0.25

 

 

 

Значения х


0.8

0.9

1.0

1.1

1.2

1.3

1.4

-0.12

-0.03

0.00

-0.03

-0.12

-0.27

-0.30



Таб. 7.1.

.2 Метод решения

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


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



























Рис.11


Где К1 = , К2 = , L1 = , L2 = .

7.3 Программа вычисления функции:

GrAproksFun; graph, crt; n=14; ga, gm, error,i: integer; ,Y,K1,K2,L1,L2,A0,A1:real; ,W:Array[1..n] of real; , MX, MX03, MX09, MSX, , MY09, MY005, MSY: INTEGER; :string[4]; := DETECT; := DETECT; ; i:= 1 to n do ('Vvedite X[',i,']= '); (Z[i]); ; i:=1 to n do ('Vvedite Y[',i,']= '); (W[i]); ; :=0; K2:=0; :=0; L2:=0; i:=1 to n do :=K1+Z[i]; :=K2+Z[i]*Z[i]; :=L1+W[i]; :=L2+W[i]*Z[i]; ; :=(L2*K1-L1*K2)/(K1*K1-n*K2); :=(K1*L1-n*L2)/(K1*K1-n*K2); ; ('A0= ',A0:4:2, ' A1= ',A1:4:2); ; ; ; (GA, GM, 'C:\TP7\BGI'); := GRAPHRESULT; ERROR <> GROK THEN ('OSHIBKA!!!', #10#13,GRAPHERRORMSG(ERROR) ); HALT; ; := GetMaxX; MX03 := ROUND (0.3 * MX); := ROUND (0.9 * MX); := GetMaxY; MY09 := ROUND (0.7 * MY); := ROUND (0.03 * MY); (12); (5, MY09, MX-10, MY09); (MX03, MY005, MX03, MY-9); (5, MY09, 15, MY09-3); (5, MY09, 15, MY09+3); (MX-20, MY09-3, MX-10, MY09); (MX-20, MY09+3, MX-10, MY09); (MX03, MY005, MX03-3, MY005+10); (MX03, MY005, MX03+3, MY005+10); (0, 0, 2); (14); (MX03-40, MY005, 'Y'); (MX-40,MY09-25, 'X'); (0, 0, 1); (12); := Round(MY09/5); := -2; Y <= 4.501 do (Y: 4: 1, ST); := ROUND (MY09 - MSY * Y); (MX03 + 3, A, MX03 - 3, A); (MX03 - 40, A - 3, ST); := Y +0.5; ; := ROUND(MX09 / 2); := -6; X <= 1.401 do (X : 4 : 1, ST); := ROUND(MX03 + MSX * X); (A, MY09 + 3, A, MY09 - 3); (A, MY + 15, ST); := X + 0.1; ; (2); := -0.6; X <= 1.4 do := A0*X + A1; ( ROUND(MX03 + MSX * X), (MY09 - MSY * Y), 2); := x + 0.001; ABS(X) < 1E-8 Then X := 0; ; (15); := Z[1]; Y := W[1]; ( ROUND(MX03 + MSX * X), (MY09 - MSY * Y), 15); (15); := Z[2]; Y := W[2]; ( ROUND(MX03 + MSX * X), (MY09 - MSY * Y), 15); (15); := Z[3]; Y := W[3]; ( ROUND(MX03 + MSX * X), (MY09 - MSY * Y), 15); (15); := Z[4]; Y := W[4]; ( ROUND(MX03 + MSX * X), (MY09 - MSY * Y), 15); (15); := Z[5]; Y := W[5]; ( ROUND(MX03 + MSX * X), (MY09 - MSY * Y), 15); (15); := Z[6]; Y := W[6]; ( ROUND(MX03 + MSX * X), (MY09 - MSY * Y), 15); (15); := Z[7]; Y := W[7]; ( ROUND(MX03 + MSX * X), (MY09 - MSY * Y), 15); (15); := Z[8]; Y := W[8]; ( ROUND(MX03 + MSX * X), (MY09 - MSY * Y), 15); (15); := Z[9]; Y := W[9]; ( ROUND(MX03 + MSX * X), (MY09 - MSY * Y), 15); (15); := Z[10]; Y := W[10]; ( ROUND(MX03 + MSX * X), (MY09 - MSY * Y), 15); (15); := Z[11]; Y := W[11]; ( ROUND(MX03 + MSX * X), (MY09 - MSY * Y), 15); (15); := Z[12]; Y := W[12]; ( ROUND(MX03 + MSX * X), (MY09 - MSY * Y), 15); (15); := Z[13]; Y := W[13]; ( ROUND(MX03 + MSX * X), (MY09 - MSY * Y), 15); (15); := Z[14]; Y := W[14]; ( ROUND(MX03 + MSX * X), (MY09 - MSY * Y), 15); (9); (1, 0, 4); ( ROUND(0.4 * MX), ROUND(0.1 * MY),

'Grafic in Turbo Pascal'); (15); (1,0,4); ( ROUND(0.4 * MX), ROUND(0.2 * MY),

'Proect: Osadchuka S.N.'); (9); (0, 0, 2); ( ROUND(0.5 * MX), ROUND(0.4 * MY), 'Graphik Aproksimacii'); not KeyPressed do; ; .

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

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

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

А0= - 0.68; А1 =0.46.

График аппроксимирующей функции представлен на рис.12.

Ручной счёт:

;

- 0.27 - 0.30 = - 4.67;

= - 2.451

А0= - 0.68;

А1= 0.46.

.5 Вывод по работе

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

Рис.12

Заключение

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

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

1.       Карев Е.А. Информатика: Учебное пособие. - Ульяновск: УлГТУ, 2006. - 104с.

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

.        Климова Л.М. Практическое программирование. Решение типовых задач. - Москва, 2008. - 526с.

Похожие работы на - Основные задачи программирования с помощью языка Паскаль

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!