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

 

Введение


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

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


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) | .


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



Блок-схема к программе показана на рис.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.10.20.30.40.50.60.7-0,46-0.69-0.75-0.69-0.56-0.40-0.25



Значения х


0.80.91.01.11.21.31.4-0.12-0.030.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с.


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

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ