Вариациялық есептерді MATLAB жүйесінде шешудің алгоритмдері
КІРІСПЕ ... ... ... ... 3
1 ВАРИАЦИЯЛЫҚ ЕСЕПТЕРДІ MATLAB ЖҮЙЕСІНДЕ ШЕШУДІҢ АЛГОРИТМДЕРІ
1.1 MATLAB жүйесінің негізгі бөлігіне қысқаша шолу ... ... ... ... ... ... 5
1.2 Symbolic Math Toolbox қосымша пакетінің көмегімен аналитикалық есептеулер жүргізу мүмкіндіктері ... ... ... .. 13
1.3 Вариациялық есептеулердің қарапайым есебі ... ... ... ... ... ... ... ... . 20
1.4 Қарапайм вариациялық есепті шығару алгоритмы ... ... ... ... ... .. 22
1.5 Қарапайым вариациялық есептің жекелеген түрін шығару алгоритмы ... ... 29
1.6 Интеграл асты функция түрінде болғандағы есепті шығару алгоритмы ... ... ... ... ... ... 33
1.7 Бірнеше функцияға тәуелді функционалдың экстремалы ... ... ... 36
1.8 Есепті шешудің алгоритмы ... ... .. 37
1.9 Бірнеше айнымалының функциясына тәуелді функционалдың экстремалы ... 43
1.10 Есепті шешудің алгоритмы 45
2 ВАРИАЦИЯЛЫҚ ЕСЕПТЕРДІ MATLAB ЖҮЙЕСІНДЕ ШЕШУДІҢ ПРОГРАММАЛАРЫ
2.1 Қарапайым вариациялық есеп ... ... 54
2.2 Екі функцияның функционалының экстремумын табу есебінің программасы
2.3 Екі айнымалыға тәуелді функцияның функционалының экстремумын табу есебінің программасы ... ... ... ... ... ... ... .. 63
ҚОРЫТЫНДЫ ... ... ... ... . 66
ПАЙДАЛАНЫЛҒАН ӘДЕБИЕТТЕР ТІЗІМІ ... ... ... ... ... ... ... ... ... 67
1 ВАРИАЦИЯЛЫҚ ЕСЕПТЕРДІ MATLAB ЖҮЙЕСІНДЕ ШЕШУДІҢ АЛГОРИТМДЕРІ
1.1 MATLAB жүйесінің негізгі бөлігіне қысқаша шолу ... ... ... ... ... ... 5
1.2 Symbolic Math Toolbox қосымша пакетінің көмегімен аналитикалық есептеулер жүргізу мүмкіндіктері ... ... ... .. 13
1.3 Вариациялық есептеулердің қарапайым есебі ... ... ... ... ... ... ... ... . 20
1.4 Қарапайм вариациялық есепті шығару алгоритмы ... ... ... ... ... .. 22
1.5 Қарапайым вариациялық есептің жекелеген түрін шығару алгоритмы ... ... 29
1.6 Интеграл асты функция түрінде болғандағы есепті шығару алгоритмы ... ... ... ... ... ... 33
1.7 Бірнеше функцияға тәуелді функционалдың экстремалы ... ... ... 36
1.8 Есепті шешудің алгоритмы ... ... .. 37
1.9 Бірнеше айнымалының функциясына тәуелді функционалдың экстремалы ... 43
1.10 Есепті шешудің алгоритмы 45
2 ВАРИАЦИЯЛЫҚ ЕСЕПТЕРДІ MATLAB ЖҮЙЕСІНДЕ ШЕШУДІҢ ПРОГРАММАЛАРЫ
2.1 Қарапайым вариациялық есеп ... ... 54
2.2 Екі функцияның функционалының экстремумын табу есебінің программасы
2.3 Екі айнымалыға тәуелді функцияның функционалының экстремумын табу есебінің программасы ... ... ... ... ... ... ... .. 63
ҚОРЫТЫНДЫ ... ... ... ... . 66
ПАЙДАЛАНЫЛҒАН ӘДЕБИЕТТЕР ТІЗІМІ ... ... ... ... ... ... ... ... ... 67
Жаратылыстану ғылымының табиғатты, қоршаған ортада жүріп жататын табиғи процестерді зерттеуде бүгінгі таңда қол жеткен табыстары ұшан-теңіз. Аталған процестердің басым көпшілігін дифференциалдық теңдеулермен сипаттауға болады. Бұл теңдеулер процесті басқаратын негізгі тәуелсіз айнымалылар санына қарай кәдімгі дифференциалдық, немесе дербес туындылы дифференциалдық теңдеулер деп екі үлкен топқа бөлінеді. Шекаралық және бастапқы шарттармен толықтырылған бұл теңдеулерді шешу арқылы қарастырылып отырған процестің даму заңдылығы анықталады.
Зерттеліп отырған процесс неғұрлым күрделі болған сайын зерттеушінің алдында адамзат баласының осы күнге дейін қол жеткізген ғылыми жетістіктерін игеру міндеті тұрады. Мұндай жетістіктер күн өткен сайын ұлғайып бара жатқандықтан, зерттеу процесінің кейбір бөлігін, атап айтқанда математикалық аппараттың жиі қолданыста болатын үйреншілікті бөліктерін автоматтыру қажеттілігі туындайды. Дипломдық жұмыста қарастырылатын вариациялық есептерді MATLAB жүйесінде шешу алгоритмдері тақырыбының өзектілігі осындай қажеттілікпен негізделген.
Зерттеліп отырған процесс неғұрлым күрделі болған сайын зерттеушінің алдында адамзат баласының осы күнге дейін қол жеткізген ғылыми жетістіктерін игеру міндеті тұрады. Мұндай жетістіктер күн өткен сайын ұлғайып бара жатқандықтан, зерттеу процесінің кейбір бөлігін, атап айтқанда математикалық аппараттың жиі қолданыста болатын үйреншілікті бөліктерін автоматтыру қажеттілігі туындайды. Дипломдық жұмыста қарастырылатын вариациялық есептерді MATLAB жүйесінде шешу алгоритмдері тақырыбының өзектілігі осындай қажеттілікпен негізделген.
1. Matlab – Решение вариационных задач. © Иглин С.П. iglin@kpi.kharkov.ua
2. Потемкин В.Г. Система инженерных и научных расчетов MATLAB 5.x. В
2-х т. – М.: ДИАЛОГ-МИФИ. 1999. -670С.
3. Тынкевич М.А. Численные методы. –Кемерово: КузГТУ. 1997. -122 с.
4. Плис А.И., Сливина Н.А. MATHCAD 2000. практикум для экономистов и
инженеров. –М.: Финансы и статистика. 200. -656 с.
5. Мартынов Н.Н., Иванов А.П. MATLAB 5.Х. Вычисления,
визуализация, программирование. – М.:КУДИЦ-ОБРАЗ, 2000.-336 с.
6. Л.Э.Эльсгольц. Дифференциальные уравнения и вариационное исчисление.
М. 1965.
6. К.Д.Көлекеев, К.Ж.Назарова. Математикалық программалау.I бөлім: Оқу
құралы.-Түркістан, 1999, -170 бет.
7. Гельфанд М.И., ФоминС.В. Вариационное исчисление. М. 1961.
8. Краснов М.Л., Макаренко Г.И., Киселев А.И. Вариационное исчисление. М.
1973.
9. Карташев Э.А., Рождественский Б.Л. Обыкновенные дифференциальные
уравнения и основы вариационного исчисления. М. 1976.
10. М.А.Лаврентьев., Л.А.Люстерник. Курс вариационного исчисления. М,
1950.
11. В.И.Смирнов, В.И.Крылов, Л.В.Канторович. Вариационное исчисление.
КУБУЧ, 1933.
2. Потемкин В.Г. Система инженерных и научных расчетов MATLAB 5.x. В
2-х т. – М.: ДИАЛОГ-МИФИ. 1999. -670С.
3. Тынкевич М.А. Численные методы. –Кемерово: КузГТУ. 1997. -122 с.
4. Плис А.И., Сливина Н.А. MATHCAD 2000. практикум для экономистов и
инженеров. –М.: Финансы и статистика. 200. -656 с.
5. Мартынов Н.Н., Иванов А.П. MATLAB 5.Х. Вычисления,
визуализация, программирование. – М.:КУДИЦ-ОБРАЗ, 2000.-336 с.
6. Л.Э.Эльсгольц. Дифференциальные уравнения и вариационное исчисление.
М. 1965.
6. К.Д.Көлекеев, К.Ж.Назарова. Математикалық программалау.I бөлім: Оқу
құралы.-Түркістан, 1999, -170 бет.
7. Гельфанд М.И., ФоминС.В. Вариационное исчисление. М. 1961.
8. Краснов М.Л., Макаренко Г.И., Киселев А.И. Вариационное исчисление. М.
1973.
9. Карташев Э.А., Рождественский Б.Л. Обыкновенные дифференциальные
уравнения и основы вариационного исчисления. М. 1976.
10. М.А.Лаврентьев., Л.А.Люстерник. Курс вариационного исчисления. М,
1950.
11. В.И.Смирнов, В.И.Крылов, Л.В.Канторович. Вариационное исчисление.
КУБУЧ, 1933.
Пән: Информатика, Программалау, Мәліметтер қоры
Жұмыс түрі: Дипломдық жұмыс
Тегін: Антиплагиат
Көлемі: 68 бет
Таңдаулыға:
Жұмыс түрі: Дипломдық жұмыс
Тегін: Антиплагиат
Көлемі: 68 бет
Таңдаулыға:
Қазақстан Республикасы Білім және ғылым министрлігі
Қожа Ахмет Ясауи атындағы халықаралық қазақ-түрік университеті
Математика кафедрасы
Қорғауға жіберілді
Кафедра меңгерушісі
_______профессор Ә.С.Мұратов
ДИПЛОМДЫҚ ЖҰМЫС
Тақырыбы: Вариациялық есептерді MATLAB жүйесінде шешудің
алгоритмдері
5В060100 – Математика мамандығы бойынша
Орындаған
Бейсенбаева А. А.
Ғылыми жетекшісі
тех.ғ.к., доцент
Айтбаев Қ.
Түркістан 2013
МАЗМҰНЫ
КІРІСПЕ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . ... ... ... ... 3
1 ВАРИАЦИЯЛЫҚ ЕСЕПТЕРДІ MATLAB ЖҮЙЕСІНДЕ ШЕШУДІҢ АЛГОРИТМДЕРІ
... ... ... ... ... ... ... ... .. ... ... ... ... ... ... . 5
1.1 MATLAB жүйесінің негізгі бөлігіне қысқаша 5
шолу ... ... ... ... ... ...
1.2 Symbolic Math Toolbox қосымша пакетінің көмегімен аналитикалық
есептеулер жүргізу мүмкіндіктері ... ... ... ... ... .. ... . 13
1.3 Вариациялық есептеулердің қарапайым 20
есебі ... ... ... ... ... ... ... . ...
1.4 Қарапайм вариациялық есепті шығару 22
алгоритмы ... ... ... ... ... ..
1.5 Қарапайым вариациялық есептің жекелеген түрін шығару
алгоритмы ... ... ... ... ... ... . ... ... ... ... ... ... ... ...29
... ... ... ... ... ... ... ... .. ... ...
1.6 Интеграл асты функция түрінде болғандағы есепті шығару
алгоритмы ... ... ... ... ... ... . ... ... ... ... ... ... ... ...33
... ... ... ... ... ...
1.7 Бірнеше функцияға тәуелді функционалдың экстремалы ... ... ... 36
1.8 Есепті шешудің алгоритмы ... ... ... ... ... ... ... ... ... ... ... ... ... ... 37
1.9 Бірнеше айнымалының функциясына тәуелді функционалдың экстремалы
... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ... ... ... ... ... ... 43
1.10 Есепті шешудің алгоритмы ... ... ... ... ... ... ... ... ... ... ... ... ... 45
2 ВАРИАЦИЯЛЫҚ ЕСЕПТЕРДІ MATLAB ЖҮЙЕСІНДЕ ШЕШУДІҢ
РОГРАММАЛАРЫ ... ... ... ... ... ... ... ... ... ... ... 54
2.1 Қарапайым вариациялық есеп ... ... ... ... ... ... ... ... ... ... ... . ... ... 54
2.2 Екі функцияның функционалының экстремумын табу есебінің
программасы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . ... ... ... ... 62
2.3 Екі айнымалыға тәуелді функцияның функционалының экстремумын табу
есебінің программасы ... ... ... ... ... ... ... .. 63
ҚОРЫТЫНДЫ ... ... ... ... ... ... . ... ... ... ... ... ... ... ...66
... ... ... ... ... ... ... ...
ПАЙДАЛАНЫЛҒАН ӘДЕБИЕТТЕР 67
ТІЗІМІ ... ... ... ... ... ... ... ... ...
КІРІСПЕ
Жаратылыстану ғылымының табиғатты, қоршаған ортада жүріп жататын
табиғи процестерді зерттеуде бүгінгі таңда қол жеткен табыстары ұшан-теңіз.
Аталған процестердің басым көпшілігін дифференциалдық теңдеулермен
сипаттауға болады. Бұл теңдеулер процесті басқаратын негізгі тәуелсіз
айнымалылар санына қарай кәдімгі дифференциалдық, немесе дербес туындылы
дифференциалдық теңдеулер деп екі үлкен топқа бөлінеді. Шекаралық және
бастапқы шарттармен толықтырылған бұл теңдеулерді шешу арқылы қарастырылып
отырған процестің даму заңдылығы анықталады.
Зерттеліп отырған процесс неғұрлым күрделі болған сайын зерттеушінің
алдында адамзат баласының осы күнге дейін қол жеткізген ғылыми
жетістіктерін игеру міндеті тұрады. Мұндай жетістіктер күн өткен сайын
ұлғайып бара жатқандықтан, зерттеу процесінің кейбір бөлігін, атап айтқанда
математикалық аппараттың жиі қолданыста болатын үйреншілікті бөліктерін
автоматтыру қажеттілігі туындайды. Дипломдық жұмыста қарастырылатын
вариациялық есептерді MATLAB жүйесінде шешу алгоритмдері тақырыбының
өзектілігі осындай қажеттілікпен негізделген.
Көптеген жағдайларда қоршаған ортада үздіксіз жүріп жататын табиғи
процестерді сипаттайтын дифференциалдық теңдеулердің шешімін тікелей
аналитикалық әдіспен шешу оңайға түспейді. Мұндай кезде процесті
сипаттайтын интегралдық шамалар зерттеледі. Бұл интегралдық шамаларды
функционал деп атайды. Вариациялық есептеулер пәнінде дәлелденгендей, нақты
процесті сипаттайтын дифференциалдық теңдеудің шешімі осы процесс аумағында
құрастырылатын функционалға экстремум береді. Олай болса, дифференциалдық
теңдеуді шешу есебін функционалға минимум беретін функцияны іздеу есебімен
айырбастауға болады. Кез келген процесс өзінің даму барысында көптеген
өзгерістерге ұшырай отырып, соңында тұрақты, стационар күйге тоқталады. Осы
кезде процестің даму барысында жинақталатын кейбір параметрлер өздерінің
минималдық, немесе максималдық шамасына жетеді. Мысалы, жылу таралу
процесіндегі денеде жинақталатын жылу мөлшері, тұтас дененің
деформациялануы кезінде жинақталатын потенциалдық энергия мөлшері және т.б.
стационарлық күй кезінде өздерінің минимумына жетеді. Бұл параметрлер
интегралдық шамалар болып келеді, және олардың мөлшерлері процесті
сипаттайтын функцияның түрімен, бастапқы және шекаралық шарттармен бірегей
анықталады. Демек, енді функционалға минимум беретін осы функцияларды
анықтаса жеткілікті. Бұл функциялар экстремалдар деп аталады және оларды
анықтау вариациялық есептеулер пәнінің негізгі мақсаты болады.
Процесс өзінің стационар күйіне жақындаған кезде функционал арқылы
сипатталатын жоғарыда аталып өткен параметрлер өздерінің өзгеруін
баяулатып, процесс стационар күйге жеткен кезде өзгеруін мүлде тоқтатады.
Математика тілінде мұны параметрдің вариациясы нолге теңеседі деп айтады.
Сонымен, экстремалдарды іздеу дегеніміз функционалдың вариациясының нолге
теңесуін сипаттайтын теңдеуді шешу есебі болып шығады. Алғашында Эйлер
бастап, соңынан Пуассон, Остроградский және т.б. жалғастырған зерттеулер
нәтижесінде экстремумды іздеу есебінің кәдімгі дифференциалдық, немесе
дербес туындылы дифференциалдық теңдеуді шешуді талап ететінін көреміз.
Кәзіргі таңда дифференциалдық теңдеулерді шешу әдістерінен мол
тәжірибе жинақталған. Егер кәдімгі, немесе дербес туындылы диференциалдық
теңдеуді аналитикалық әдіспен шешу қиындық тудыратын болса, онда оны
жуықтап, сандық әдіспен шешуге болады. Әрине, сандық әдістерді қолдану
белгілі бір программалау тілінде жазылған есептеу программасын құруды, және
оны компьютерде жүзеге асыруды талап етеді.
Дипломдық жұмыс кіріспеден, екі бөлімнен тұратын негізгі мәтіннен,
қорытындыдан және пайдаланылған әдебиеттер тізімінен тұрады. Жұмыстың
бірінші бөлімі жоғары деңгейлі MATLAB программалау жүйесінің мүмкіндіктерін
талдаудан басталады. Жүйенің тек нақты сандармен жұмыс істеуге арналған
негізгі бөлігі мен символдық математикаға арналған екінші, қосымша
бөлігінің мүмкіндіктеріне нақты мысалдар арқылы сараптама жасалынған.
Бөлімнің екінші жартысында вариациялық қисаптар ғылымында қарастырылатын
негізгі есептерді MATLAB жүйесінде шешу алгоритмдері келтірілген, және
оларды компьютерде жүзеге асыру үшін құрылатын есептеу программаларының
жұмысына толық түсініктеме берілген.
Дипломдық жұмыстың екінші бөлімінде жоғарыда қарастырылған есептердің
MATLAB жүйесіндегі программалары келтірілген және олардың жұмысы нақты
мысалдармен көрсетілген. Әрбір мысал соңында графикалық материалдармен
толықтырылған. MATLAB жүйесінің мүмкіндіктері нақты мысалдар негізінде
баяндалған. Дипломдық жұмыстың соңында қорытынды және қолданылған
әдебиеттер тізімі келтірілген.
1 ВАРИАЦИЯЛЫҚ ЕСЕПТЕРДІ MATLAB ЖҮЙЕСІНДЕ
ШЕШУДІҢ АЛГОРИТМДЕРІ
1.1 MATLAB ЖҮЙЕСІНІҢ НЕГІЗГІ БӨЛІГІНЕ ҚЫСҚАША ШОЛУ
Жоғары деңгейлі MATLAB программалау жүйесі шартты түрде екі бөліктен
тұрады. Оның бірінші, негізгі бөлігі барлық программалау жүйелерінде
қарастырылатын есептеу мүмкіндіктерін сипаттауға арналған. Бөлікте
программалау жүйесінің негізгі командалары, сандық мәндерді енгізу, немесе
шығару жолдары, қарапайым алгоритмдар мен циклдарды құру, шартты
операторларды қолдану жолдары, графикалық материалдар алу әдістері және
т.б. келтіріледі. Бұл бөлімде енгізілетін шамалар сандық шамалар болады,
және алынатын нәтижелер де сандық шамалар болады.
MATLAB программалау жүйесінің екінші бөлігі математикалық есептеулерді
аналитикалық жолмен жүргізу әдістеріне арналған. Бөлік әрқашан өзгеріп,
толықтырылып отыратын болғандықтан оны MATLAB программалау жүйесінің
негізгі пакетінің толықтырылуы (расширение) деп атайды (ағылшын тілінде
Symbolic Math Toolbox).
Алдымен MATLAB программалау жүйесінің негізгі бөлігіне қысқаша шолу
жасайық [1-5].
MATLAB – матрицалық лаборатория – ғылыми-техникалық есептеулерге
арналған ең үздік программалау жүйесінің бірі. Бұл жүйе қазіргі таңда
есептеу математикасына, мәліметтерді өңдеуге, электрондық приборларды
жобалауға, экономикаға және т.б. қолданбалы ғылым салаларына арналған
бірнеше ондаған қосымшалармен толықтырылған.
MATLAB ең алдымен сандық алгоритмдерді программалауға арналған жүйе.
Ол 1970 жылдары АҚШ-та жасалған қолданбалы LINPACK және EISPACK
пакеттерінің негізінде пайда болды. MATLAB-тың пайда болуы қазіргі таңда
үздік дамыған MathCad, MAPLE және Mathematica жүйелерінің өмірге келуіне
себеп болды. MATLAB жүйесінің дамуына есептеу математикасының дамуы мен
жеке компьютерлердің архитектурасының өзгерулері көп ықпал етті.
MATLAB – жоғары деңгейдегі программалау жүйесі. Оның құрамында барлық
есептеулер түрлерін жүргізуге, мәліметтер қорымен жұмыс істеуге және
ақпараттарды графикалық түрде өңдеуге арналған командалардың бай қоры бар.
Бұл командалар жүйенің әртүрлі директорияларында орналасқан тақырыптық
топтарға бөлінеді. Жүйеде 800-ге жуық командалар бар, олардың тең жартысына
жуығы жүйемен жаңа танысып отырған қолданушыға түсінікті. Мүмкіндігі
кеңірек командалар С тілінде жазылған. Бірақ, командалардың басым көпшілігі
MATLAB жүйесінің тілінде. Сондықтан бұл жүйе қолданушы үшін әрқашан ашық.
Жүйеде екі-, және үш өлшемді графиктермен жұмыс істеуге және жүйеде бар
командаларды қолданып өз командаларын құруға зор мүмкіншілік бар. Сонымен
қатар, С және Фортран тілінде жазылған программаларды MATLAB жүйесінде
қолдануға болады.
Бұл жерде келтіріліп отырған мәліметтер жүйемен жаңадан танысуға
және MATLAB жүйесінің мүмкіндіктерін зерттеуге арналған.
MATLAB жүйесін РС-де немесе Мас-та іске қосу үшін MATLAB-тың фирмалық
суретін екі рет шертсе болғаны. MATLAB–ты UNIX жүйесінде іске қосу үшін
операциялық жүйенің жұмыс терезесіндегі командалық қатарда matlab сөзін
теру керек. MATLAB-тан шығу үшін командалар қатарында quit сөзін тереді.
MATLAB жүйесін игерудің ең оңай жолы – ол матрицалармен жұмыс істеуді
үйрену. Себебі, MATLAB жүйесінің басқа жүйелерден негізгі ерекшелігі, бұл
жүйеде барлық сандар әртүрлі реттегі матрицалар деп қарастырылады. Мысалы,
тұрақты сан (11) өлшемді матрица деп, ал вектор бір бағанадан немесе
бір қатардан тұратын матрица деп қарастырылады. Жалпы түрдегі матрица деп
төртбұрышты сандар массивын алады. Жүйенің тағы бір ерекшелігі, басқа
жүйелерде матрицаны сандар жинағы деп қарастыратын болса, мұнда
матрицаларға жеке сан ретінде қарап, оларға арифметикалық операциялардың
барлық түрлерін сан ретінде қолдана береді. Осы айтылғандарды ескеріп
MATLAB жүйесінде қолданылатын операцияларды матрицалары енгізуден бастайық.
Матрицаны енгізудің бірнеше тәсілі бар:
- элементтердің толық тізімін беру;
- матрицаны сыртқы файлдардан көшіріп алу;
- жүйеде бар арнайы функциялар арқылы матрицаны есептеп шығу;
- өзіңіз құрған М-файлдағы функция арқылы матрицаны есептеп шығу.
Матрицаны тізіммен енгізу үшін мынадай негізгі ережелерді ұстану
керек:
- элементтер өзара бос орын немесе үтір арқылы бөлінеді;
- әрбір қатардың соңы нүкте-үтірмен (;) белгіленеді;
- матрицаның барлық элементтері квадрат жақшамен ( [ ] ) қоршалады.
Мысалы, сиқырлы матрица деп аталатын мынадай сандар массивын
енгізейік:
A=[16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1].
Енгізілген матрица автоматты түрде MATLAB ортасында сақталады да,
оны кез келген уақытта А түрінде шақырып алуға болады.
Бұл матрицаның ерекшелігі, матрицаның кезкелген бағаналарының немесе
кезкелген қатарларының элементтерінің қосындылары бірдей және ол 34 санына
тең. Сонымен қатар, оның диагоналдарында орналасқан элементтердің қосындысы
да 34 санына таң.
MATLAB енгізілген матрицаны былайша түрлендіреді:
А=
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
Матрицаның бағаналарының элементтерінің қосындыларынан вектор-қатар
құрайық. Ол үшін sum(A) командасын енгізсе жеткілікті. MATLAB мынадай
нәтиже шығарады:
ans =
34 34 34 34
Егер алынатын нәтижеге алдынала арнайы идентификатор белгіленбесе,
онда MATLAB оны автоматты түрде ans деп атап, келесі қатардан бастап
нәтижені шығарып береді. Бұл жерде ans идентификаторы ansver-жауап деген
сөзден қысқартылып алынған. MATLAB жүйесінде алдымен бағаналар
қарастырылатын болғандықтан, берілген матрицаның қатарларының элементтерін
есептеу үшін алдымен берілген матрицаны транспондап аламыз.
Матрицаны транспондау апостроф белгісімен іске асады.
A'
командасының көмегімен матрица транспондалады да, нәтижесі былайша басылып
шығады:
ans =
16 5 9 4
3 10 6 15
2 11 7 14
13 8 12 1
Енді матрицаның қатарларының элементтерін есептеу үшін
Sum(A')'
командасын қолданамыз. Нәтижесі вектор-бағана ретінде алынады:
ans =
34
34
34
34
Матрицаның диагональдарының элементтерін есептеу үшін алдымен бас
диагоналдың элементтерінен массив құрайық. Ол үшін diag командасын
пайдаланамыз:
diag(A)=
16
10
7
1
Енді sum(diag(A)) командасы диагоналдық элементтердің қосындысын
береді:
ans=
34.
Осылайша біз матрицаларға қолданылатын бірнеше операцияларды
игердік.
Енді MATLAB-та қолданылатын индекстермен танысайық. Матрицаның қатары
i индексімен, бағанасы j индексімен жабдықталады да A(i,j) арқылы
белгіленеді. Мысалы сиқырлы матрицаның төртінші бағанасының элементтерін
есептеу үшін
A(1,4)+A(2,4)+A(3,4)+A(4,4)
командасын қолданып
ans=
34
мәнін аламыз. Бірақ бұл тәсіл тиімді емес. Мұндай жағдайда матрицаның бір
ғана индексін өзгерту тәсілін пайдаланған жөн. Мысалы, A(1:k, j) операторы
массивтың j-шы бағанасының элементтерін 1-ден k-ға дейін тізбектеп береді.
Ал
sum(A(1:4,4))
командасы алдында қарастырылған төртінші бағананың элементерінің қосындысын
есептеп береді. Бұл жерде қолданылған (:)-қос нүкте операциясының MATLAB
жүйесіндегі маңызы зор. Мысалы, sum(A(:,end)) командасы арқылы матрицаның
соңғы бағанасының элементтерінің қосындысы алынады.
Басқа алгоритмдік тілдер сияқты нақты программа құру үшін MATLAB
жүйесінде де математикалық сөйлемдер құрылады. Олардың құрамында
- айнымалылар;
- сандар;
- операторлар;
- функциялар
болады.
MATLAB жүйесінің тағы бір негізгі ерекшелігі ол айнымалылардың типін
анықтауды қажет етпейді. Жаңадан кездескен айнымалыға MATLAB автоматты
түрде өзінің жадынан орын бөледі, ал егер ол айнымалы бұрыннан бар болса,
онда оның құрамын өзгертіп, қажет болса жадынан қосымша орын тағайындайды.
Айнымалылар әріптермен, цифрлармен және астын сызу символымен
белгіленеді. MATLAB бас әріптермен кіші әріптерді бөліп қарайды. Мысалы, A
мен a екі түрлі айнымалы.
MATLAB жүйесінде сандар ондық есептеу жүйесінде қарастырылады. Ондық
дәреже e әріпімен көрсетіледі. Комплекс сандардың жорамал бөлігін
белгілеуге i немесе j әріптері суффикс ретінде пайдаланылады. Төменде
MATLAB жүйесінде сандардың дұрыс жазылуына мысалдар келтірілген:
3 -99
0.0001
9.6397238 1.60210e-20 6.02252e23
1i -3.14159j 3e5i.
Сандардың бәрі компьютердің жадында IEEE стандартымен анықталатын long
форматымен сақталады. Жылжымалы нүктемен сипатталатын сандарда 16 мағыналы
цифр болады да, олардың мәндері 10-308 –ден 10308 –ге дейінгі
диапазонда өзгереді.
MATLAB жүйесінде мынадай операторлар қолданылады:
+ қосу;
- алу;
* көбейту;
бөлу;
\ сол жақтан бөлу;
^ дәреже;
' дефис-транспондау белгісі;
() есептеу тәртібін көрсететін жақшалар.
MATLAB жүйесінде элементарлық математикалық функциялардың үлкен қоры
бар. Мысалы, abs, sqrt, exp, sin және т.б. Жүйеде теріс сандардың квадрат
түбірлері мен логарифдері де есептеліп, нетижесі комплкс сандар түрінде
алынады. Сонымен қатар күрделі, Гамма функциясы мен Бессель функцияларының
да стандартты командалары бар. Барлық математикалық функциялардың тізімін
алу үшін
help elfun
командасын қолданса болғаны.
Бірнеше арнайы функциялар жиі қолданылатын константаларды береді:
pi 3.14159265...
i жорамал бірлік,
j мағынасы -мен бірдей
eps жылжымалы нүктелі санның салыстырмалы дәлдігі, 2-
52
realmin ең кіші жылжымалы нүктелі сан, 2-1022
realmax ең үлкен жылжымалы нүктелі сан, 21023
Inf шексіздік
NaN сан емес дегенді көрсетеді. Бұл белгі 00 немесе Inf-Inf
операцияларының математикалық мағынасы жоқ екені туралы ескертеді.
Бұл функциялардың мағыналарын қажетінше өзгертіп отыруға болады.
Мысалы
eps=1.e-6.
Функцияның бастапқы мәніне қайта оралу үшін
clear eps
командасы орындалады.
Матрицалармен жұмыс істеу
Матрицаларды жүйенің көмегімен де құруға болады. Ол үшін
- zero бәрі ноль
- ones бәрі бір саны
- rand кездейсоқ сандардың біркелкі таралуы
- randn кездейсоқ сандардың нормальды таралуы
командалары қолданылады. Соңғы екі команда математикалық статистика
есептерінде қолданылатын болғандықтан оларға арнайы тоқталу қажет. Ал
алдыңғы екі команда сандық қатар элементтерін өзара қосу, немесе көбейту
операцияларында нәтиже жинақталатын матрицаларды тазалап алу үшін
қолданылады.
Мысалдар келтірейік:
Z=zero(2,4)
Z=
0 0 0 0
0 0 0 0
F=5*ones(3,3)
F=
5 5 5
5 5 5
5 5 5
MATLAB жүйесінде сандардың массивынан тұратын матрица мәтіндік файл
түрінде құрылады. Төртбұрышты кестенің элементтері өзара бос орын арқылы
бөлінеді және матрицаның қатарларындағы элементтер саны бірдей болу керек.
Мысалы MATLAB жүйесінің сыртында 4 қатардан тұратын мәтіндік файл құрайық:
16.0 3.0 2.0 13.0
5.0 10.0 11.0 8.0
9.0 6.0 7.0 12.0
4.0 15.0 14.0 1.0
Файлды magik.dat деген атпен сақтайық. Енді
load magik.dat
деген команда осы файлды оқып, берілген матрицадан тұратын magik деген
айнымалыны құрады.
Енді М-файлдарды құруды бастайық. Төменгі дәрежедегі алгоритмдік
тілдерде программа деп аталатын қосымшаны MATLAB жүйесінде М-файл деп
атайды. Бұл жүйеде алғаш рет жұмысты бастағанда жүйеге кірген бетте
мониторда MATLAB-тың командалық терезесі ашылады. Командалық терезенің
командалық қатарында командалар теріліп, программаның жұмысын басқаруды
ұйымдастырады. Сонымен қатар, қомандалық терезе арқылы программаның жұмысын
бақылап отыруға болады. Бұл терезеде программаның қателерінің түрі, олардың
программада орналасқан жері және т.б. көрсетіліп отырады және соңында
программа жұмысының нәтижесі көрсетіледі. Ал программаның өзін жазу үшін
командалар терезесінде File тізімін ашу керек. Тізімнен New командасы
арқылы жаңа терезе ашылады. Бұл терезеде жазылатын программаның аталуы және
сақталатын орыны сұралады. Бұл сұрақтарға жауап берілген соң мәтіндік
редактор деп аталатын жаңа терезе ашылады. Осы терезеге бұдан кейін М-файл
деп аталатын жаңа программаның мәтіні орналастырылады (жазылады). М-файл
компьютердің жадында программаның берілген атына .m кеңейту қосылып
сақталады. Бұдан кейінгі жұмыс тек командалық терезе мен мәтіндік редактор
арқылы орындалады. Мәтіндік редакторда программаны жазып болғаннан кейін
редактордың бас жағында орналасқан Run командасы басылады. Бұл кезде
командалық терезе ашылып, онда программаның қателері, немесе есептің
нәтижесі шығады. Есептің нәтижесіне де .m кеңейту қосылып жаңа ат беріледі.
Жаңадан құрылған М-файлды (программаны) келесі жолы ашу үшін мәтіндік
редактордағы File тізімінің Open командасын басылып, пайда болған тізімнен
ізделіп отырған М-файл ашылады. Енді М-файлға өзгертулер енгізе беруге
болады. Командалық терезе мен мәтіндік редактор жұмыс столында бірінің
астына бірі орналасады. Қажет терезені шерту арқылы оларды кезекпен ашып
отырады. Программаға енгізілетін әрбір өзгерістен кейін File тізіміндегі
Save немесе Save All командалары арқылы өзгертулерді жаттатып отыру
керек. Мәтіндік редактордағы программаны дұрыстау барысында командалық
терезеде көрінетін ақпараттардың көлемі өсіп кетіп, жұмыс істеуге кедергі
жасайтын кезі жиі болады. Мұндай кезде командалық қатардағы символынан
кейін clc командасын теріп Enter пернесін басу арқылы командалық терезені
тазалауға болады. Бұл кезде компьютердің жадындағы ақпараттар жоғалып
кетпейді. Олардың ішіндегі қажетті бөлігін бұрынғыша қайтадан командалық
терезеге шығаруға болады.
Ақпарат ағымдарын басқару
MATLAB жүйесінде ақпараттар ағымын басқарудың бес түрі бар:
- if операторы
- switch операторы
- for циклы
- while циклы
- break операторы.
if операторы логикалық пікірді есептеп, нәтижесі ақиқат болса берілген
операторлар тобын орындайды. Операторлар тобының құрамында қажет жағдайда
қосымша шарттарды ескеретін elseif және else операторлары болуы мүмкін. if
операторы end арнайы сөзімен аяқталады.
switch операторы case арнайы сөзімен бірге жұмыс істейді. switch
операторында жақша ішінде арнайы тізім, логикалық шарт немесе есептеу
алгоритмы орналасады. Жақшаның мәніне байланысты case орындалатын
операторды (операторлар тобын) таңдайды. Нәтижесінде берілген шартқа сәйкес
келетін алғашқы оператор (операторлар тобы) ғана орындалады. switch
операторы end арнайы сөзімен аяқталады.
for циклы операторлар тобын берілген сан рет орындап шығуға арналған.
Цикл end арнайы сөзімен аяқталады. Циклға мысал келтірейік:
for i=1:m
for j=1:n
H(i,j)=1(i+j);
end
end
H
Циклдың ішінде орындалатын Н операторының соңында ; белгісі қойылмаса
командалар терезесінде оператордың есептеу нәтижесі әрбір цикл үшін шығып
отырады. Программаның соңындағы Н идентификаторы цикл жұмысын аяқтағаннан
соң алынған нәтижені командалар терезесінен көрсету үшін жазылады. Егер бұл
нәтиже қажет болмаса Н идентификаторынан кейін ; белгісін қояды, немесе Н
белгісін жазбай кетеді. Программаның оқылуын жеңілдету үшін оның мәтінін
жоғарыдағыдай сатылап орналастырған дұрыс.
while циклының орындалу саны логикалық шартпен анықталады. Төменде
мысал ретінде while, if, else және end операторларының көмегімен жазылған
полиномның түбірін қақ бөлу әдісімен анықтаудың программасы келтірілген.
a=0; fa=-Inf;
b=3; fb=Inf;
while b-aeps*b
x=(a+b)2;
fx=x^3-2*x-5;
if sign(fx)==sign(fa)
a=x; fa=fx;
else
b=x; fb=fx;
end
end
x
Программаның жұмысы нәтижесінде x3-2x-5 полиномының
x=
2.09455148154233
түбірі алынады.
break операторы for немесе while циклдарынан циклдың соңына жетпей
шығып кетуге мүмкіндік береді. Егер программада бір бірінің ішінде
орналасқан бірнеше цикл бар болса, онда break операторы тек өзі ішінде
орналасқан циклдан ғана шығарады да, оның сыртындағы циклдың жұмысы жалғаса
береді.
1.2 Symbolic Math Toolbox ҚОСЫМША ПАКЕТІНІҢ КӨМЕГІМЕН
АНАЛИТИКАЛЫҚ ЕСЕПТЕУЛЕР ЖҮРГІЗУ МҮМКІНДІКТЕРІ
MATLAB жүйесінің негізгі бөлігінің (ядро) мүмкіндіктері қаншалықты мол
болғанымен әрқашан жаңадан пайда болып жататын жекелеген математикалық
проблемаларды шешуге оның мүмкіндіктері жеткіліксіз болып жатады.
Мұндай жағдайларда уақтылы шешім қабылдап отыру үшін MATLAB жүйесінің
негізгі пакетінің архитектурасы оған дер кезінде жаңа программалық шешімдер
қосып отыруға бейім етіп жасалынған және мұндай өзгерістер қолданушы
байқамайтындай етіп ұйымдастырылған. Себебі, қосымша пакет
инсталяцияланғаннан кейін ол MATLAB жүйесінің негізгі пакетімен араласып
кетеді де, оны пайдалану әдістерінің негізгі пакетті пайдалу әдістерінен
айырмашылығы болмайды.
MATLAB жүйесінің қосымша пакеттерін MATLAB жүйесін құрастырған
негізгі фирма да (The MathWorks Inc., USA), немесе, сырттан келген басқа
фирмалар да жасай береді. Мұндай пакеттерді жасау программалау техникасы
тұрғысынан алғанда соншалықты қиын болмайды. Бірақ, олардың негізгі
құндылығы шешіліп отырған мәселенің өзектілігі мен оларды қолданып
шешілетін есептердің қиындығымен анықталады. Әрине, мұндай пакеттер күрделі
ғылыми-техникалық проблемаларды шешу барысында пайда болатыны сөзсіз.
Бүгінгі таңда ресми таратылып жүрген ондаған қосымша пакеттер бар.
Олардың ішінде дербес туындылы дифференциалдық теңдеулер жүйесін шешуге
арналған арнайы математикалық пакет (Partial Differential Equations Toolbox
пакеті), статистика есептерін шығаруға (Statistics Toolbox) және тиімділік
есептерін шығаруға (Optimization Toolbox) арналған, суреттерді талдауға
(Image Processing Toolbox; Wavelet Toolbox) арналған, және т.б. есептерді
шешуге арналған пакеттер бар. Сонымен қатар, әртүрлі динамикалық жүйелерді,
электр желілерін және әртүрлі сигналдарды моделдеуге арналған (Simulink;
Control System Toolbox; Signal Processing Toolbox) пакеттер жасалынған.
Аталған қосымша пакеттердің бәріне бірдей бір дипломдық жұмыс аясында
тоқталу мүмкін емес. Дегенмен, біз бұл жерде аналитикалық есептеулер мен
аналитикалық түрлендірулер жүргізуге мүмкіндік беретін Symbolic Math
Toolbox (бұл оның ресми аталуы) қосымша пакетіне толығырақ тоқталамыз [5].
Бұл пакеттің мүмкіндіктері шексіз, сондықтан біз оның жиі пайдаланылатын
бөлігіне ғана тоқталайық. Пакет электрондық көмекші жүйесімен жабықталған,
сондықтан бұл пакеттің жұмысымен кеңірек танысу үшін соны пайдаланса
болады.
Symbolic Math Toolbox пакеті аналитикалық түрлендірулерден басқа,
дәлдігі басқарылатын арифметикалық есептеулерді де орындайды. Бұл кезде
қажетті дәлдік алдын ала тағайындалады.
Алдымен дәлдігі басқарылатын арифметикалық есептеулерді қарастырайық.
Бұл мақсат үшін Symbolic Math Toolbox пакеті екі функцияны – digits және
vpa функцияларын ұсынады. Олардың біріншісі қажетті дәлдікті үтірден
кейінгі ондық белгілердің саны түрінде тағайындайды, ал екіншісі
тағайындалған дәлдікпен есептеулер жүргізеді. Бұл жерже vpa аббреватурасы
айнымалы дәлдіктегі арифметика деп аударылатын Variable Precision
Arithmetic атауын білдіреді.
Аталған функциялардың қолданылуына мысал келтірейік:
digits ( 30 );
vpa ( pi )
ans=
3.14159265358979323846264338328.
Бұл жерде өте жақсы нәтижені – pi санын 30 мағыналы белгімен оңай алдық.
Дәл осылайша келесі бір белгілі иррационалдық санды – е санын аламыз:
digits ( 100 );
vpa ( exp(1) )
ans=
2.7182 ... ...28.
Бұл жерде нәтиже 100 мағыналы белгімен алынды.
Енді Symbolic Math Toolbox қосымша пакетінің негізгі міндеті –
аналитикалық түрлендірулерге оралайық. Мысалы, x+y және 3y өрнектерін өзара
қосу (сандық емес, символдық қосу) қажет болсын. Әрине, қосу нәтижесі
(тәуелсіз x және y айнымалыларының кез келген мүмкін мәндері үшін) x+4y
болатыны белгілі. Мұндай нәтижені MATLAB жүйесінің негізгі пакеті арқылы
алу мүмкін емес, себебі онда тек нақты сандар арасындағы операциялар
орындалады, ал қарастырылып отырған мысалда x және y айнымалыларының бір де
бір сандық мәні берілмеген. Міне осы жерде Symbolic Math Toolbox қосымша
пакеті көмекке келеді:
sym(`x+y`) + sym(`3*y`)
ans=
x+4y
Бұл пакет обьектілердің жаңа түрін – sym обьектілерін өзара қосып
отыр. Мұндай обьектілерді алу үшін аталуы да осылайша болатын функцияны –
sym обьектілерінің конструкторын шақыру керек. Бұл жерде sym текті
обьектілермен кәдімгі алгебра мен математикалық талдау ережелері арқылы
жұмыс істелінеді.
Келтірілген мысалда алдымен мәндері x+y және 3*y болатын алгебралық
өрнектерге тең sym текті екі айнымалыны енгізіп, содан кейін ғана оларға
қосу операциясын қолданса болар еді:
symbV1=sym(`x+y`); symbV2=sym(`3*y`);
Аталулары symbV1 және symbV2 болатын айнымалылардың тегін whos
командасы арқылы анықтауға болады (whos командасының орындалуына мысалды
қара):
symbV1=sym(`x+y`); symbV2=sym(`3*y`);
whos
Name Size Bytes Class
symbV1 1x1 130 sym object
symbV2 1x1 130 sym object
Grand total is 8 elements using 260 bytes
Мысалдағы sym текті обектілердің әрқайсысы (айнымалылар) 130 байт
орын алады екен. Осымен енді sym текті екі айнымалыны алдық. Мұндай
айнымалылар үшін қосу операциясы сандық түрде емес, алгебраның ережелері
арқылы орындалады:
symRes= symbV1+ symbV2;
symRes=
x+4*y
Енді x атты айнымалының символдық түрдегі аталуы қандай болғаны
ыңғайлы деген сұраққа жауап іздейік? Мұндай айнымалыға шатыспас үшін x
деген ат берген дұрыс сияқты:
x =sym(`x`);
Нәтижесі алғашында оғаш көрінгенмен, кейін қолдануға ыңғайлы болатыны
сөзсіз.
Symbolic Math Toolbox қосымша пакеті аумағында sym текті
айнымалыларды пайдаланып сансыз көп операциялар орындауға, және олар арқылы
көптеген жаңа функциялар құрастыруға болады. Бірақ біз бұл жерде олардың
тек кейбір негізгі түрлеріне ғана тоқталамыз..
1. symplify функциясы арқылы символдық өрнектерді қарапайым түрге
келтіруге болады:
symX=sym(`x^2-2*x*y+y^2`); symY=(`x-y`);
symplify(symXsymY)
ans=
x-y
2. expand функциясы арқылы алгебралық және функционалдық өрнектерді
ашуға болады:
а=sim(`sin(x+y)`);
expand ( a)
ans=
sin(x)*cos(y)+cos(x)*sin(y)
Осы әдіс арқылы алгебра мен тригонометрияның кейбір ұмытылып қалған
формулаларын алуға болады. Немесе, көпмүшеліктерді өзара көбейтуге болады:
а=sym(`(x+y)*(x-y)*(2*x-3*y)`);
expand ( a)
ans=
2*x^3-3*x^2*y-2*y^2*x+3*y^3
3. factor функциясын көпмүшеліктерді қарапайым көбейткіштерге
жіктеуде, немесе, бүтін сандарды жәй сандарға жіктеуде қолдануға болады:
factor(sym(`x^5-1`))
ans=
(x-1)*(x^4+x^3+x^2+x+1)
factor(sym (`123456789`))
ans=
(3)^2*(3803)*(3607)
4. Ал subs функциясы арқылы көрсетілген символдық айнымалыларға жаңа
өрнектер түрінде мән беруге болады:
syms x y a b
subs (x*y, [x,y], (a+b, a-b])
ans=
(a+b)*(a-b)
Соңғы мысалда әрқайсысы жеке жазылатын бірқатар эквиваленттік
x=sym(`x`); y=sym(`y`); a=sym(`a`); b=sym(`b`);
өрнектерді қысқаша жазу үшін syms функциясын қолдандық. Содан кейін x*y
өрнегіндегі x орнына a+b өрнегін, ал y орнына a-b өрнегін аналитикалық
түрде қойып шықтық.
5. det функциясы, символдық матрицаларды қолданып осы матрицаның
детерминантын (анықтауыш) аналитикалық түрде есептейді:
syms x y a b
det ([x,y;a,b])
ans=
x*b-y*a
Аналитикалық түрде осы матрицаға кері матрицаны да табуға болады:
syms x y a b
inv ([x,y;a,b])
ans=
[ -b(-x*b+y*a), y(-x*b+y*a)]
[ a(-x*b+y*a), -x(-x*b+y*a)]
Жалпы жағдайда, сызықтық алгебраның аналитикалық операцияларын
орындайтын көптеген функциялар бар. Олар туралы Symbolic Math Toolbox
пакетімен бірге \help\pdf_doc\symbolic\symbolic_tb. pdf файлында берілетін
құжаттардағы анықтауыш арқылы білуге болады.
Эмоциялық жағынан өте күшті әсер қалдыратын операцияларға пакеттің
символдық дифференциалдау және символдық интегралдау мүмкіндіктері жатады.
Олардың біріншісі diff функциясы арқылы, ал екіншісі int функциясы арқылы
орындалады. Мысалдар келтірейік:
y=sym (`x^2-4*x-7`);
diff (y, `x`)
ans=
2*x-4
Бұл жерде diff (y, `x`) өрнегі y-ті x бойынша дифференциалдау
дегенді білдіреді. Енді интегралдауға мысал келтірейік:
y=sym (`1sin(x)`);
int (y, `x`)
ans=
log(csc(x)-cot(x))
Шектерді де аналитикалық түрде есептеуге болады:
limit (sym(`sin(x)x`))
ans=
1
Енді функцияларды Тейлор қатарына аналитикалық түрде жіктеу
операциясына тоқталайық:
y=sym (`sin(x)`);
taylor (y, 0)
ans=
x-16*x^3+1120*x^5
Нәтижесінде Тейлор қатарының жеке түрі – қатар 0 нүктесінің маңайында
қарастырылғанда пайда болатын Маклорен қатарын алдық.
Бұл жерде алынған қатардың ретіне (дәрежесіне) былайша тапсырыс
беруге болады:
taylor (y, 0,8)
Мұндай операцияның нәтижесі
ans=
x-16*x^3+1120*x^5-15040*x^7
түрінде алынады.
Symbolic Math Toolbox қосымша пакеті алгебралық және дифференциалдық
теңдеулердің аналитикалық шешімдерін былайша алуға мүмкіндік береді:
solve (sym (`a*x^2+b*x+c`))
ans=
[ 12a*(-b+(b^2-4*a*c)^(12))]
[ 12a*(-b-(b^2-4*a*c)^(12))]
Енді гармоникалық тербелістердің
y``=-y; y(0)=0; y`(0)=1;
дифференциалдық теңдеуін шешейік.
Бұл кезде аналитикалық шешімді іздеу программасы былайша жазылады:
dsolve (`D2y=-y`, `y(0)=0`, `Dy(0)=1`, `x`)
ans=
sin(x)
Келтірілген қысқаша шолудан Symbolic Math Toolbox қосымша пакетінің
шексіз көп мүмкіндіктері туралы аздаған мәлімет алдық. Қосымша пакеттің
MATLAB жүйесінің мүмкіндіктерін қаншама молайтынын көруге осының өзі
жеткілікті.
1.3 ВАРИАЦИЯЛЫҚ ЕСЕПТЕУЛЕРДІҢ ҚАРАПАЙЫМ ЕСЕБІ
Вариациялық есептеулер курсында функционалдарды экстремумға зерттеу
есептері қарастырылады [6-11]. Функционал деп белгілі бір класқа жататын
әрбір функцияға нақты санды сәйкес қою ережесі айтылады.
Енді бір айнымалының функциясы мен оның туындысына тәуелді мынадай
функционалды қарастырайық:
(1.1)
Есептің шекаралық шарттары
(1.2)
түрінде берілсін. Бұл жерде F(x,y,y() – үш айнымалы шаманың үзіліссіз
функциясы. Функция соңғы екі аргументі бойынша дифференциалдануға тиіс.
Функционалдың экстремумға жетуінің қажетті шарты
(1.3)
түрінде беріледі. Демек, экстремалдық y0(x) функциясында функционалдың
вариациясы нолге тең болукерек.
Функционалдың (J вариациясы оның (J өсімінің функцияның (y
вариациясына қатысты сызықтық бөлігі болады. Біздің жағдайда (J(y) тәуелсіз
айнымалы y(x) функциясы мен оның y((x) туындысының
y(x)(y0(x)((y(x); y((x)(y(0(x)((y((x)
вариациясынан туындайды. Сонымен қатар шекаралық шарттарға сәйкес анықталу
интервалының шеткі нүктелерінде функцияның вариациялары нолге тең болады:
(y(x1)((y(x2)(0.
Енді функционалдың вариациясын оның өсімінің сызықтық бөлігі ретінде
есептейік. Ол үшін F(x,y0+(y0,y(0((y() функциясын экстремалдық функцияның
маңайында Тейлор қатарына жіктеп, оның тек сызықтық бөлігін ғана сақтап
қаламыз. Содан кейін сақтап қалған бөлікті бөлшектеп интегралдасақ:
(1.4)
теңдігін аламыз.
Енді функцияның (y(x) вариациясы тәуелсіз шама екенін ескеріп,
теңдікке вариациялық есептеулердің негізгі леммасын қолдансақ, бірінші
көбейткіштің нолге тең болу қажеттігі туындайды. Олай болса, экстремум
беретін функция мынадай дифференциалдық теңдеуді қанағаттандырады екен:
.
(1.5)
Бұл теңдеу Эйлердің дифференциалдық теңдеуі деп аталады. Теңдеу жалпы
жағдайда екінші ретті болады және екі (1.2) шекаралық шарттармен
жабдықталады. Теңдеудің кез келген шешімі экстремал деп аталады. Бұл
функционал өзінің экстремумына жететін қисықтың теңдеуі.
Бірақ Эйлер теңдеуі бастапқы емес, тек шекаралық шарттармен
толықтырылатын болғандықтан, Кошидың дифференциалдың теңдеуінің шешімінің
бар және жалғыз болуы туралы теоремасы бұл жерде қолданылмайды. Демек,
экстремалдың табылмауы, ал табылғанның өзінде, оның жалғыз болмауы мүмкін.
Бәрі Эйлердің (1.5) теңдеуінің түріне және (1.2) шекаралық шарттарға
байланысты.
Енді (1.5) Эйлер теңдеуінің жекелеген түрлерін қарастырайық.
Интеграл асты F функциясы y( туындысына тәуелді емес немесе оған
сызықты түрде тәуелді.
Бұл кезде Эйлер теңдеуі алгебралық теңдеуге айналып кетеді де, оның
шешімінде белгісіз тұрақты шамалар болмайды және ол шешімнің шекаралық
(1.2) шарттарды қанағаттандыруы шарт емес. Егер шекаралық шарттар
қанағаттандырылатын болса, онда экстремал алынады. Кері жағдайда
вариациялық есептің шешімі болмайды.
1. 1-ші жағдайдың жекелеген түрі: F=P(x,y)+y(Q(x,y), әрі (P(y=(Q(x
болсын. Бұл кезде (1.5) теңдеуі 0=0 тепе-теңдігіне айналып, экстремал
ретінде M1(x1,y1) және M2(x2,y2) нүктелерін өзара жалғастыратын кез келген
қисықты алуға болады. Ал (1.1) қисықсызықты интеграл бұл кезде интегралдау
жолына тәуелсіз болады да, вариациялық есеп мағынасын жоғалтады.
2. Интеграл асты F функциясы y фунциясына айқын түрде тәуелді емес.
Бұл кезде болғандықтан Эйлер теңдеуі теңдеуіне айналады да,
оның бірінші интегралы Fy((C1 түрінде анықталады. Бұл бірінші ретті теңдеу
және оның шешімін табу берілген екінші ретті теңдеудің шешімін табудан
жеңілірек болады.
3. Егер интеграл асты F функциясы x айнымалысына айқын түрде тәуелді
болмаса, онда Эйлер теңдеуін түріне келтіруге болады, және оның
бірінші интегралы F(y(Fy((C1 түрінде анықталады. Шынында (1.5) Эйлер
теңдеуін ашып жазсақ Fy(Fxy((Fyy(y((Fy(y(y((=0 теңдеуін аламыз және F
функциясы x айнымалысына айқын түрде тәуелді болмағандықтан, ол
Fy(Fyy(y((Fy(y(y((=0 түріне енеді. Дәл осындай түрге F(y(Fy((C1 теңдігінің
x бойынша толық туындысы да келтіріледі. Шынында
d(F(y(Fy()(dx=Fyy(+Fy(y(((y((Fy((y( (Fyy(y(+Fyy(y(()=Fyy((Fyy(y(2(Fyy(y (
y(( = 0
қатынасын y( туындысына бөліп тастасақ жоғарыдағы Эйлер теңдеуін аламыз.
Функционалдың анықталған экстремалдарда шын мәнінде экстремумға
жететінін тексеру үшін жеткілікті шарттарды қолдану қажет. Жеткілікті
шарттардың ішіндегі ең қолайлысы Лежандр шарты. Оны қолдану үшін Fy(y(
туындысының экстремалға жақын жатқан қисықтардағы таңбасын анықтау керек.
Егер барлық y(x) қисықтары үшін және кез келген y((x) үшін Fy(y(0 болса,
онда осы экстремалда күшті минимум анықталады. Ал егер Fy(y(0 шарты барлық
y(x) қисықтары үшін, бірақ тек экстремалға жақын жатқан y((x) үшін ғана
орындалса, онда әлсіз минимум анықталады. Сол сияқты Fy(y(0 кезінде
максимумға (күшті немесе әлсіз) қол жетеді.
1.4 ҚАРАПАЙЫМ ВАРИАЦИЯЛЫҚ ЕСЕПТІ ШЫҒАРУ
АЛГОРИТМЫ
Берілген
(1.6)
функционалының экстремалын табу, және алынған экстремалды жеткілікті
шарттарға зерттеп, шешімнің графигын тұрғызу керек.
Бұл мысалда интеграл асты F(x,y,y() функциясы жалпы түрдегі функция
болады, сондықтан вариациялық есепті дәстүрлі әдіспен шешу үшін Эйлер
теңдеуін (1.5) түрінде құрамыз:
, немесе .
Бұл жерде , , , және болады. Демек, Эйлер
теңдеуі түрінде алынады да, оның жалпы шешімі
болады. Шешімге шекаралық шарттарды қойып
түріндегі теңдеулер жүйесін аламыз. Теңдеулер жүйесін шешіп
,
мәндерін табамыз. Демек, функционалдың экстремалы
түрінде болады екен. Бұл жерде үтірден кейін 14 мағыналы белгі сақталған.
Келтірілген мысалдан ең қарапайым есептің сандық нәтижесін алу үшін
бірқатар алгебралық операциялар орындалуы керек екені көрінеді. Ал белгісіз
Сi тұрақтылардың саны көбейген сайын мұндай операциялардың саны да көбейіп
кететіні түсінікті.
Енді вариациялық есепті шешуге MATLAB жүйесінде программалау әдісін
қолданайық.
Дипломдық жұмыста қарапайым вариациялық есепті MATLAB жүйесінде
шешудің программасын AYSULU1 деп атаймыз.
Аталған программаны жазуды компьютердің жадын тазалаудан бастаймыз
(clear all). Нақты сандарды 14 мағыналы белгімен қолдану үшін арнайы формат
тағайындаймыз (format long). Шешілетін есептің аталуын мониторға шығаруды
ұйымдастырып (disp('1a мысалды шешеміз'), графикты сызуға жеткілікті
нүктелерді анықтаймыз. Символдық айнымалыларды сипаттаймыз.
clear all % компьютердің жадын тазалаймыз
format long % сандарды 14 белгімен алу форматы
disp('1a мысалды шешеміз') % есептің аталуын дисплейге
% шығарамыз
syms x y Dy D2y % символдық айнымалыларды сипаттау
1a мысалды шешеміз
Эйлер теңдеуі екінші ретті дифференциалдық теңдеу болады. Оны шешу
үшін MATLAB жүйесінде қабылданған белгілеулерді қолданамыз: y( үшін Dy
және y(( үшін D2y операторларын қолданамыз. Интеграл асты функция мен
шекаралық шарттарды жазамыз. Бұл жерде әрбір есептің нақты мәліметтері
келтірілуі керек.
F=x^2+y^2+Dy^2; % интеграл асты функция енгізіледі
x1=-1; % шекаралық шарттар енгізіледі
y1=1;
x2=1;
y2=2;
fprintf('Интеграл асты функция: F=%s\n',char(F))
fprintf('Шекаралық шарттар: y(%d)=%d; y(%d)=%d\n',x1,y1,x2,y2)
Интеграл асты функция: F=x^2+y^2+Dy^2
Шекаралық шарттар: y(-1)=1; y(1)=2
Бұл жерде fprintf функциясы интеграл асты функциясының өрнегін
мәтіндік айнымалы деп тағайындап (char(F)), оны Интеграл асты функция:
деген сөйлемнен кейін мониторға шығарады. Келесі fprintf функциясы
шекаралық шарттарды y(%d)=%d форматымен Шекаралық шарттар: деген сөйлемнен
кейін мониторға шығарады.
Интеграл асты F функциясы – символдық өрнек (char(F), ал x1, y1, x2
және y2 шекаралық шарттар – нақты айнымалылар (%d).
Енді Fy және Fy( дербес туындыларды табайық.
dFdy=diff(F,y) % Fy есептейміз
dFdy1=diff(F,Dy) % Fy' есептейміз
Бұл жерде Fy және Fy' туындыларын dFdy және dFdy1 арқылы белгілеп, оларды
есептеу үшін diff(F,y) және diff(F,Dy) функцияларын қолданамыз.
dFdy =
2*y
dFdy1 =
2*Dy
Эйлер теңдеуіне dFy((dx толық туындысы кіреді. Оны
(1.7)
формуласымен есептейміз
Алдымен (Fy(((x, (Fy(((y және (Fy(((y( дербес туындыларды есептеп,
соңынан dFy((dx туындысын (1.7) формуласы бойынша анықтаймыз. Ол үшін
алдымен (Fy(((x туындысын diff(dFdy1,x) функциясы арқылы есептеп, нәтижесін
d_dFdy1_dx арқылы белгілейміз. Сол сияқты (Fy(((y және (Fy(((y(
туындыларын да есептеп шығып, нәтижелерін dFy1dx арқылы белгіленген
туындысының формуласына қоямыз. Бұл жерде Лежандр шартын тексеруге қажетті
(Fy(((y(= туындысы да есептеліп кетеді. Есептелген туындылардың
операторларының соңында ... жалғасы
Қожа Ахмет Ясауи атындағы халықаралық қазақ-түрік университеті
Математика кафедрасы
Қорғауға жіберілді
Кафедра меңгерушісі
_______профессор Ә.С.Мұратов
ДИПЛОМДЫҚ ЖҰМЫС
Тақырыбы: Вариациялық есептерді MATLAB жүйесінде шешудің
алгоритмдері
5В060100 – Математика мамандығы бойынша
Орындаған
Бейсенбаева А. А.
Ғылыми жетекшісі
тех.ғ.к., доцент
Айтбаев Қ.
Түркістан 2013
МАЗМҰНЫ
КІРІСПЕ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . ... ... ... ... 3
1 ВАРИАЦИЯЛЫҚ ЕСЕПТЕРДІ MATLAB ЖҮЙЕСІНДЕ ШЕШУДІҢ АЛГОРИТМДЕРІ
... ... ... ... ... ... ... ... .. ... ... ... ... ... ... . 5
1.1 MATLAB жүйесінің негізгі бөлігіне қысқаша 5
шолу ... ... ... ... ... ...
1.2 Symbolic Math Toolbox қосымша пакетінің көмегімен аналитикалық
есептеулер жүргізу мүмкіндіктері ... ... ... ... ... .. ... . 13
1.3 Вариациялық есептеулердің қарапайым 20
есебі ... ... ... ... ... ... ... . ...
1.4 Қарапайм вариациялық есепті шығару 22
алгоритмы ... ... ... ... ... ..
1.5 Қарапайым вариациялық есептің жекелеген түрін шығару
алгоритмы ... ... ... ... ... ... . ... ... ... ... ... ... ... ...29
... ... ... ... ... ... ... ... .. ... ...
1.6 Интеграл асты функция түрінде болғандағы есепті шығару
алгоритмы ... ... ... ... ... ... . ... ... ... ... ... ... ... ...33
... ... ... ... ... ...
1.7 Бірнеше функцияға тәуелді функционалдың экстремалы ... ... ... 36
1.8 Есепті шешудің алгоритмы ... ... ... ... ... ... ... ... ... ... ... ... ... ... 37
1.9 Бірнеше айнымалының функциясына тәуелді функционалдың экстремалы
... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ... ... ... ... ... ... 43
1.10 Есепті шешудің алгоритмы ... ... ... ... ... ... ... ... ... ... ... ... ... 45
2 ВАРИАЦИЯЛЫҚ ЕСЕПТЕРДІ MATLAB ЖҮЙЕСІНДЕ ШЕШУДІҢ
РОГРАММАЛАРЫ ... ... ... ... ... ... ... ... ... ... ... 54
2.1 Қарапайым вариациялық есеп ... ... ... ... ... ... ... ... ... ... ... . ... ... 54
2.2 Екі функцияның функционалының экстремумын табу есебінің
программасы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . ... ... ... ... 62
2.3 Екі айнымалыға тәуелді функцияның функционалының экстремумын табу
есебінің программасы ... ... ... ... ... ... ... .. 63
ҚОРЫТЫНДЫ ... ... ... ... ... ... . ... ... ... ... ... ... ... ...66
... ... ... ... ... ... ... ...
ПАЙДАЛАНЫЛҒАН ӘДЕБИЕТТЕР 67
ТІЗІМІ ... ... ... ... ... ... ... ... ...
КІРІСПЕ
Жаратылыстану ғылымының табиғатты, қоршаған ортада жүріп жататын
табиғи процестерді зерттеуде бүгінгі таңда қол жеткен табыстары ұшан-теңіз.
Аталған процестердің басым көпшілігін дифференциалдық теңдеулермен
сипаттауға болады. Бұл теңдеулер процесті басқаратын негізгі тәуелсіз
айнымалылар санына қарай кәдімгі дифференциалдық, немесе дербес туындылы
дифференциалдық теңдеулер деп екі үлкен топқа бөлінеді. Шекаралық және
бастапқы шарттармен толықтырылған бұл теңдеулерді шешу арқылы қарастырылып
отырған процестің даму заңдылығы анықталады.
Зерттеліп отырған процесс неғұрлым күрделі болған сайын зерттеушінің
алдында адамзат баласының осы күнге дейін қол жеткізген ғылыми
жетістіктерін игеру міндеті тұрады. Мұндай жетістіктер күн өткен сайын
ұлғайып бара жатқандықтан, зерттеу процесінің кейбір бөлігін, атап айтқанда
математикалық аппараттың жиі қолданыста болатын үйреншілікті бөліктерін
автоматтыру қажеттілігі туындайды. Дипломдық жұмыста қарастырылатын
вариациялық есептерді MATLAB жүйесінде шешу алгоритмдері тақырыбының
өзектілігі осындай қажеттілікпен негізделген.
Көптеген жағдайларда қоршаған ортада үздіксіз жүріп жататын табиғи
процестерді сипаттайтын дифференциалдық теңдеулердің шешімін тікелей
аналитикалық әдіспен шешу оңайға түспейді. Мұндай кезде процесті
сипаттайтын интегралдық шамалар зерттеледі. Бұл интегралдық шамаларды
функционал деп атайды. Вариациялық есептеулер пәнінде дәлелденгендей, нақты
процесті сипаттайтын дифференциалдық теңдеудің шешімі осы процесс аумағында
құрастырылатын функционалға экстремум береді. Олай болса, дифференциалдық
теңдеуді шешу есебін функционалға минимум беретін функцияны іздеу есебімен
айырбастауға болады. Кез келген процесс өзінің даму барысында көптеген
өзгерістерге ұшырай отырып, соңында тұрақты, стационар күйге тоқталады. Осы
кезде процестің даму барысында жинақталатын кейбір параметрлер өздерінің
минималдық, немесе максималдық шамасына жетеді. Мысалы, жылу таралу
процесіндегі денеде жинақталатын жылу мөлшері, тұтас дененің
деформациялануы кезінде жинақталатын потенциалдық энергия мөлшері және т.б.
стационарлық күй кезінде өздерінің минимумына жетеді. Бұл параметрлер
интегралдық шамалар болып келеді, және олардың мөлшерлері процесті
сипаттайтын функцияның түрімен, бастапқы және шекаралық шарттармен бірегей
анықталады. Демек, енді функционалға минимум беретін осы функцияларды
анықтаса жеткілікті. Бұл функциялар экстремалдар деп аталады және оларды
анықтау вариациялық есептеулер пәнінің негізгі мақсаты болады.
Процесс өзінің стационар күйіне жақындаған кезде функционал арқылы
сипатталатын жоғарыда аталып өткен параметрлер өздерінің өзгеруін
баяулатып, процесс стационар күйге жеткен кезде өзгеруін мүлде тоқтатады.
Математика тілінде мұны параметрдің вариациясы нолге теңеседі деп айтады.
Сонымен, экстремалдарды іздеу дегеніміз функционалдың вариациясының нолге
теңесуін сипаттайтын теңдеуді шешу есебі болып шығады. Алғашында Эйлер
бастап, соңынан Пуассон, Остроградский және т.б. жалғастырған зерттеулер
нәтижесінде экстремумды іздеу есебінің кәдімгі дифференциалдық, немесе
дербес туындылы дифференциалдық теңдеуді шешуді талап ететінін көреміз.
Кәзіргі таңда дифференциалдық теңдеулерді шешу әдістерінен мол
тәжірибе жинақталған. Егер кәдімгі, немесе дербес туындылы диференциалдық
теңдеуді аналитикалық әдіспен шешу қиындық тудыратын болса, онда оны
жуықтап, сандық әдіспен шешуге болады. Әрине, сандық әдістерді қолдану
белгілі бір программалау тілінде жазылған есептеу программасын құруды, және
оны компьютерде жүзеге асыруды талап етеді.
Дипломдық жұмыс кіріспеден, екі бөлімнен тұратын негізгі мәтіннен,
қорытындыдан және пайдаланылған әдебиеттер тізімінен тұрады. Жұмыстың
бірінші бөлімі жоғары деңгейлі MATLAB программалау жүйесінің мүмкіндіктерін
талдаудан басталады. Жүйенің тек нақты сандармен жұмыс істеуге арналған
негізгі бөлігі мен символдық математикаға арналған екінші, қосымша
бөлігінің мүмкіндіктеріне нақты мысалдар арқылы сараптама жасалынған.
Бөлімнің екінші жартысында вариациялық қисаптар ғылымында қарастырылатын
негізгі есептерді MATLAB жүйесінде шешу алгоритмдері келтірілген, және
оларды компьютерде жүзеге асыру үшін құрылатын есептеу программаларының
жұмысына толық түсініктеме берілген.
Дипломдық жұмыстың екінші бөлімінде жоғарыда қарастырылған есептердің
MATLAB жүйесіндегі программалары келтірілген және олардың жұмысы нақты
мысалдармен көрсетілген. Әрбір мысал соңында графикалық материалдармен
толықтырылған. MATLAB жүйесінің мүмкіндіктері нақты мысалдар негізінде
баяндалған. Дипломдық жұмыстың соңында қорытынды және қолданылған
әдебиеттер тізімі келтірілген.
1 ВАРИАЦИЯЛЫҚ ЕСЕПТЕРДІ MATLAB ЖҮЙЕСІНДЕ
ШЕШУДІҢ АЛГОРИТМДЕРІ
1.1 MATLAB ЖҮЙЕСІНІҢ НЕГІЗГІ БӨЛІГІНЕ ҚЫСҚАША ШОЛУ
Жоғары деңгейлі MATLAB программалау жүйесі шартты түрде екі бөліктен
тұрады. Оның бірінші, негізгі бөлігі барлық программалау жүйелерінде
қарастырылатын есептеу мүмкіндіктерін сипаттауға арналған. Бөлікте
программалау жүйесінің негізгі командалары, сандық мәндерді енгізу, немесе
шығару жолдары, қарапайым алгоритмдар мен циклдарды құру, шартты
операторларды қолдану жолдары, графикалық материалдар алу әдістері және
т.б. келтіріледі. Бұл бөлімде енгізілетін шамалар сандық шамалар болады,
және алынатын нәтижелер де сандық шамалар болады.
MATLAB программалау жүйесінің екінші бөлігі математикалық есептеулерді
аналитикалық жолмен жүргізу әдістеріне арналған. Бөлік әрқашан өзгеріп,
толықтырылып отыратын болғандықтан оны MATLAB программалау жүйесінің
негізгі пакетінің толықтырылуы (расширение) деп атайды (ағылшын тілінде
Symbolic Math Toolbox).
Алдымен MATLAB программалау жүйесінің негізгі бөлігіне қысқаша шолу
жасайық [1-5].
MATLAB – матрицалық лаборатория – ғылыми-техникалық есептеулерге
арналған ең үздік программалау жүйесінің бірі. Бұл жүйе қазіргі таңда
есептеу математикасына, мәліметтерді өңдеуге, электрондық приборларды
жобалауға, экономикаға және т.б. қолданбалы ғылым салаларына арналған
бірнеше ондаған қосымшалармен толықтырылған.
MATLAB ең алдымен сандық алгоритмдерді программалауға арналған жүйе.
Ол 1970 жылдары АҚШ-та жасалған қолданбалы LINPACK және EISPACK
пакеттерінің негізінде пайда болды. MATLAB-тың пайда болуы қазіргі таңда
үздік дамыған MathCad, MAPLE және Mathematica жүйелерінің өмірге келуіне
себеп болды. MATLAB жүйесінің дамуына есептеу математикасының дамуы мен
жеке компьютерлердің архитектурасының өзгерулері көп ықпал етті.
MATLAB – жоғары деңгейдегі программалау жүйесі. Оның құрамында барлық
есептеулер түрлерін жүргізуге, мәліметтер қорымен жұмыс істеуге және
ақпараттарды графикалық түрде өңдеуге арналған командалардың бай қоры бар.
Бұл командалар жүйенің әртүрлі директорияларында орналасқан тақырыптық
топтарға бөлінеді. Жүйеде 800-ге жуық командалар бар, олардың тең жартысына
жуығы жүйемен жаңа танысып отырған қолданушыға түсінікті. Мүмкіндігі
кеңірек командалар С тілінде жазылған. Бірақ, командалардың басым көпшілігі
MATLAB жүйесінің тілінде. Сондықтан бұл жүйе қолданушы үшін әрқашан ашық.
Жүйеде екі-, және үш өлшемді графиктермен жұмыс істеуге және жүйеде бар
командаларды қолданып өз командаларын құруға зор мүмкіншілік бар. Сонымен
қатар, С және Фортран тілінде жазылған программаларды MATLAB жүйесінде
қолдануға болады.
Бұл жерде келтіріліп отырған мәліметтер жүйемен жаңадан танысуға
және MATLAB жүйесінің мүмкіндіктерін зерттеуге арналған.
MATLAB жүйесін РС-де немесе Мас-та іске қосу үшін MATLAB-тың фирмалық
суретін екі рет шертсе болғаны. MATLAB–ты UNIX жүйесінде іске қосу үшін
операциялық жүйенің жұмыс терезесіндегі командалық қатарда matlab сөзін
теру керек. MATLAB-тан шығу үшін командалар қатарында quit сөзін тереді.
MATLAB жүйесін игерудің ең оңай жолы – ол матрицалармен жұмыс істеуді
үйрену. Себебі, MATLAB жүйесінің басқа жүйелерден негізгі ерекшелігі, бұл
жүйеде барлық сандар әртүрлі реттегі матрицалар деп қарастырылады. Мысалы,
тұрақты сан (11) өлшемді матрица деп, ал вектор бір бағанадан немесе
бір қатардан тұратын матрица деп қарастырылады. Жалпы түрдегі матрица деп
төртбұрышты сандар массивын алады. Жүйенің тағы бір ерекшелігі, басқа
жүйелерде матрицаны сандар жинағы деп қарастыратын болса, мұнда
матрицаларға жеке сан ретінде қарап, оларға арифметикалық операциялардың
барлық түрлерін сан ретінде қолдана береді. Осы айтылғандарды ескеріп
MATLAB жүйесінде қолданылатын операцияларды матрицалары енгізуден бастайық.
Матрицаны енгізудің бірнеше тәсілі бар:
- элементтердің толық тізімін беру;
- матрицаны сыртқы файлдардан көшіріп алу;
- жүйеде бар арнайы функциялар арқылы матрицаны есептеп шығу;
- өзіңіз құрған М-файлдағы функция арқылы матрицаны есептеп шығу.
Матрицаны тізіммен енгізу үшін мынадай негізгі ережелерді ұстану
керек:
- элементтер өзара бос орын немесе үтір арқылы бөлінеді;
- әрбір қатардың соңы нүкте-үтірмен (;) белгіленеді;
- матрицаның барлық элементтері квадрат жақшамен ( [ ] ) қоршалады.
Мысалы, сиқырлы матрица деп аталатын мынадай сандар массивын
енгізейік:
A=[16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1].
Енгізілген матрица автоматты түрде MATLAB ортасында сақталады да,
оны кез келген уақытта А түрінде шақырып алуға болады.
Бұл матрицаның ерекшелігі, матрицаның кезкелген бағаналарының немесе
кезкелген қатарларының элементтерінің қосындылары бірдей және ол 34 санына
тең. Сонымен қатар, оның диагоналдарында орналасқан элементтердің қосындысы
да 34 санына таң.
MATLAB енгізілген матрицаны былайша түрлендіреді:
А=
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
Матрицаның бағаналарының элементтерінің қосындыларынан вектор-қатар
құрайық. Ол үшін sum(A) командасын енгізсе жеткілікті. MATLAB мынадай
нәтиже шығарады:
ans =
34 34 34 34
Егер алынатын нәтижеге алдынала арнайы идентификатор белгіленбесе,
онда MATLAB оны автоматты түрде ans деп атап, келесі қатардан бастап
нәтижені шығарып береді. Бұл жерде ans идентификаторы ansver-жауап деген
сөзден қысқартылып алынған. MATLAB жүйесінде алдымен бағаналар
қарастырылатын болғандықтан, берілген матрицаның қатарларының элементтерін
есептеу үшін алдымен берілген матрицаны транспондап аламыз.
Матрицаны транспондау апостроф белгісімен іске асады.
A'
командасының көмегімен матрица транспондалады да, нәтижесі былайша басылып
шығады:
ans =
16 5 9 4
3 10 6 15
2 11 7 14
13 8 12 1
Енді матрицаның қатарларының элементтерін есептеу үшін
Sum(A')'
командасын қолданамыз. Нәтижесі вектор-бағана ретінде алынады:
ans =
34
34
34
34
Матрицаның диагональдарының элементтерін есептеу үшін алдымен бас
диагоналдың элементтерінен массив құрайық. Ол үшін diag командасын
пайдаланамыз:
diag(A)=
16
10
7
1
Енді sum(diag(A)) командасы диагоналдық элементтердің қосындысын
береді:
ans=
34.
Осылайша біз матрицаларға қолданылатын бірнеше операцияларды
игердік.
Енді MATLAB-та қолданылатын индекстермен танысайық. Матрицаның қатары
i индексімен, бағанасы j индексімен жабдықталады да A(i,j) арқылы
белгіленеді. Мысалы сиқырлы матрицаның төртінші бағанасының элементтерін
есептеу үшін
A(1,4)+A(2,4)+A(3,4)+A(4,4)
командасын қолданып
ans=
34
мәнін аламыз. Бірақ бұл тәсіл тиімді емес. Мұндай жағдайда матрицаның бір
ғана индексін өзгерту тәсілін пайдаланған жөн. Мысалы, A(1:k, j) операторы
массивтың j-шы бағанасының элементтерін 1-ден k-ға дейін тізбектеп береді.
Ал
sum(A(1:4,4))
командасы алдында қарастырылған төртінші бағананың элементерінің қосындысын
есептеп береді. Бұл жерде қолданылған (:)-қос нүкте операциясының MATLAB
жүйесіндегі маңызы зор. Мысалы, sum(A(:,end)) командасы арқылы матрицаның
соңғы бағанасының элементтерінің қосындысы алынады.
Басқа алгоритмдік тілдер сияқты нақты программа құру үшін MATLAB
жүйесінде де математикалық сөйлемдер құрылады. Олардың құрамында
- айнымалылар;
- сандар;
- операторлар;
- функциялар
болады.
MATLAB жүйесінің тағы бір негізгі ерекшелігі ол айнымалылардың типін
анықтауды қажет етпейді. Жаңадан кездескен айнымалыға MATLAB автоматты
түрде өзінің жадынан орын бөледі, ал егер ол айнымалы бұрыннан бар болса,
онда оның құрамын өзгертіп, қажет болса жадынан қосымша орын тағайындайды.
Айнымалылар әріптермен, цифрлармен және астын сызу символымен
белгіленеді. MATLAB бас әріптермен кіші әріптерді бөліп қарайды. Мысалы, A
мен a екі түрлі айнымалы.
MATLAB жүйесінде сандар ондық есептеу жүйесінде қарастырылады. Ондық
дәреже e әріпімен көрсетіледі. Комплекс сандардың жорамал бөлігін
белгілеуге i немесе j әріптері суффикс ретінде пайдаланылады. Төменде
MATLAB жүйесінде сандардың дұрыс жазылуына мысалдар келтірілген:
3 -99
0.0001
9.6397238 1.60210e-20 6.02252e23
1i -3.14159j 3e5i.
Сандардың бәрі компьютердің жадында IEEE стандартымен анықталатын long
форматымен сақталады. Жылжымалы нүктемен сипатталатын сандарда 16 мағыналы
цифр болады да, олардың мәндері 10-308 –ден 10308 –ге дейінгі
диапазонда өзгереді.
MATLAB жүйесінде мынадай операторлар қолданылады:
+ қосу;
- алу;
* көбейту;
бөлу;
\ сол жақтан бөлу;
^ дәреже;
' дефис-транспондау белгісі;
() есептеу тәртібін көрсететін жақшалар.
MATLAB жүйесінде элементарлық математикалық функциялардың үлкен қоры
бар. Мысалы, abs, sqrt, exp, sin және т.б. Жүйеде теріс сандардың квадрат
түбірлері мен логарифдері де есептеліп, нетижесі комплкс сандар түрінде
алынады. Сонымен қатар күрделі, Гамма функциясы мен Бессель функцияларының
да стандартты командалары бар. Барлық математикалық функциялардың тізімін
алу үшін
help elfun
командасын қолданса болғаны.
Бірнеше арнайы функциялар жиі қолданылатын константаларды береді:
pi 3.14159265...
i жорамал бірлік,
j мағынасы -мен бірдей
eps жылжымалы нүктелі санның салыстырмалы дәлдігі, 2-
52
realmin ең кіші жылжымалы нүктелі сан, 2-1022
realmax ең үлкен жылжымалы нүктелі сан, 21023
Inf шексіздік
NaN сан емес дегенді көрсетеді. Бұл белгі 00 немесе Inf-Inf
операцияларының математикалық мағынасы жоқ екені туралы ескертеді.
Бұл функциялардың мағыналарын қажетінше өзгертіп отыруға болады.
Мысалы
eps=1.e-6.
Функцияның бастапқы мәніне қайта оралу үшін
clear eps
командасы орындалады.
Матрицалармен жұмыс істеу
Матрицаларды жүйенің көмегімен де құруға болады. Ол үшін
- zero бәрі ноль
- ones бәрі бір саны
- rand кездейсоқ сандардың біркелкі таралуы
- randn кездейсоқ сандардың нормальды таралуы
командалары қолданылады. Соңғы екі команда математикалық статистика
есептерінде қолданылатын болғандықтан оларға арнайы тоқталу қажет. Ал
алдыңғы екі команда сандық қатар элементтерін өзара қосу, немесе көбейту
операцияларында нәтиже жинақталатын матрицаларды тазалап алу үшін
қолданылады.
Мысалдар келтірейік:
Z=zero(2,4)
Z=
0 0 0 0
0 0 0 0
F=5*ones(3,3)
F=
5 5 5
5 5 5
5 5 5
MATLAB жүйесінде сандардың массивынан тұратын матрица мәтіндік файл
түрінде құрылады. Төртбұрышты кестенің элементтері өзара бос орын арқылы
бөлінеді және матрицаның қатарларындағы элементтер саны бірдей болу керек.
Мысалы MATLAB жүйесінің сыртында 4 қатардан тұратын мәтіндік файл құрайық:
16.0 3.0 2.0 13.0
5.0 10.0 11.0 8.0
9.0 6.0 7.0 12.0
4.0 15.0 14.0 1.0
Файлды magik.dat деген атпен сақтайық. Енді
load magik.dat
деген команда осы файлды оқып, берілген матрицадан тұратын magik деген
айнымалыны құрады.
Енді М-файлдарды құруды бастайық. Төменгі дәрежедегі алгоритмдік
тілдерде программа деп аталатын қосымшаны MATLAB жүйесінде М-файл деп
атайды. Бұл жүйеде алғаш рет жұмысты бастағанда жүйеге кірген бетте
мониторда MATLAB-тың командалық терезесі ашылады. Командалық терезенің
командалық қатарында командалар теріліп, программаның жұмысын басқаруды
ұйымдастырады. Сонымен қатар, қомандалық терезе арқылы программаның жұмысын
бақылап отыруға болады. Бұл терезеде программаның қателерінің түрі, олардың
программада орналасқан жері және т.б. көрсетіліп отырады және соңында
программа жұмысының нәтижесі көрсетіледі. Ал программаның өзін жазу үшін
командалар терезесінде File тізімін ашу керек. Тізімнен New командасы
арқылы жаңа терезе ашылады. Бұл терезеде жазылатын программаның аталуы және
сақталатын орыны сұралады. Бұл сұрақтарға жауап берілген соң мәтіндік
редактор деп аталатын жаңа терезе ашылады. Осы терезеге бұдан кейін М-файл
деп аталатын жаңа программаның мәтіні орналастырылады (жазылады). М-файл
компьютердің жадында программаның берілген атына .m кеңейту қосылып
сақталады. Бұдан кейінгі жұмыс тек командалық терезе мен мәтіндік редактор
арқылы орындалады. Мәтіндік редакторда программаны жазып болғаннан кейін
редактордың бас жағында орналасқан Run командасы басылады. Бұл кезде
командалық терезе ашылып, онда программаның қателері, немесе есептің
нәтижесі шығады. Есептің нәтижесіне де .m кеңейту қосылып жаңа ат беріледі.
Жаңадан құрылған М-файлды (программаны) келесі жолы ашу үшін мәтіндік
редактордағы File тізімінің Open командасын басылып, пайда болған тізімнен
ізделіп отырған М-файл ашылады. Енді М-файлға өзгертулер енгізе беруге
болады. Командалық терезе мен мәтіндік редактор жұмыс столында бірінің
астына бірі орналасады. Қажет терезені шерту арқылы оларды кезекпен ашып
отырады. Программаға енгізілетін әрбір өзгерістен кейін File тізіміндегі
Save немесе Save All командалары арқылы өзгертулерді жаттатып отыру
керек. Мәтіндік редактордағы программаны дұрыстау барысында командалық
терезеде көрінетін ақпараттардың көлемі өсіп кетіп, жұмыс істеуге кедергі
жасайтын кезі жиі болады. Мұндай кезде командалық қатардағы символынан
кейін clc командасын теріп Enter пернесін басу арқылы командалық терезені
тазалауға болады. Бұл кезде компьютердің жадындағы ақпараттар жоғалып
кетпейді. Олардың ішіндегі қажетті бөлігін бұрынғыша қайтадан командалық
терезеге шығаруға болады.
Ақпарат ағымдарын басқару
MATLAB жүйесінде ақпараттар ағымын басқарудың бес түрі бар:
- if операторы
- switch операторы
- for циклы
- while циклы
- break операторы.
if операторы логикалық пікірді есептеп, нәтижесі ақиқат болса берілген
операторлар тобын орындайды. Операторлар тобының құрамында қажет жағдайда
қосымша шарттарды ескеретін elseif және else операторлары болуы мүмкін. if
операторы end арнайы сөзімен аяқталады.
switch операторы case арнайы сөзімен бірге жұмыс істейді. switch
операторында жақша ішінде арнайы тізім, логикалық шарт немесе есептеу
алгоритмы орналасады. Жақшаның мәніне байланысты case орындалатын
операторды (операторлар тобын) таңдайды. Нәтижесінде берілген шартқа сәйкес
келетін алғашқы оператор (операторлар тобы) ғана орындалады. switch
операторы end арнайы сөзімен аяқталады.
for циклы операторлар тобын берілген сан рет орындап шығуға арналған.
Цикл end арнайы сөзімен аяқталады. Циклға мысал келтірейік:
for i=1:m
for j=1:n
H(i,j)=1(i+j);
end
end
H
Циклдың ішінде орындалатын Н операторының соңында ; белгісі қойылмаса
командалар терезесінде оператордың есептеу нәтижесі әрбір цикл үшін шығып
отырады. Программаның соңындағы Н идентификаторы цикл жұмысын аяқтағаннан
соң алынған нәтижені командалар терезесінен көрсету үшін жазылады. Егер бұл
нәтиже қажет болмаса Н идентификаторынан кейін ; белгісін қояды, немесе Н
белгісін жазбай кетеді. Программаның оқылуын жеңілдету үшін оның мәтінін
жоғарыдағыдай сатылап орналастырған дұрыс.
while циклының орындалу саны логикалық шартпен анықталады. Төменде
мысал ретінде while, if, else және end операторларының көмегімен жазылған
полиномның түбірін қақ бөлу әдісімен анықтаудың программасы келтірілген.
a=0; fa=-Inf;
b=3; fb=Inf;
while b-aeps*b
x=(a+b)2;
fx=x^3-2*x-5;
if sign(fx)==sign(fa)
a=x; fa=fx;
else
b=x; fb=fx;
end
end
x
Программаның жұмысы нәтижесінде x3-2x-5 полиномының
x=
2.09455148154233
түбірі алынады.
break операторы for немесе while циклдарынан циклдың соңына жетпей
шығып кетуге мүмкіндік береді. Егер программада бір бірінің ішінде
орналасқан бірнеше цикл бар болса, онда break операторы тек өзі ішінде
орналасқан циклдан ғана шығарады да, оның сыртындағы циклдың жұмысы жалғаса
береді.
1.2 Symbolic Math Toolbox ҚОСЫМША ПАКЕТІНІҢ КӨМЕГІМЕН
АНАЛИТИКАЛЫҚ ЕСЕПТЕУЛЕР ЖҮРГІЗУ МҮМКІНДІКТЕРІ
MATLAB жүйесінің негізгі бөлігінің (ядро) мүмкіндіктері қаншалықты мол
болғанымен әрқашан жаңадан пайда болып жататын жекелеген математикалық
проблемаларды шешуге оның мүмкіндіктері жеткіліксіз болып жатады.
Мұндай жағдайларда уақтылы шешім қабылдап отыру үшін MATLAB жүйесінің
негізгі пакетінің архитектурасы оған дер кезінде жаңа программалық шешімдер
қосып отыруға бейім етіп жасалынған және мұндай өзгерістер қолданушы
байқамайтындай етіп ұйымдастырылған. Себебі, қосымша пакет
инсталяцияланғаннан кейін ол MATLAB жүйесінің негізгі пакетімен араласып
кетеді де, оны пайдалану әдістерінің негізгі пакетті пайдалу әдістерінен
айырмашылығы болмайды.
MATLAB жүйесінің қосымша пакеттерін MATLAB жүйесін құрастырған
негізгі фирма да (The MathWorks Inc., USA), немесе, сырттан келген басқа
фирмалар да жасай береді. Мұндай пакеттерді жасау программалау техникасы
тұрғысынан алғанда соншалықты қиын болмайды. Бірақ, олардың негізгі
құндылығы шешіліп отырған мәселенің өзектілігі мен оларды қолданып
шешілетін есептердің қиындығымен анықталады. Әрине, мұндай пакеттер күрделі
ғылыми-техникалық проблемаларды шешу барысында пайда болатыны сөзсіз.
Бүгінгі таңда ресми таратылып жүрген ондаған қосымша пакеттер бар.
Олардың ішінде дербес туындылы дифференциалдық теңдеулер жүйесін шешуге
арналған арнайы математикалық пакет (Partial Differential Equations Toolbox
пакеті), статистика есептерін шығаруға (Statistics Toolbox) және тиімділік
есептерін шығаруға (Optimization Toolbox) арналған, суреттерді талдауға
(Image Processing Toolbox; Wavelet Toolbox) арналған, және т.б. есептерді
шешуге арналған пакеттер бар. Сонымен қатар, әртүрлі динамикалық жүйелерді,
электр желілерін және әртүрлі сигналдарды моделдеуге арналған (Simulink;
Control System Toolbox; Signal Processing Toolbox) пакеттер жасалынған.
Аталған қосымша пакеттердің бәріне бірдей бір дипломдық жұмыс аясында
тоқталу мүмкін емес. Дегенмен, біз бұл жерде аналитикалық есептеулер мен
аналитикалық түрлендірулер жүргізуге мүмкіндік беретін Symbolic Math
Toolbox (бұл оның ресми аталуы) қосымша пакетіне толығырақ тоқталамыз [5].
Бұл пакеттің мүмкіндіктері шексіз, сондықтан біз оның жиі пайдаланылатын
бөлігіне ғана тоқталайық. Пакет электрондық көмекші жүйесімен жабықталған,
сондықтан бұл пакеттің жұмысымен кеңірек танысу үшін соны пайдаланса
болады.
Symbolic Math Toolbox пакеті аналитикалық түрлендірулерден басқа,
дәлдігі басқарылатын арифметикалық есептеулерді де орындайды. Бұл кезде
қажетті дәлдік алдын ала тағайындалады.
Алдымен дәлдігі басқарылатын арифметикалық есептеулерді қарастырайық.
Бұл мақсат үшін Symbolic Math Toolbox пакеті екі функцияны – digits және
vpa функцияларын ұсынады. Олардың біріншісі қажетті дәлдікті үтірден
кейінгі ондық белгілердің саны түрінде тағайындайды, ал екіншісі
тағайындалған дәлдікпен есептеулер жүргізеді. Бұл жерже vpa аббреватурасы
айнымалы дәлдіктегі арифметика деп аударылатын Variable Precision
Arithmetic атауын білдіреді.
Аталған функциялардың қолданылуына мысал келтірейік:
digits ( 30 );
vpa ( pi )
ans=
3.14159265358979323846264338328.
Бұл жерде өте жақсы нәтижені – pi санын 30 мағыналы белгімен оңай алдық.
Дәл осылайша келесі бір белгілі иррационалдық санды – е санын аламыз:
digits ( 100 );
vpa ( exp(1) )
ans=
2.7182 ... ...28.
Бұл жерде нәтиже 100 мағыналы белгімен алынды.
Енді Symbolic Math Toolbox қосымша пакетінің негізгі міндеті –
аналитикалық түрлендірулерге оралайық. Мысалы, x+y және 3y өрнектерін өзара
қосу (сандық емес, символдық қосу) қажет болсын. Әрине, қосу нәтижесі
(тәуелсіз x және y айнымалыларының кез келген мүмкін мәндері үшін) x+4y
болатыны белгілі. Мұндай нәтижені MATLAB жүйесінің негізгі пакеті арқылы
алу мүмкін емес, себебі онда тек нақты сандар арасындағы операциялар
орындалады, ал қарастырылып отырған мысалда x және y айнымалыларының бір де
бір сандық мәні берілмеген. Міне осы жерде Symbolic Math Toolbox қосымша
пакеті көмекке келеді:
sym(`x+y`) + sym(`3*y`)
ans=
x+4y
Бұл пакет обьектілердің жаңа түрін – sym обьектілерін өзара қосып
отыр. Мұндай обьектілерді алу үшін аталуы да осылайша болатын функцияны –
sym обьектілерінің конструкторын шақыру керек. Бұл жерде sym текті
обьектілермен кәдімгі алгебра мен математикалық талдау ережелері арқылы
жұмыс істелінеді.
Келтірілген мысалда алдымен мәндері x+y және 3*y болатын алгебралық
өрнектерге тең sym текті екі айнымалыны енгізіп, содан кейін ғана оларға
қосу операциясын қолданса болар еді:
symbV1=sym(`x+y`); symbV2=sym(`3*y`);
Аталулары symbV1 және symbV2 болатын айнымалылардың тегін whos
командасы арқылы анықтауға болады (whos командасының орындалуына мысалды
қара):
symbV1=sym(`x+y`); symbV2=sym(`3*y`);
whos
Name Size Bytes Class
symbV1 1x1 130 sym object
symbV2 1x1 130 sym object
Grand total is 8 elements using 260 bytes
Мысалдағы sym текті обектілердің әрқайсысы (айнымалылар) 130 байт
орын алады екен. Осымен енді sym текті екі айнымалыны алдық. Мұндай
айнымалылар үшін қосу операциясы сандық түрде емес, алгебраның ережелері
арқылы орындалады:
symRes= symbV1+ symbV2;
symRes=
x+4*y
Енді x атты айнымалының символдық түрдегі аталуы қандай болғаны
ыңғайлы деген сұраққа жауап іздейік? Мұндай айнымалыға шатыспас үшін x
деген ат берген дұрыс сияқты:
x =sym(`x`);
Нәтижесі алғашында оғаш көрінгенмен, кейін қолдануға ыңғайлы болатыны
сөзсіз.
Symbolic Math Toolbox қосымша пакеті аумағында sym текті
айнымалыларды пайдаланып сансыз көп операциялар орындауға, және олар арқылы
көптеген жаңа функциялар құрастыруға болады. Бірақ біз бұл жерде олардың
тек кейбір негізгі түрлеріне ғана тоқталамыз..
1. symplify функциясы арқылы символдық өрнектерді қарапайым түрге
келтіруге болады:
symX=sym(`x^2-2*x*y+y^2`); symY=(`x-y`);
symplify(symXsymY)
ans=
x-y
2. expand функциясы арқылы алгебралық және функционалдық өрнектерді
ашуға болады:
а=sim(`sin(x+y)`);
expand ( a)
ans=
sin(x)*cos(y)+cos(x)*sin(y)
Осы әдіс арқылы алгебра мен тригонометрияның кейбір ұмытылып қалған
формулаларын алуға болады. Немесе, көпмүшеліктерді өзара көбейтуге болады:
а=sym(`(x+y)*(x-y)*(2*x-3*y)`);
expand ( a)
ans=
2*x^3-3*x^2*y-2*y^2*x+3*y^3
3. factor функциясын көпмүшеліктерді қарапайым көбейткіштерге
жіктеуде, немесе, бүтін сандарды жәй сандарға жіктеуде қолдануға болады:
factor(sym(`x^5-1`))
ans=
(x-1)*(x^4+x^3+x^2+x+1)
factor(sym (`123456789`))
ans=
(3)^2*(3803)*(3607)
4. Ал subs функциясы арқылы көрсетілген символдық айнымалыларға жаңа
өрнектер түрінде мән беруге болады:
syms x y a b
subs (x*y, [x,y], (a+b, a-b])
ans=
(a+b)*(a-b)
Соңғы мысалда әрқайсысы жеке жазылатын бірқатар эквиваленттік
x=sym(`x`); y=sym(`y`); a=sym(`a`); b=sym(`b`);
өрнектерді қысқаша жазу үшін syms функциясын қолдандық. Содан кейін x*y
өрнегіндегі x орнына a+b өрнегін, ал y орнына a-b өрнегін аналитикалық
түрде қойып шықтық.
5. det функциясы, символдық матрицаларды қолданып осы матрицаның
детерминантын (анықтауыш) аналитикалық түрде есептейді:
syms x y a b
det ([x,y;a,b])
ans=
x*b-y*a
Аналитикалық түрде осы матрицаға кері матрицаны да табуға болады:
syms x y a b
inv ([x,y;a,b])
ans=
[ -b(-x*b+y*a), y(-x*b+y*a)]
[ a(-x*b+y*a), -x(-x*b+y*a)]
Жалпы жағдайда, сызықтық алгебраның аналитикалық операцияларын
орындайтын көптеген функциялар бар. Олар туралы Symbolic Math Toolbox
пакетімен бірге \help\pdf_doc\symbolic\symbolic_tb. pdf файлында берілетін
құжаттардағы анықтауыш арқылы білуге болады.
Эмоциялық жағынан өте күшті әсер қалдыратын операцияларға пакеттің
символдық дифференциалдау және символдық интегралдау мүмкіндіктері жатады.
Олардың біріншісі diff функциясы арқылы, ал екіншісі int функциясы арқылы
орындалады. Мысалдар келтірейік:
y=sym (`x^2-4*x-7`);
diff (y, `x`)
ans=
2*x-4
Бұл жерде diff (y, `x`) өрнегі y-ті x бойынша дифференциалдау
дегенді білдіреді. Енді интегралдауға мысал келтірейік:
y=sym (`1sin(x)`);
int (y, `x`)
ans=
log(csc(x)-cot(x))
Шектерді де аналитикалық түрде есептеуге болады:
limit (sym(`sin(x)x`))
ans=
1
Енді функцияларды Тейлор қатарына аналитикалық түрде жіктеу
операциясына тоқталайық:
y=sym (`sin(x)`);
taylor (y, 0)
ans=
x-16*x^3+1120*x^5
Нәтижесінде Тейлор қатарының жеке түрі – қатар 0 нүктесінің маңайында
қарастырылғанда пайда болатын Маклорен қатарын алдық.
Бұл жерде алынған қатардың ретіне (дәрежесіне) былайша тапсырыс
беруге болады:
taylor (y, 0,8)
Мұндай операцияның нәтижесі
ans=
x-16*x^3+1120*x^5-15040*x^7
түрінде алынады.
Symbolic Math Toolbox қосымша пакеті алгебралық және дифференциалдық
теңдеулердің аналитикалық шешімдерін былайша алуға мүмкіндік береді:
solve (sym (`a*x^2+b*x+c`))
ans=
[ 12a*(-b+(b^2-4*a*c)^(12))]
[ 12a*(-b-(b^2-4*a*c)^(12))]
Енді гармоникалық тербелістердің
y``=-y; y(0)=0; y`(0)=1;
дифференциалдық теңдеуін шешейік.
Бұл кезде аналитикалық шешімді іздеу программасы былайша жазылады:
dsolve (`D2y=-y`, `y(0)=0`, `Dy(0)=1`, `x`)
ans=
sin(x)
Келтірілген қысқаша шолудан Symbolic Math Toolbox қосымша пакетінің
шексіз көп мүмкіндіктері туралы аздаған мәлімет алдық. Қосымша пакеттің
MATLAB жүйесінің мүмкіндіктерін қаншама молайтынын көруге осының өзі
жеткілікті.
1.3 ВАРИАЦИЯЛЫҚ ЕСЕПТЕУЛЕРДІҢ ҚАРАПАЙЫМ ЕСЕБІ
Вариациялық есептеулер курсында функционалдарды экстремумға зерттеу
есептері қарастырылады [6-11]. Функционал деп белгілі бір класқа жататын
әрбір функцияға нақты санды сәйкес қою ережесі айтылады.
Енді бір айнымалының функциясы мен оның туындысына тәуелді мынадай
функционалды қарастырайық:
(1.1)
Есептің шекаралық шарттары
(1.2)
түрінде берілсін. Бұл жерде F(x,y,y() – үш айнымалы шаманың үзіліссіз
функциясы. Функция соңғы екі аргументі бойынша дифференциалдануға тиіс.
Функционалдың экстремумға жетуінің қажетті шарты
(1.3)
түрінде беріледі. Демек, экстремалдық y0(x) функциясында функционалдың
вариациясы нолге тең болукерек.
Функционалдың (J вариациясы оның (J өсімінің функцияның (y
вариациясына қатысты сызықтық бөлігі болады. Біздің жағдайда (J(y) тәуелсіз
айнымалы y(x) функциясы мен оның y((x) туындысының
y(x)(y0(x)((y(x); y((x)(y(0(x)((y((x)
вариациясынан туындайды. Сонымен қатар шекаралық шарттарға сәйкес анықталу
интервалының шеткі нүктелерінде функцияның вариациялары нолге тең болады:
(y(x1)((y(x2)(0.
Енді функционалдың вариациясын оның өсімінің сызықтық бөлігі ретінде
есептейік. Ол үшін F(x,y0+(y0,y(0((y() функциясын экстремалдық функцияның
маңайында Тейлор қатарына жіктеп, оның тек сызықтық бөлігін ғана сақтап
қаламыз. Содан кейін сақтап қалған бөлікті бөлшектеп интегралдасақ:
(1.4)
теңдігін аламыз.
Енді функцияның (y(x) вариациясы тәуелсіз шама екенін ескеріп,
теңдікке вариациялық есептеулердің негізгі леммасын қолдансақ, бірінші
көбейткіштің нолге тең болу қажеттігі туындайды. Олай болса, экстремум
беретін функция мынадай дифференциалдық теңдеуді қанағаттандырады екен:
.
(1.5)
Бұл теңдеу Эйлердің дифференциалдық теңдеуі деп аталады. Теңдеу жалпы
жағдайда екінші ретті болады және екі (1.2) шекаралық шарттармен
жабдықталады. Теңдеудің кез келген шешімі экстремал деп аталады. Бұл
функционал өзінің экстремумына жететін қисықтың теңдеуі.
Бірақ Эйлер теңдеуі бастапқы емес, тек шекаралық шарттармен
толықтырылатын болғандықтан, Кошидың дифференциалдың теңдеуінің шешімінің
бар және жалғыз болуы туралы теоремасы бұл жерде қолданылмайды. Демек,
экстремалдың табылмауы, ал табылғанның өзінде, оның жалғыз болмауы мүмкін.
Бәрі Эйлердің (1.5) теңдеуінің түріне және (1.2) шекаралық шарттарға
байланысты.
Енді (1.5) Эйлер теңдеуінің жекелеген түрлерін қарастырайық.
Интеграл асты F функциясы y( туындысына тәуелді емес немесе оған
сызықты түрде тәуелді.
Бұл кезде Эйлер теңдеуі алгебралық теңдеуге айналып кетеді де, оның
шешімінде белгісіз тұрақты шамалар болмайды және ол шешімнің шекаралық
(1.2) шарттарды қанағаттандыруы шарт емес. Егер шекаралық шарттар
қанағаттандырылатын болса, онда экстремал алынады. Кері жағдайда
вариациялық есептің шешімі болмайды.
1. 1-ші жағдайдың жекелеген түрі: F=P(x,y)+y(Q(x,y), әрі (P(y=(Q(x
болсын. Бұл кезде (1.5) теңдеуі 0=0 тепе-теңдігіне айналып, экстремал
ретінде M1(x1,y1) және M2(x2,y2) нүктелерін өзара жалғастыратын кез келген
қисықты алуға болады. Ал (1.1) қисықсызықты интеграл бұл кезде интегралдау
жолына тәуелсіз болады да, вариациялық есеп мағынасын жоғалтады.
2. Интеграл асты F функциясы y фунциясына айқын түрде тәуелді емес.
Бұл кезде болғандықтан Эйлер теңдеуі теңдеуіне айналады да,
оның бірінші интегралы Fy((C1 түрінде анықталады. Бұл бірінші ретті теңдеу
және оның шешімін табу берілген екінші ретті теңдеудің шешімін табудан
жеңілірек болады.
3. Егер интеграл асты F функциясы x айнымалысына айқын түрде тәуелді
болмаса, онда Эйлер теңдеуін түріне келтіруге болады, және оның
бірінші интегралы F(y(Fy((C1 түрінде анықталады. Шынында (1.5) Эйлер
теңдеуін ашып жазсақ Fy(Fxy((Fyy(y((Fy(y(y((=0 теңдеуін аламыз және F
функциясы x айнымалысына айқын түрде тәуелді болмағандықтан, ол
Fy(Fyy(y((Fy(y(y((=0 түріне енеді. Дәл осындай түрге F(y(Fy((C1 теңдігінің
x бойынша толық туындысы да келтіріледі. Шынында
d(F(y(Fy()(dx=Fyy(+Fy(y(((y((Fy((y( (Fyy(y(+Fyy(y(()=Fyy((Fyy(y(2(Fyy(y (
y(( = 0
қатынасын y( туындысына бөліп тастасақ жоғарыдағы Эйлер теңдеуін аламыз.
Функционалдың анықталған экстремалдарда шын мәнінде экстремумға
жететінін тексеру үшін жеткілікті шарттарды қолдану қажет. Жеткілікті
шарттардың ішіндегі ең қолайлысы Лежандр шарты. Оны қолдану үшін Fy(y(
туындысының экстремалға жақын жатқан қисықтардағы таңбасын анықтау керек.
Егер барлық y(x) қисықтары үшін және кез келген y((x) үшін Fy(y(0 болса,
онда осы экстремалда күшті минимум анықталады. Ал егер Fy(y(0 шарты барлық
y(x) қисықтары үшін, бірақ тек экстремалға жақын жатқан y((x) үшін ғана
орындалса, онда әлсіз минимум анықталады. Сол сияқты Fy(y(0 кезінде
максимумға (күшті немесе әлсіз) қол жетеді.
1.4 ҚАРАПАЙЫМ ВАРИАЦИЯЛЫҚ ЕСЕПТІ ШЫҒАРУ
АЛГОРИТМЫ
Берілген
(1.6)
функционалының экстремалын табу, және алынған экстремалды жеткілікті
шарттарға зерттеп, шешімнің графигын тұрғызу керек.
Бұл мысалда интеграл асты F(x,y,y() функциясы жалпы түрдегі функция
болады, сондықтан вариациялық есепті дәстүрлі әдіспен шешу үшін Эйлер
теңдеуін (1.5) түрінде құрамыз:
, немесе .
Бұл жерде , , , және болады. Демек, Эйлер
теңдеуі түрінде алынады да, оның жалпы шешімі
болады. Шешімге шекаралық шарттарды қойып
түріндегі теңдеулер жүйесін аламыз. Теңдеулер жүйесін шешіп
,
мәндерін табамыз. Демек, функционалдың экстремалы
түрінде болады екен. Бұл жерде үтірден кейін 14 мағыналы белгі сақталған.
Келтірілген мысалдан ең қарапайым есептің сандық нәтижесін алу үшін
бірқатар алгебралық операциялар орындалуы керек екені көрінеді. Ал белгісіз
Сi тұрақтылардың саны көбейген сайын мұндай операциялардың саны да көбейіп
кететіні түсінікті.
Енді вариациялық есепті шешуге MATLAB жүйесінде программалау әдісін
қолданайық.
Дипломдық жұмыста қарапайым вариациялық есепті MATLAB жүйесінде
шешудің программасын AYSULU1 деп атаймыз.
Аталған программаны жазуды компьютердің жадын тазалаудан бастаймыз
(clear all). Нақты сандарды 14 мағыналы белгімен қолдану үшін арнайы формат
тағайындаймыз (format long). Шешілетін есептің аталуын мониторға шығаруды
ұйымдастырып (disp('1a мысалды шешеміз'), графикты сызуға жеткілікті
нүктелерді анықтаймыз. Символдық айнымалыларды сипаттаймыз.
clear all % компьютердің жадын тазалаймыз
format long % сандарды 14 белгімен алу форматы
disp('1a мысалды шешеміз') % есептің аталуын дисплейге
% шығарамыз
syms x y Dy D2y % символдық айнымалыларды сипаттау
1a мысалды шешеміз
Эйлер теңдеуі екінші ретті дифференциалдық теңдеу болады. Оны шешу
үшін MATLAB жүйесінде қабылданған белгілеулерді қолданамыз: y( үшін Dy
және y(( үшін D2y операторларын қолданамыз. Интеграл асты функция мен
шекаралық шарттарды жазамыз. Бұл жерде әрбір есептің нақты мәліметтері
келтірілуі керек.
F=x^2+y^2+Dy^2; % интеграл асты функция енгізіледі
x1=-1; % шекаралық шарттар енгізіледі
y1=1;
x2=1;
y2=2;
fprintf('Интеграл асты функция: F=%s\n',char(F))
fprintf('Шекаралық шарттар: y(%d)=%d; y(%d)=%d\n',x1,y1,x2,y2)
Интеграл асты функция: F=x^2+y^2+Dy^2
Шекаралық шарттар: y(-1)=1; y(1)=2
Бұл жерде fprintf функциясы интеграл асты функциясының өрнегін
мәтіндік айнымалы деп тағайындап (char(F)), оны Интеграл асты функция:
деген сөйлемнен кейін мониторға шығарады. Келесі fprintf функциясы
шекаралық шарттарды y(%d)=%d форматымен Шекаралық шарттар: деген сөйлемнен
кейін мониторға шығарады.
Интеграл асты F функциясы – символдық өрнек (char(F), ал x1, y1, x2
және y2 шекаралық шарттар – нақты айнымалылар (%d).
Енді Fy және Fy( дербес туындыларды табайық.
dFdy=diff(F,y) % Fy есептейміз
dFdy1=diff(F,Dy) % Fy' есептейміз
Бұл жерде Fy және Fy' туындыларын dFdy және dFdy1 арқылы белгілеп, оларды
есептеу үшін diff(F,y) және diff(F,Dy) функцияларын қолданамыз.
dFdy =
2*y
dFdy1 =
2*Dy
Эйлер теңдеуіне dFy((dx толық туындысы кіреді. Оны
(1.7)
формуласымен есептейміз
Алдымен (Fy(((x, (Fy(((y және (Fy(((y( дербес туындыларды есептеп,
соңынан dFy((dx туындысын (1.7) формуласы бойынша анықтаймыз. Ол үшін
алдымен (Fy(((x туындысын diff(dFdy1,x) функциясы арқылы есептеп, нәтижесін
d_dFdy1_dx арқылы белгілейміз. Сол сияқты (Fy(((y және (Fy(((y(
туындыларын да есептеп шығып, нәтижелерін dFy1dx арқылы белгіленген
туындысының формуласына қоямыз. Бұл жерде Лежандр шартын тексеруге қажетті
(Fy(((y(= туындысы да есептеліп кетеді. Есептелген туындылардың
операторларының соңында ... жалғасы
Ұқсас жұмыстар
Пәндер
- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.
Ақпарат
Қосымша
Email: info@stud.kz