Brian_-_Matlab_R2007_s_nulya_33 (771739), страница 45
Текст из файла (страница 45)
11.3), расположенном ниже.) Затем, когда вы вызовете М.файл, выполнение остановится в проверочной точке и, также, как в случае с командой ЬеуЬоагб, управление вернется в командное окно, где вы увидите особенное приглашение с символом К. Напомним, что когда вы будете готовы возобновить выполнение М-файла, наберите ВЬсовк. Когда вы закончите выполнение отладки, используйте команду бЬс1еак, чтобы «снять» проверочные точки в М-файле.
Давайте посмотрим применение этих методик на примере. Предположим, что вы хотите создать М-файл для функции, который получает в качестве входных параметров два выражения Й и д (заданные или как символьные выражения, или как строки) и два числа а и Ь. Затем этот М-файл строит функции Е и с на промежутке между х = а и х = Ь и закрашивает область между ними. Для первой попытки вы могли бы начать с М-файла вЬабесцггеэлщ, состоящего из девяти строк, который выглядит следующим образом: Еипскаов вЬабесцкзгев(Е, с, а, Ь) ЪЯН(ЦЭЕС(ЖАНЕ Рисует область между двумя кривыми зз ЯНацЕСПЕ7ЕЕ (Е, д, а, Ь) получает строки или выражения Е зз и д, воспринимает их как щункции, строит их на промежутке зз меяду х ~ а и х = Ь и вакравивает область между ними.
Глава 11. Разрешение проблем Чтобы начать определять, что вышло не так, как надо, давайте попробуем другой пример, скажем » в1!Ввв х) вЬабеспгогев(х42, вдгй(х), О, 1)) ах1в ива!ваге Теперь мы можем увидеть результат (Рис. 11.5). ОВ ов О.о 0.6 05 04 оо О! о о 02 04 06 ОВ 1 Рис 11.5. Пфвая попытка закрасить область между Вт и оlх Легко выяснить, почему наши области получились незакрашенными. Это произошло потому, что мы использовали команду Р(о1 (которая строит кривые) вместо команды ра(е)5 (которая строит заполненные области). Таким образом, можно предложить, чтобы мы попробовали изменить последнюю строку М-файла на следующую команду: райсЬ( [хча1в, хча1в], [баии(хча1в), джип(хча1в) ] ) Эта команда приводит к появлению сообщения об ошибке: ??? Егтот ця1пд ==> рагс)г Мог епоцд)о 1прцг атдшаепея.
Еггот 1п ==> я)оас)еспгчея ас 9 расс)2([хча1я, хча1я], [Гйцп(хча1я), дбпп(хча1я)]) поэтому мы обращаемся к справке и пробуем набрать » Ье1р рагсЬ чтобы увидеть, используем ли мы синтаксис правильно. Строки подсказки указывают,что команды ра(сй требует третьего параметра, цвета (в координатах формата ВВВ), которым необходимо заполнить нашу область. Таким образом, мы получаем следующую строку: раесЬ( [хча1в, хча1в], [ййввп(хча1в), дйип(хча1в) ], [.
О, О, .7] ) Теперь мы можем получить новый результат (Рис. 1].б) » В1!Вая х) ВЬайеспкчев (х" 2, вдгк (х), О, 1) ) аввйв вдпаге 262 мдт).дв Результат выглядит лучше, но он все еще не совсем верен, поскольку мы можем видеть таинственную диагональную линию ниже середины рисунка. Но если мы пробуем » в1лвв ха аЬийвсик гее(х"2, х'4, -1,5, 1.5) то мы получим довольно причудливый рисунок (Рис. ) 1.7). Глава 11. Разрешение проблем 263 ными параметрами, мы теперь пол)маем в командном окне приглашение К». В этот момент разумно пробовать перечислить координаты точек, которые явля>отся ве рпшнами нашего заполненного многоугольника, таким образом, мы пробуем )С» ) гхгв1в, хтгв1в) ', гкйизз(хев1в), джип(хтв1в)) ') Ответы к практическим занятиям Ответы к практическому занятию А: алгебра и арифметика (а) » 1111 - 345 апв 766 (б) » йоатвае 1опд) [еаср(14), 382801*р1) 1.0е+06 * 1.20260428416478 1.20260480938683 Второе число больше.
(в) » [2709/1024) 10583/4000) 2024/765) апв = 2.64550781250000 2.64575000000000 2.64575163398693 » ваяй(7) апв 2.64575131106459 Третье число, равное 2024/765, является наилучшим приближением. (а) » оовЬ(0.1) апв 1.00500416805580 Ответы к практическим занятиям 267 -9/5*у-7/5 Мы получаем семейство ответов с одним параметром в зависимости от переменной у. На самом деле три плоскости, определенные этими тремя линейными уравнениями, не являются независимыми, потому что первое уравнение является суммой второго и третьего. Положение точек, которые удовлетворяют этим трем уравнениям — это не точка, не пересечение трех независимых плоскостей, а скорее линия, пересечение двух различных плоскостей.
Проверим еще раз. В с~ [3 ° -9 ° 8) 2 ° -Зф 71 1е -6 ° 13 ) В [ж) ут в) апв = » вузае ж у) 6ессок(ж"4 " у"4) апе = (х - у)э(х + у)*(х"2 + у 2) (а) в1ир116у(1/(1 + 1/(1 + 1/ж) ) ) (х+1)/(2*х+1) (б) » е1зпр1Ыу(сое(х) "2 - ейп(х) "2) 2*сов(х)"2-1 Давайте теперь попробуем использовать команду а1пзр1е. » [Ьеавег, Ьои) = еыкр1е(сов(х)*2 - в1п(х)'2) Ьессег = сов(2*х) 288 мдт(.дв Ьозз = созаЬ1пе (ссбд] » 3*301 ргессу(вуза('3")'301) апв 4.1067е+143 410674437175765127973978082146264947899391086876012309414440570 235106991513249722978140061846706682416475145332179398212844053 81982970873236918003 » 410674437175765127973978082146264947899391086876012309414440 5702351069915 13249722978140061846706682416475145332179398212844 05381982970873236918003 апв = 1.0114е+010 Но отметьте следующее: » в3аа('3" 301' ) апв = 3 "301 Это не работает, потому что команда вут сама по себе не выполняет вычисления. (а) » во1че('67ях + 32 = 0', 'зз') апв -32/67 (б) » чра(вззв, 15) апв = †.477611940298507 (в) » ргесеу(во1че('х"3 + рах + д - "0', 'х')) 1/3 Р 1/б $1 — 2 1/3 Ответы к практическим занятиям 269 1/2 / 1/3 2 -----]] 1/3]] 1/3 $1 /] 1/2 / 1/3 1] + 2 -----]] 1/2 1 3 1/3 3 2 1/2 $1 := -108 с) + 12 (12 р + 81 с) ) Обратите внимание, как команда рте((у выделяет подвыражение — 108д+12,]пр'+81д', которое встречается в формулах для всех трех корней, и как эта команда при- своила этому выражению название.
Данное выражение тесно связано с дискри- минантом кубического уравнения. (г) » екр1ос('ехр(зс) ') з Ьо16 оп) екр1ое('8*х - 4') как 1е ( ' е*х ахи 8х — 4 ' ) 9 зпе ах-4 зо го -ге -г о г з в х ( 1/3 (- 1/12 $1 ( 1/3 1/12 $1 1/2 1 3 ]1/б $1 ! ]1/б $1 ! 1/3]] $1 /] Ответы к практическим занятиям » Х = -210.112) р1ог(Х, в1п(1./Х."2) ) )(агпйпд: Шч[с)е Ьу аего. 271 0.5 -0.5 -1 -г -1 0 1 2 Оба рисунка неполны. Давайте посмотрим, что получается, если мы уточним сетку. » х -210.00112) р1ос(х, вап(1./х."2)) Иагп1пд: [)[лЫе Ьу гего. 0.5 -0,5 -1 -2 -1 0 ! 2 (в) » екр1ок('Сап(х/2)', [-ра р1])з ахая([-ра, ра, -10, 10]) Этот рисунок выглядит лучше, но из-за чрезвычайно сильного колебания рядом с х = 0 ни функция р!о(, ни команда акр!о( не позволяет получить полностью точ- ный график функции. мдтыв 1зп022) 10 -5 — 1ОО -3 -2 -1 0 1 2 3 (г) » Х -1.510.0111.52 » р1ов(Х, ехр(-Х."2), Х, Х."4 - Х.
"2) 0.5 -0.5 21.5 -1 -О.5 О 0.5 10. Давайте построим функции 2" и х и найдем точки пересечения. Мы построим ик сначала с помощью функции еар(о(, только чтобы получить представление о графике. » езр1ое('х"4')) ЬоЫ оп) евр1ов('2*х')) Ьо16 оЫ Е1В1е('х*4 еей 2"х') Ответы к пракгическим занятиям 273 х Впог зо 4О зо то -г о г 4 в х Обратите внимание на большой вертикальный диапазон. Мы видим из графика, что нет никаких точек пересечения между значениями 2 и б или между -б и -2, но есть, очевидно, две точки пересечения между -2 и 2. Давайте теперь воспользуемся функцией р(о( и сосредоточимся на промежутке между -2 и 2. Мы покажем функцию х пунктирной линией.
» Х = -210.112; р1ое(Х, 2;"Х)г » ) И; р1ое(Х, Х.*а, -- ° ); )ои оы 14 1г 1О о -г Мы видим, что есть точки пересечения около -0.9 и 1.2. Существуют ли какие- либо другие точки пересечения? Налево от 0 функция 2" всегда меньше 1, тогда как функция ж~ уходит к бесконечности, поскольку ж уходит к отрицательной бесконечности. На другой стороне и ж4, и 2" стремятся к бесконечности, поскольку х уходит в бесконечность, таким образом, графики могут пересечься снова где.то справа после значения б. Давайте проверим. » Х = 610.
11201 р1ос (Х, 2. "Х) 1 » )то16 овг р1ое(х, Х.'4, '--') а Ьо1о оЫ 2У4 Мат 1ДВ х1а 1О О 8 8 1О 12 14 18 18 20 Мы видим, что они действительно пересекаются снова рядом с х = 16. С помощью некоторых вычислительных методов вы можете показать, что графики больше никогда не пересекутся (например, с помощью взятия логарифмов), таким образом, мы нашли все точки пересечения. Теперь давайте использовать команду (хего, чтобы найти значения этих точек численно. Зта команда ищет решение около заданной начальной точки. Чтобы найти три различные точки пересечения, мы должны будем использовать три различных начальных точки.
Вышеупомянутый графический анализ предлагает эти отправные точки. » г1 = йвего('2"х - х"4', -0.9) г2 йгего('2"х - х"4', 1.2) гЗ = йвего('2«х — х*4', 16) -0.8613 1.2396 г3 16 Давайте проверим, удовлетворяют эти решения» нашему уравнению. » виЬв('2 "зс - х"4', 'х'«г1) виЬв('2 "х - х"4', 'х', г2) виЪв('2 "х - х"4', 'х««гЗ) апв 1.1102е-016 апв = Ответы к практическим занятиям 276 -8.8818е-016 Таким образом,к1и к2 удовлетворяют уравнению приблизительно, а к3 удовлетворяет уравнению точно. Очевидно,что )б является решением. Также интересно пробовать использовать команду во)че для этого уравнения.