нее число аппаратов, занятых или свободных от обслуживания и т.д. Однако наиболее целесообразно использовать экономические показатели, которые дают обобщенную характеристику производствен- ных процессов.
Иногда при планировании и организации производственных процессов необходимо учитывать значительно больше случайных факторов. В этом случае хорошие результаты могут быть получены с помощью методов факторного анализа.
Список литературы
1. Гольштейн Е.Г., Юдин Д.Б. Задачи линейного программирования транспортного типа. — М.: Наука, 1969. — 256 с.
2. Кожин А.П. Математические методы в планировании и управлении грузовыми перевозками. — М.: Высш. шк., 1991.
— 296 с.
ƏОЖ 510.67
А.Е.Сланбекова1, Ш.К.Каменова2
1Е.А.Бөкетов атындағы Қарағанды мемлекеттік университеті;
2№ 4 орта мектебі, Қарағанды
АЛГЕБРАЛЫҚ СЫЗЫҚТЫҚ ЕМЕС ТЕҢДЕУЛЕРДІ ШЕШУДЕ ҚОЛДАНЫЛАТЫН ПРОГРАММАЛАУ ТІЛДЕРІН ТАЛДАУ
Рассмотрены численные методы решения нелинейных уравнений, приведены программы вы- числения корней нелинейных уравнений на языке Turbo Pascal и Фортран, дан сравнительный анализ изученных методов и программ.
Present work explains numerical methods of solving nonlinear equations. Contains Turbo Pascal and Fortran programs for calculation solutions of nonlinear equations and benchmark analysis of these methods and programs.
Осы жұмыстың мақсаты — алгебралық жəне трансценденттік теңдеулерді жуықтап шешу əдісте- рін табу. Бұл əдістермен шешудің Turbo Pascal жəне Фортран тілдерінде бағдарламасын жасап, есеп- теулерді құрып, оларды салыстырып талдау.
Жұмыстың негізгі түсініктерін қарастырайық.
( ) 0
f x (1)
теңдеуі берілген болсын, мұндағы ( )f x функциясы кейбір a x b аралығында анықталған жəне үз- діксіз. x əрбір мағынасында (1) теңдеудің түбірі немесе ( )f x функциясының нөлі деп аталады.
Егер ( )f x функциясы көпмүшелік болса, онда (1) теңдеуді алгебралық деп атайды, ал ( )f x функциясын тригонометриялық, логарифмдік т.б. функциялар енетін болса, онда (1) теңдеуді транс- цеденттік деп атайды [1].
Функцияны нольге айналдыратын кез келген x мəнін (1) теңдеудің түбірі деп атайды [1]. (1) тең- деудің дəл түбірін дербес жағдайда ғана табуға болады. Сондықтан (1) түрдегі теңдеуді сандық шешу тəсілдерімен жасауға болады. Ол тəсіл көмегімен (1) теңдеудің шешімін жуықтап табу мүмкіндігі туады.
Бұл жағдайда екі есепті шешуге тура келеді [2]:
1) түбірді оқшаулау, яғни теңдеудің бір ғана түбірін қамтитын жеткілікті түрде кішкене интер- валды анықтау;
2) түбірді берілген дəлдікпен анықтау.
(1) теңдеудің нақты түбірі жататын облысты анықтауда егер белгілі бір кесіндінің екі шеткі нүк- телерінде əртаңбалы мəндер қабылдайтын болса, онда бұл кесіндіде ( ) 0f x функциясының ең бол- мағанда бір түбірі болатын қасиетіне сүйенеміз.
Ре по зи то ри й Ка рГ У
1) ( ) 0f x теңдеудің бір ғана түбірі жататын облысты анықтау үшін, масалы, графикалық тəсіл- ді пайдалануға болады.
2) Екінші есепті шешудің көптеген тəсілдері бар, біз келесі тəсілдеріне тоқталамыз [1]:
қақ бөлу əдісі;
хорда əдісі;
ньютон əдісі.
Бұл тəсілдерде бір ғана түбір жататын [a, b] кесіндісі белгілі деп болжаймыз. Осы түбірді табу үшін Turbo Pascal жəне Фортран тілдерінде бағдарламасын жасаймыз.
Компьютерде есептерді шығаруда төмендегідей кезеңдерге бөлуге болады:
1. Есептің қойылуы. Оны тұтынушы өзі тұжырымдайды немесе тапсырма түрінде алады.
2. Есептің математикалық сипатталуы.
3. Есепті шешудің алгоритмін жасау.
4. Белгілі бір алгоритмдік тілде программа жасау.
5. Бастапқы деректерді даярлау.
6. Программа мен бастапқы деректерді енгізу.
7. Программа қателерін түзету.
8. Компьютерде есепті шығару жəне нəтижелерін өңдеу.
Біздің қарастырылған жағдайларымызда есептің математикалық тұжырымдалуы белгілі болады, сондықтан 1 жəне 2 кезеңдерде орындау қажеттігі жоқ, бірден есепті шешудің алгоритмін жасауға кі- рісеміз. Алгоритм деп айнымалы шамалардың сандық мəндеріне арифметикалық, логикалық амал- дардың тізбегін қолдану арқылы есептің шешіміне бастапқы деректердің жеткілікті диапазонда өзгер- гендігі нəтижеге жеткізетін амалдар жиынтығын айтамыз. Сонымен, алгоритмді жасаған кезде мате- матикалық тұжырымдау есепті шығару процедурасына түрленеді, ол арифметикалық амалдар мен олардың арасындағы логикалық байланыстар тізбегінен тұрады.
Паскаль тілін 1968–1971 жылдары швейцариялық ғалым Никлаус Вирт оқып-үйренуге қолайлы программалау тілі ретінде ұсынған болатын. Бұл тілдің стандарты кейінірек бекітілді, ол сол кездерде кең таралған АЛГОЛ, ФОРТРАН, БЕЙСИК тілдеріне қарағанда жетілдірілген, жұмыс істеуге ынғай- лы тіл болды. Паскаль тілі өзінің қарапайымдылығының жəне тиімділігінің арасында дүние жүзіне тез таралды. Қазіргі кезде барлық дербес компьютерлер осы тілде жұмыс істей алады. Паскаль тілін- де жазылған программаның дұрыстығын компьютерде тексеру жəне жіберілген қатені түзету оңай.
Бұл тілде жазылған программа компьютерде орындалу барысында алдымен трансляцияланады, объектік программаға түрлендіріледі де, содан кейін ғана орындалады. Осы сəтте компьютерде прог- рамманың екі нұсқасы болады, оның біріншісі алгоритмдік тілдегі алғашқы түпнұсқасы, ал екінші- сі — объектік кодтағы жазылған программа. Есеп нəтижесін машиналық кодта жазылған программа арқылы аламыз, ал программаны түзету қажет болғанда, оның алгоритмдік тілде жазылған алғашқы нұсқасы өңделеді.
Қазіргі кезде Паскаль тілі кез келген күрделі есептерді шығара алатын, кең таралған стандартты оқу тіліне айналды. Сондықтан жалпы білім беретін мектептерде программалауды оқытуда осы Пас- каль тілі таңдалып алынған. Енді осы тілдің ерекшеліктері мен мүмкіндіктеріне тоқталып өтейік.
Программалар белгілі бір мəселені, есепті шешуге арналған. Есеп шығару барысында компь- ютерге бастапқы мəліметтер енгізіледі, олар қалай өнделетіндігі көрсетіледі жəне нəтиже қандай түр- де, қандай құралғыға шығарылатыны туралы айтылады.
Паскаль тіліндегі программа жеке-жеке жолдардан тұрады. Олардың теру, түзуге арнайы мəтін- дік редакторлар арқылы атқарылады. Программа алдындағы азат жол немесе бос орын саны өз қа- лауымызша алынады. Бір қатарға бірнеше команда немесе оператор орналаса алады, олар бір-бірімен нүктелі үтір арқылы ажыратылып жазылады, бірақ бір жолда бір ғана оператор тұрғаны дұрыс, ол тү- зуге жеңіл, əрі оқуға ыңғайлы.
Фортран тілі процедура бағытталған, ол көптеген инженерлік жəне ғылыми-техникалық мазмұн- дағы есептерді шешу үшін колданылады. Бұл тілді сипаттайтын алғашқы мəлімдемені 1954 жылы профессор Дж.Бэкустың басшылығымен бір топ американ мамандары жасады. Фортран (FORTRAN) алғашқы FORMULA TRANSLATOR деген сөздерінің алғашқы буындарынан құрастырылып алынған,
«формула аударғыш» деген мағынаны береді. Тілдің тез, кеңінен тарауына бəрінен бұрын оның қара- пайымдылығы, конструкцияларының жазылуы кəдімгі математикалық жазбаға ұқсайтындығы, соны- мен қатар мəліметтерді енгізу-шығарудағы үлкен мүмкіншіліктер, ғылыми ішкі программалар биб- лиотекасының кеңдігі жатады.
Ре по зи то ри й Ка рГ У
Фортран тілінде программалау курсы университеттің математика, физика жəне химия факуль- теттерінің студенттеріне оқытылады. Фортран тілінің нəтижелігі мен дəлдігінің басқа тілдермен са- лыстырғанда жоғары денгейде болуына байланысты, студенттер курстық, дипломдық жұмыстарды Фортран тілінде программалауды жөн көреді.
Кейінгі жылдарда тілдің үздіксіз дамуына компьютердің сыртқы пішіні ғана емес, мазмұны мен функциялары өзгеріп, программалық жабдықтар мен операциялық жүйелердің өзгеруі көп себеп бол- ды. Мысалы, Фортран-90 стандартты бұрынғы пайдаланған Фортран-70 стандартынан əлдеқайда өз- герген.
Қақ бөлу əдісінде [2] f x( ) 0 теңдеуі берілсін, мұндағы ( )f x функциясы [a, b] кесіндісінде үз- діксіз жəне ( ) * ( ) 0f a f b .
Егер ( )f a функциясының түрі жеткілікті түрде күрделі болса, онда Ньютон əдісінде есептеуде қолданылатын '( )f x жəне хорда əдісте жинақтылығын шамалайтын '( ) x туындыларын табу қиын- дап кетеді. Мұндай жағдайда қақ бөлу əдісін қолдануға болады. Есептеуді көп қажет еткенмен, іздеп отырған нəтижеге алып келеді.
(1) теңдеудің [a, b] кесіндісінде жатқан шешімін табу үшін кесіндіні тең бөлеміз, яғни бастапқы жуықтау үшін x0(a b ) / 2 тең етіп аламыз. Егер ( ) 0f x болса, онда [ , ]a x0 , [ , ]x b0 кесіндісінің қайсысының шеткі нүктелерінде функция əр түрлі таңба қабылдаса, сонысын таңдаймыз. Таңдап ал- ған кесіндіні тағыда екіге бөлеміз.
Кесіндіні тең бөлу процесін функцияның мəндері əр түрлі таңбалы болып келетін кесіндінің ұзындығы алдын ала берілген санынан кіші болғанша жалғастырамыз.
Қақ бөлу əдісін программа түрінде өрнектеуге тырысайық. Программа үшін оны қолдану нұс- қауы болуы тиіс.
Ньютон əдісінде [2] ( ) 0f x теңдеудің [a, b] кесіндісінде бір ғана түбірі болсын, сонымен қатар '( )
f x жəне "( )f x анықталған, үздіксіз жəне [a, b] кесіндісінде таңбасы тұрақты дейік.
Ньютон əдісін қолданып, f x( )x34x23x 5 0 теңдеуінің [1, 2] кесіндісінде жуық түбірін 0,001
дəлдігімен есептейтін программа құрып, нəтижені экранға шығарыңыз.
'( ) 3 2 8 3
f x x x . Жуықтап есептеу формуласын төмендегі түрде анықтаймыз:
1 1
1
( )
'( )
n n n
n
x x f x
f x
.
Бізде мысал үшін
3 2
1 2
4 3 5
3 8
n n
x x x
x x
x x
,
мұндағы n1, 2...
Бастапқы x0 жуықтаудан f x f x( ) ''( ) 00 0 шарты орындалатындай есепті анықтаймыз, себебі
''( ) 12 8 0
f x x x [1,2], ал енді x0 нүктесін таңдай білуіміз керек.
Есепті xnxn1 10 2 дəлдікке жеткенге дейін тексереміз.
Есептегі n санының мəні орындалған итерациялар санына тең болады.
Хорда əдісінде [2] де осылай алгоритмін құрғанда кезеңдерге бөліп жазамыз. Қысқаша теория- лық мағлұматтан соң, бірден мысалды шешуге кірісеміз. Сонымен, кез келген лаборияториялық жұ- мыстарды жоғарыда айтылған кезеңдерге бөліп ашып жазуға болады. Қысқаша сөздік алгоритмде не істейтініңді анық түсініп алған соң, оның негізінде сүйене отырып, тілдің ережесі мен операторлар негізінде программа құрамыз.
Компьютерді игеру екінші сауаттылықты игеру болып табылады. Ал алгоритмдік тіл арқылы оның көптеген қызық қырларын ашамыз жəне басқа мүмкіндіктерін оқып-үйренгенде, өзіңді еркіні- рек сезінетін боласың.
Сонымен, сонында айтарымыз Паскаль тілі программалауды енді үйреніп жатқандарға қолайлы- сы болып табылады. Сол себепті да бұл тілдегі программаларда қолданылатын айнымалылар типін алдын ала сипаттау міндетінің талабы расталған.
Ре по зи то ри й Ка рГ У
Ал Фортран тілі қолданбалы есептеулермен айналысатын тəжірибелі мамандарға арналған. Бұ- ған дəлел кейбір айнымалыларды сипаттау міндетті емес — бұл жағдайда үнсіз келісім ережесі қол- данылады. Фортран тіліндегі біздің программаларда үнсіз келісім ережесі бойынша n айнымалысын пайдаланамыз. Үнсіз келісім ережесін қолдану тəжірибелі маман уақытының бір уақыттың бөлігін босатады жəне сол уақытта есепті шешу алгоритміне қатысты программада жұмыс істеуге мүмкіндік береді.
Есептің Pascal тілінде орындалуы [3].
3 2
3x 4х 12х 5 0 теңдеуін 0,01 дəлдікпен қақ бөлу əдісі бойынша шешу программасы бы- лай жазылады.
uses crt;
const e=0.01;
label 1,2;
var a,b,c:real;
function f(x:real):real;
begin
f:=3*x*x*x*x+4*x*x*x-12*x*x-5;
end;
begin clrscr;
a:=1;
b:=2;
if f(a)*f(b)>0 then begin write('tubiri jok');
goto 2; end;
1: c:=(a+b)/2;
if f(a)*f(c)>0 then a:=c else b:=c;
if (abs(a-b)>e) then goto 1;
write('a=',c);
2:end.
Жауабы: a=1,5928 7-қадамда орындалды.
3 0,1 2 0,4 1,5
x х х теңдеуін 0,001 дəлдікпен хорда əдісі бойынша шешу программасы былай жазылады.
uses crt;
const eps=0.001;
label 1,2,3;
function f1(x:real):real;
begin clrscr;
f1:=x*x*x-0.1*x*x+0.4*x-1.5;
end;
function f2(x:real):real;
begin clrscr;
f2:=3*x*x-0.2*x+0.4;
end;
var x,x1,x2,a,b:real;
begin a:=1;
b:=2;
if (f1(a)*f2(a))>0 then goto 1;
x1:=a;
Ре по зи то ри й Ка рГ У
2: x:=x1-(f1(x1)*(b-f1(x1))/(f1(b)-f1(x1)));
if abs(x-x1)>eps then begin x1:=x;
goto 2; end; goto 3;
1: x1:=b;
x:=x1-(f1(x1)*(x1-a))/(f1(x1)-f1(a));
if (abs(x-x1)>eps) then begin x1:=x;
goto 3;
end;
3:writeln('x=',x:6:3);
readkey;
end.
Жауабы: x=1.059 6-қадамда орындалды.
3 2
2x 4х 3х 5 0 теңдеуін 0,001 дəлдікпен ньютон əдісі бойынша шешу программасы былай жазылады.
uses crt;
const eps=0.001;
label 1;
function f(x:real):real;
begin clrscr;
f:=2*x*x*x+4*x*x-3*x-5;
end;
function f1(x:real):real;
begin clrscr;
f1:=3*x*x+4*x-3;
end;
function f2(x:real):real;
begin clrscr;
f2:=12*x+8;
end;
var x,x1,x2,a,b:real;
begin a:=1;
b:=2;
if (f(a)*f2(a))>0 then x1:=a else x1:=b;
1: x:=x1-(f(x1)/f1(x1));
if (f(a)<>0) then begin
if abs(x-x1)>eps then begin x1:=x;
goto 1; end; end else x:=a;
writeln('x=',x:7:5);
readkey;
end.
Ре по зи то ри й Ка рГ У
Жауабы: x=1.15831 5-қадамда орындалды.
Есептің Фортран тілінде орындалуы [4].
3 2
3x 4х 12х 5 0 теңдеуін 0,01 дəлдікпен қақ бөлу əдісі бойынша шешу программасы былай жазылады.
program pop
real*8, x,a,b,c,eps/1e-2/
f(x)=3*x**4+4*x**3-12*x**2-5 print *,'a,b?'
read *,a,b n=0 c f(x)=f c f=f(x)
if (f(a)*f(b).gt.0) then print *,'tybiri jok' stop 1
end if 1 n=n+1 c=(a+b)/2
if (f(a)*f(c).gt.0) then a=c
else b=c end if
if (abs(a-b).gt.eps) goto 1 print *,'c=',c, ' n=',n stop 0
end
Жауабы: a,b?
с = 1.585937500000000 n = 7 Return code 0
3 0,1 2 0,4 1,5
x х х теңдеуін 0,001 дəлдікпен хорда əдісі бойынша шешу программасы былай жазылады:
program horda
real*8, x,x1,f1,f2,a,b,eps/1e-3/
f1(x)=x**3-0.1*x**2+0.4*x-1.5 f2(x)=3*x**2-0.2*x+0.4
c print *,'a,b?' c read *,a,b n=0 a=1 b=2 c f1(x)=f1 c f1=f1(x)
if (f1(a)*f2(x).gt.0) goto 1 x1=a
2 n=n+1
x=x1-(f1(x1)*(b-f1(x1))/(f1(b)-f1(x1))) if (abs(x-x1).gt.eps) then
x1=x goto 2 end if
Ре по зи то ри й Ка рГ У
goto 3 1 x1=b
x=x1-(f1(x1)*(x1-a))/(f1(x1)-f1(a)) if (abs(x-x1).gt.eps) then
x1=x goto 3 end if
3 print *,'x=',x ,' n=',n stop 0
end Жауабы:
x = 1.059255587055197 n = 6 Return code 0
3 2
2x 4х 3х 5 0 теңдеуін 0,001 дəлдікпен ньютон əдісі бойынша шешу программасы келесі түрде жазылады.
program nuton
real*8, x,a,b,f,f1,f2,eps/1e-3/
f(x)=2*x**3+4*x**2-3*x-5 f1(x)=6*x**2+8*x-3 f2(x)=12*x+8 print *,'a,b?' read *,a,b n=0 c f(x)=x c x=f(x)
if (f(a)*f2(a).gt.0) then x1=a
else x1=b end if
1 x=x1-f(x1)/f1(x1) n = n + 1
if (f(a).ne.0) then
if (abs(x-x1).gt.eps) then x1=x
goto 1 end if else x = a end if
print *,'x=',x, ' n=',n stop 0
end Жауабы: a,b?
x = 1.158312395179365 n= 5 Return code 0
Бұл жұмыстың маңыздылығы, жалпы білім беретін жоғары оқу орындарында өтілетін пəндердің ішінде математика мен физика ерекше орын алады, себебі бұл пəндер ғылым мен техниканың қай са- ласымен болса да біте қайнасып жатыр. Сондықтан жоғары оқу орын бітірушілер теориялық мəселе- лермен қатар, оларды практикада да қолдана білуі өте қажет жəне арнайы осы саланың мамандарына оқу кезінде қолдануына болады.
Ре по зи то ри й Ка рГ У
Əдебиеттер тізімі
1. Пантелеев А.В., Киреев А.В. Численные методы в примерах и задачах. — М.: Высш. шк., 2004. — 480 с.
2. Демидович Б.П., Марон И.А. Основы вычислительной математики. — М.: Наука, 1966. — 784 с.
3. Культин Н.Б. Программирование в Turbo Pascal 7.0 и Delphi. — 2-е изд., перераб. и доп. — СПб.: БХВ–Санкт- Петербург, 1999. — 416 с.
4. Бартеньев О.В. Фортран для студентов. — М.: Диалог-МИФИ, 1999. — 400 с.
УДК 510.53
Д.А.Тусупов
Таразский государственный университет им. М.Х.Дулати
ОПРЕДЕЛИМЫЕ ОТНОШЕНИЯ, ИЗОМОРФИЗМЫ И СЕМЕЙСТВА СКОТТА СТРУКТУРЫ С ДВУМЯ БИНАРНЫМИ ПРЕДИКАТАМИ
Симметриялық, иррефлексивтік графты екі орындық екі предикатты құрылымға анықтама- лық əдіс жасалған. Осы əдіспен екі орындық екі предикатты құрылымның семантика жəне синтаксис қасиеттері анықталған. Əдістеме екі құраманы бір-біріне енгізу жолдарын көрсе- теді.
In paper author constructed the method of definability of symmetry, irreflexive graphs on the struc- ture with two binary predicates. This method found syntax and semantic conditions of structure with two binary predicates. This method used to solution of problem of realization of structures.
Предварительные сведения
Выбор направления исследования обусловлен тем, что изучение структурных и вычислительных свойств алгебраических объектов посредством понятия определимости является одним из мощных методов в теории вычислимости и теории моделей. Исследование посвящено одному из интенсивно изучаемых областей в этом направлении, а именно проблемам определимости и алгоритмической сложности отношений над алгебраическими структурами.
Всякий раз, как только появляются интересные с точки зрения вычислимости результаты, возни- кают естественные вопросы о существовании структур с такими же свойствами в известных алгеб- раических классах, как группы, кольца, решетки, графы и т.п.
S.S.Goncharov, V.S.Harizanov, J.F.Knight и др. [1] показали существование структур с интерес- ными вычислительными и синтаксическими свойствами. Аналог данных результатов доказан для классов алгебраических структур, таких как метаабелевы группы простой экспоненты и без кручения, решеток, колец, коммутативных полугрупп, областей целостности.
Определение. Пусть дана структура А сигнатуры , и ( )x — произвольная формула языка данной сигнатуры; ( ) x — список k различных переменных. Определим k-местный предикат
[ ] { : k, | ( )}
A x a a A A a
, который назовем Θ-формульным на структуре А или определимым Θ-формулой, если ϕ является Θ-формулой.
Определение. Отношение на |А| назовем формульно определимым на А, если оно является фор- мульным предикатом.
Пусть даны структуры А сигнатуры σ0 и B сигнатуры σ1. Не уменьшая общности, положим
|А||B|.
Определение. Назовем структуру B σ1-замыканием структуры А, а структуру А — σ0-ядром (ядром) структуры B, если выполняются условия:
– (а) |А||B|;
– (б) |А| — инвариантное подмножество в B, т.е. для любого автоморфизма f структуры B имеет место условие f (|А|) = |А|;