Міністерство Освіти Республіки Білорусь
Білоруський національний технічний університет
Кафедра: "Машини та технології ливарного виробництва»
Курсовий проект
на тему:
«Алгоритмізація та програмування розгалужуються процесів»
«Методи рішення нелінійних рівнянь»
Мінськ 2010р.
Постановка завдання № 1. Розробити алгоритм і програму для обчислення функції Z (x), заданої інтервальної на різних проміжках. Якщо функція Z (x) невизначена при будь-яких значеннях x, то в програмі необхідно передбачити виведення повідомлення "При цьому X функція невизначена" і вивести значення X. Загальний вид завдання функції:
де ,
,
,
,
Значення a, b, c, d обчислюються за формулами:
, ,
, , Де n - номер варіанта.
Лістинг програми № 1
Program kursovoj _ Braginec _ DA;
var j: integer;
a, b, c, d, x, x4, x7, x11, x15, x25: real;
i, n: integer;
z: extended;
Begin
a: = 0; b: = 0; c: = 0; n: = 3;
for j: = 1 to n +3 do begin
a: = a + sin (j); c: = c + j * j * j + j; end;
for j: = 2 to n +3 do begin
b: = b +1 / ln (j); end; d: = a + b + c;
x4: = 5 * 4-80; x7: = 5 * 7-80; x11: = 5 * 11-80; x15: = 5 * 15-80; x25: = 5 * 25-80;
writeln ('Vvedite znachenie x =');
readln (x);
if x <= x4 then begin
if (x> 1) and (a> 1) then begin
z: = b * SQRT (x) + SQRT (ln (a * x)) + c * x * x * x + d * exp ((1 / 10) * ln (x));
writeln ('x =', x: 6:2, 'Z =', z: 12:3);
end
else writeln ('x =', x: 6:2, 'Z = net znacheniy');
end;
if (x4 <x) and (x <= x7) then begin
if (x> 0) then begin
z: = a * exp (3 * ln (cos (ABS (x ))))+ b * sin (d * x) + exp (4 * (sin (x) / cos (x))) + d * ln (x) * ln (x);
writeln ('x =', x: 6:2, 'Z =', z: 12:3); end else
writeln ('x =', x: 6:2, 'Z = net znacheniy');
end;
if (x7 <x) and (x <= x11) then begin
if (x> 0) and (x / d> = 0) then begin
z: = ln (abs (a * x)) + b * cos (x * x * x * x) * sin (1 / (x * x * x))-c * ln (x) * ln (x) * ln (x) + sqrt (x / d);
writeln ('x =', x: 6:2, 'Z =', z: 12:3);;
end
else writeln ('x =', x: 6:2, 'Z = net znacheniy');
end;
if (x11 <x) and (x <= x15) then begin
if (x-5 * x * x * x> 0) and (d> 0) and (x * x * x-2 * d <> 0) and (exp (3 * ln (x + c))> = 0) then begin
z: = a * exp (-4 * x) + b * ln (x-5 * x * x * x) + c * SQRT (exp (3 * ln (x + c))) + ln (d) / (x * x * x-2 * d);
writeln ('x =', x: 6:2, 'Z =', z: 12:3);;
end
else writeln ('x =', x: 6:2, 'Z = net znacheniy');
end;
if (x15 <x) and (x <= x25) then begin
if (x <> 0) and (xd> 0) and (d> = 0) then begin
z: = a * exp (3 / 8 * ln (ln (ABS (x ))))+ b * sin (b * exp (-b / x)) + (xc) + d * sin (x * x * x) * sin (x * x * x) / (cos (x * x * x) * cos (x * x * x) * ln (xd));
writeln ('x =', x: 6:2, 'Z =', z: 12:3);
end
else
writeln ('x =', x: 6:2, 'Z = net znacheniy');
end;
if x> x25 then begin
z: = 0;
writeln ('x =', x: 6:2, 'Z =', z: 12:3); end;
End.
Результати завдання № 1
Vvedite znachenie x = 23
x = 23.00 Z = net znacheniy
Vvedite znachenie x =- 37
x =- 37.00 Z = net znacheniy
Vvedite znachenie x =- 100
x =- 100.00 Z = net znacheniy
Vvedite znachenie x =- 7
x = -7.00 Z =- 149327123808.531
Постановка задачі 2. Розробити алгоритм та програму формування одновимірного масиву A [i] за умовою A [i] = Z (x), заданої інтервальної на різних проміжках. Якщо функція Z (x) невизначена при будь-яких значеннях x, то в програмі необхідно передбачити висновок повідомлення «При цьому Х функція невизначена» і вивести значення Х. Вид завдання функції:
де ,
,
,
,
Значення a, b, c, d обчислюються за формулами:
, ,
, , Де n - номер варіанта.
При формуванні функції масиву A [i] можна вибрати кілька варіантів кроку, але за умови, щоб на кожному з інтервалів було взято не менше 10-ти значень
При виконанні завдання крок за x можна брати нецілим числом. У програмі необхідно організувати виведення всіх елементів A [i] і числа їх значень на монітор.
Блок-схема для задачі № 2.
Лістинг програми № 2
Program Kursovoj_Braginec_DA;
uses crt;
var j: integer;
a, b, c, d, x4, x7, x11, x15, x25: real;
i, n, x: integer;
f: text;
z: extended;
Begin
clrscr;
assign (f, 'Otvet.txt');
rewrite (f);
a: = 0; b: = 0; c: = 0; n: = 3;
for j: = 1 to n +3 do begin
a: = a + sin (j); c: = c + j * j * j + j; end;
for j: = 2 to n +3 do begin
b: = b +1 / ln (j); end; d: = a + b + c;
x4: = 5 * 4-80; x7: = 5 * 7-80; x11: = 5 * 11-80; x15: = 5 * 15-80; x25: = 5 * 25-80; x: =- 80 ; for i: = 1 to 131 do begin
if x <= x4 then begin
if (x> 1) and (a> 1) then begin
z: = b * SQRT (x) + SQRT (ln (a * x)) + c * x * x * x + d * exp ((1 / 10) * ln (x));
writeln (f, 'x =', x: 6, 'A [', i ,']=', z: 6:3);
end
else writeln (f, 'x =', x: 6, 'A [', i, '] = net znacheniy');
end;
if (x4 <x) and (x <= x7) then begin
if (x> 0) then begin
z: = a * exp (3 * ln (cos (ABS (x ))))+ b * sin (d * x) + exp (4 * (sin (x) / cos (x))) + d * ln (x) * ln (x);
writeln (f, 'x =', x: 6, 'A [', i ,']=', z: 6:3); end else
writeln (f, 'x =', x: 6, 'A [', i, '] = net znacheniy');
end;
if (x7 <x) and (x <= x11) then begin
if (x> 0) and (x / d> = 0) then begin
z: = ln (abs (a * x)) + b * cos (x * x * x * x) * sin (1 / (x * x * x))-c * ln (x) * ln (x) * ln (x) + sqrt (x / d);
writeln (f, 'x =', x: 6, 'A [', i ,']=', z: 6:3); end
else
writeln (f, 'x =', x: 6, 'A [', i, '] = net znacheniy');
end;
if (x11 <x) and (x <= x15) then begin
if (x-5 * x * x * x> 0) and (d> 0) and (x * x * x-2 * d <> 0) and (exp (3 * ln (x + c))> = 0) then begin
z: = a * exp (-4 * x) + b * ln (x-5 * x * x * x) + c * SQRT (exp (3 * ln (x + c))) + ln (d) / (x * x * x-2 * d);
writeln (f, 'x =', x: 6, 'A [', i ,']=', z: 6:3);
end
else
writeln (f, 'x =', x: 6, 'A [', i, '] = net znacheniy');
end;
if (x15 <x) and (x <= x25) then begin
if (x <> 0) and (xd> 0) and (d> = 0) then begin
z: = a * exp (3 / 8 * ln (ln (ABS (x ))))+ b * sin (b * exp (-b / x)) + (xc) + d * sin (x * x * x) * sin (x * x * x) / (cos (x * x * x) * cos (x * x * x) * ln (xd));
writeln (f, 'x =', x: 6, 'A [', i ,']=', z: 6:3);
end
else
writeln (f, 'x =', x: 6, 'A [', i, '] = net znacheniy');
end;
if x> x25 then begin
z: = 0;
writeln (f, 'x =', x: 6, 'A [', i ,']=', z: 6:3); end;
x: = x +1;
end;
End.
Результати завдання № 2.
x = -80 A [1] = net znacheniy
x = -79 A [2] = net znacheniy
x = -78 A [3] = net znacheniy
x = -77 A [4] = net znacheniy
x = -76 A [5] = net znacheniy
x = -75 A [6] = net znacheniy
x = -74 A [7] = net znacheniy
x = -73 A [8] = net znacheniy
x = -72 A [9] = net znacheniy
x = -71 A [10] = net znacheniy
x = -70 A [11] = net znacheniy
x = -69 A [12] = net znacheniy
x = -68 A [13] = net znacheniy
x = -67 A [14] = net znacheniy
x = -66 A [15] = net znacheniy
x = -65 A [16] = net znacheniy
x = -64 A [17] = net znacheniy
x = -63 A [18] = net znacheniy
x = -62 A [19] = net znacheniy
x = -61 A [20] = net znacheniy
x = -60 A [21] = net znacheniy
x = -59 A [22] = net znacheniy
x = -58 A [23] = net znacheniy
x = -57 A [24] = net znacheniy
x = -56 A [25] = net znacheniy
x = -55 A [26] = net znacheniy
x = -54 A [27] = net znacheniy
x = -53 A [28] = net znacheniy
x = -52 A [29] = net znacheniy
x = -51 A [30] = net znacheniy
x = -50 A [31] = net znacheniy
x = -49 A [32] = net znacheniy
x = -48 A [33] = net znacheniy
x = -47 A [34] = net znacheniy
x = -46 A [35] = net znacheniy
x = -45 A [36] = net znacheniy
x = -44 A [37] = net znacheniy
x = -43 A [38] = net znacheniy
x = -42 A [39] = net znacheniy
x = -41 A [40] = net znacheniy
x = -40 A [41] = net znacheniy
x = -39 A [42] = net znacheniy
x = -38 A [43] = net znacheniy
x = -37 A [44] = net znacheniy
x = -36 A [45] = net znacheniy
x = -35 A [46] = net znacheniy
x = -34 A [47] = net znacheniy
x = -33 A [48] = net znacheniy
x = -32 A [49] = net znacheniy
x = -31 A [50] = net znacheniy
x = -30 A [51] = net znacheniy
x = -29 A [52] = net znacheniy
x = -28 A [53] = net znacheniy
x = -27 A [54] = net znacheniy
x = -26 A [55] = net znacheniy
x = -25 A [56] = net znacheniy
x = -24 A [57] =- 5.08366015838512507E +0040
x = -23 A [58] = net znacheniy
x = -22 A [59] = net znacheniy
x = -21 A [60] = net znacheniy
x = -20 A [61] = net znacheniy
x = -19 A [62] = net znacheniy
x = -18 A [63] =- 1919150107529503510000000000000.000
x = -17 A [64] =- 35150460342785758200000000000.000
x = -16 A [65] =- 643803138411235418000000000.000
x = -15 A [66] =- 11791665798573937500000000.000
x = -14 A [67] =- 215971892663317589000000.000
x = -13 A [68] =- 3955663196137779530000.000
x = -12 A [69] =- 72450498665911326200.000
x = -11 A [70] =- 1326977170869205140.000
x = -10 A [71] =- 24304434670875825.700
x = -9 A [72] =- 445151244453472.912
x = -8 A [73] =- 8153225056674.438
x = -7 A [74] =- 149327123808.531
x = -6 A [75] =- 2730605050.098
x = -5 A [76] =- 45581616.828
x = -4 A [77] = net znacheniy
x = -3 A [78] = net znacheniy
x = -2 A [79] = net znacheniy
x = -1 A [80] = net znacheniy
x = 0 A [81] = net znacheniy
x = 1 A [82] = net znacheniy
x = 2 A [83] = net znacheniy
x = 3 A [84] = net znacheniy
x = 4 A [85] = net znacheniy
x = 5 A [86] = net znacheniy
x = 6 A [87] = net znacheniy
x = 7 A [88] = net znacheniy
x = 8 A [89] = net znacheniy
x = 9 A [90] = net znacheniy
x = 10 A [91] = net znacheniy
x = 11 A [92] = net znacheniy
x = 12 A [93] = net znacheniy
x = 13 A [94] = net znacheniy
x = 14 A [95] = net znacheniy
x = 15 A [96] = net znacheniy
x = 16 A [97] = net znacheniy
x = 17 A [98] = net znacheniy
x = 18 A [99] = net znacheniy
x = 19 A [100] = net znacheniy
x = 20 A [101] = net znacheniy
x = 21 A [102] = net znacheniy
x = 22 A [103] = net znacheniy
x = 23 A [104] = net znacheniy
x = 24 A [105] = net znacheniy
x = 25 A [106] = net znacheniy
x = 26 A [107] = net znacheniy
x = 27 A [108] = net znacheniy
x = 28 A [109] = net znacheniy
x = 29 A [110] = net znacheniy
x = 30 A [111] = net znacheniy
x = 31 A [112] = net znacheniy
x = 32 A [113] = net znacheniy
x = 33 A [114] = net znacheniy
x = 34 A [115] = net znacheniy
x = 35 A [116] = net znacheniy
x = 36 A [117] = net znacheniy
x = 37 A [118] = net znacheniy
x = 38 A [119] = net znacheniy
x = 39 A [120] = net znacheniy
x = 40 A [121] = net znacheniy
x = 41 A [122] = net znacheniy
x = 42 A [123] = net znacheniy
x = 43 A [124] = net znacheniy
x = 44 A [125] = net znacheniy
x = 45 A [126] = net znacheniy
Постановка завдання № 3.
Розробити алгоритм та програму для вирішення нелінійного рівняння з параметрами методом половинного ділення. За допомогою програми обчислити всі корені рівнянь у відповідності із зазначеним варіантом і заданою точністю ε = 10 -4. Параметр а задати самостійно методом перебору. Визначити для яких а рівняння має 1,2,3,4,5 дійсних коренів.
3 |
|
Побудувати таблицю яка повинна ілюструвати кількість коренів рівняння для F (x, a) = 0 (обмежитися 5-ма країнами при заданому). Побудувати графік F (x, a) від x для параметрів a відповідного найбільшій кількості коренів знайдених в завданні.
Лістинг програми № 3.
Program Kursovoj_Braginec_DA;
uses crt;
var
yn, yk, e, y, a, x, h, h1: real;
d: integer;
koren: boolean;
f: text;
function funk (x, a: real): real;
begin
funk: = ln (x * a) + exp (2 * ln (cos (a * x))) / sin (a * x) + SQRT ((x +7) / a) + (x +7) + a ;
end;
Begin
clrscr;
assign (f, 'Otvet.txt');
rewrite (f);
a: = 0; h: = 0.001; h1: = 0.001;
while a <4 do begin
writeln (f, 'pri a =', a: 8:4);
d: = 0;
while x <= 10 do begin
if (sin (a * x) <> 0) and (x * a> 0) and ((x +7) / a> = 0) then begin funk (x, a);
if funk (x, a) = 0 then begin
d: = d +1;
writeln (f, 'x =', x: 8:4);
end;
if funk (x, a) * funk (x + h1, a) <0 then
begin d: = d +1;
yn: = x;
yk: = x + h1;
e: = 0.0001;
koren: = false;
while (abs (yk-yn)> e) and (not (koren)) do begin
y: = (yk + yn) / 2;
if funk (y, a) = 0 then koren: = true
else if funk (yn, a) * funk (y, a) <0 then
yk: = y
else yn: = y;
end;
if koren = true then writeln (f, 'x =', y: 8:4)
else writeln (f, 'x =', yn: 8:4);
end;
end;
x: = x + h1;
end;
writeln (f, 'kopHey', d);
a: = a + h;
end;
close (f); END.
Результати рахунку:
pri a = -1.1000
kopHey 1
x =- 9.9990
pri a = -5.0000
kopHey 2
x = -7. 6670
x = -7.0740
pri a = -7.0100
kopHey 3
x = -9.8300
x = -11.6230
x = -18.9510
pri a = -11.2020
kopHey 4
x = -7.0010
x = -9.4230
x = -7.1030
x = -10.4930
pri a = -13.9320
kopHey 5
x = -7.1726
x = -9.2348
x = -9.3293
x = -10.7739
x = -11.3739