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

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



?ёта:

Ручной iёт:

Машинный iёт:

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= 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 Результаты ручного и машинного iёта:

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

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

.5 Вывод:

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

Рис.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 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 Результаты ручного и машинного iёта:

Дано:

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

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

с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;

Результаты машинного iёта соответствуют графику (см. рис.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); ; ;