Основные задачи программирования с помощью языка Паскаль
Введение
Известно, что технический уровень, а, следовательно, и конкурентоспособность выпускаемой машиностроительными предприятиями продукции в большой степени зависят от качества проектных решений на стадии технологической подготовки производства. В процессе технологической подготовки производства инженерам приходится сталкиваться со сложными задачами расчетного и проектного характера, решение которых во многих случаях с помощью традиционных методов либо практически не возможно, либо занимает много времени. В связи с усложнением конструкций изделий и увеличением их номенклатуры для решения возникающих задач потребуется множество новых проектировщиков, что привело бы в свою очередь к большим затратам. В связи с этим весьма актуальна автоматизация технологической подготовки производства, которая имеет следующие особенности: использование принципиально новых методологических основ проектирования; широкое применение экономико-математических методов проектирования; всесторонняя автоматизация инженерного труда. С появлением ЭВМ возможность автоматизации технологической подготовки производства стала реальностью. Появилось много систем автоматизированного проектирования (САПР), управления производством, управления технологическими процессами и др. Возникли новые методы решения таких задач (в отличие от традиционных), которые рассматриваются в курсе информатики.
В качестве примеров рассмотрим основные задачи программирования с помощью языка Паскаль.
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 | Пользовательское соглашение
ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ