Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Понятие корректно и некорректно поставленных задач.Содержание книги
Поиск на нашем сайте Понятие корректно и некорректно поставленных задач. При приближенном решении математических задач или прикладных задач весьма существенным является вопрос о том, корректна ли решаемая задача. Большинство некорректных задач может быть приведено к уравнению 1 рода, имеющему вид:
в котором по заданному, не обязательно линейному оператору А, действующему из пространства X в пространство Y и по заданному элементу Определение. Задача определения решения x=R(y) из пространства Х по исходным данным Определение. Следуя Ж. Адамару, задачу отыскания а) существует в пространстве Х; б) единственно в Х; в) устойчиво в Х. Если хотя бы одно из условий не выполняется, то задачу называют некорректной (некорректно поставленной). Определение. Назовем задачу (1.1) корректной по Тихонову на множестве а) Точное решение задачи существует в классе М, б) принадлежащее множеству М решение задачи единственно для любой правой части у из множества Сходимость метода простой итерации в случае единственного решения Постановка задачи В действительном гильбертовом пространстве Н решается уравнение 1 рода Ах = у, (1) где А - ограниченный, положительный, самосопряжённый оператор, для которого нуль не является собственным значением. Причём нуль принадлежит спектру оператора А, т.е. задача некорректна. Предполагается существование единственного решения х при точной правой части у. Для его отыскания предлагается итеративный метод
Однако на практике часто правая часть у уравнения (3.1) бывает неизвестной, а вместо у известно приближение
Если раскрыть скобки во втором слагаемом в (3.2) и (3.3), то Как нетрудно видеть, метод (3.3) обобщает метод простой итерации, т.е.
Последний получается из (3) при к = 1. Сходимость при точной правой части Теорема 1. Итеративный процесс (2) при условии Доказательство.
Рассмотрим процесс (2) при n=0
Воспользовавшись интегральным представлением самосопряженного оператора ( Разобьём полученный интеграл на два интеграла Рассмотрим 1ый интеграл. При условии (4) величина Тогда так как Доказательство. Будем считать Оценка скорости сходимости Теорема 3. Если точное решение х уравнения (1) истокопредставимо, то при Погрешность в счёте Теорема 4. Если точное решение х уравнения (1) истокопредставимо, то при условии Постановка задачи В действительном гильбертовом пространстве Н решается уравнение 1 рода Ах = у, (1) где А - ограниченный, положительный, самосопряжённый оператор, для которого нуль не является собственным значением. Причём нуль принадлежит спектру оператора А, т.е. задача некорректна. Предполагается существование единственного решения х при точной правой части у. Для его отыскания предлагается итеративный метод Однако на практике часто правая часть у уравнения (1) бывает неизвестной, а вместо у известно приближение
Если раскрыть скобки во втором слагаемом в (2) и (3), то Решение задачи Для решения Ax = y используется метод (3). Все результаты получены в предположении, что точное решение Определим момент т останова итерационного процесса (3) условии
Предполагаем, что при начальном приближении Покажем, что правило останова по невязке применимо к методу (3). Рассмотрим семейство функций
Лемма 1. Пусть Лемма 2. Пусть Лемма 3. Пусть Используем доказанные леммы при доказательстве следующей теоремы. Теорема 1. Пусть Доказательство. По индукции легко показать, что Следовательно, Отсюда В силу лемм 1 и 2 имеем
Кроме того, из (5) и (6) следует, что Применим правило останова (4). Тогда Для Из (13) и (18) получаем при
Действительно, из (17) имеем Имеет место Теорема 2. Пусть выполнены условия теоремы 1 и пусть Доказательство. Имеем
(см. (17)). Тогда, поскольку соотношение (5) справедливо для любых n,то Замечание 1. Порядок оценки (19) есть
Замечание 2. Хотя формулировка теоремы 2 даётся с указаниями степени представимости s и истокопредставимого элемента z, на практике их значение не потребуется, так как они не содержатся в правиле останова (4). И тем не менее в теореме 2 утверждается, что будет автоматически выбрано количество итераций т, обеспечивающее оптимальный порядок погрешности. Но даже если истокопредставимость точного решения отсутствует, останов по невязке (4), как показывает теорема 1, обеспечивает сходимость метода, т.е. его регуляризующие свойства. Понятие корректно поставленной и некорректно поставленной задачи. Пример. Неявный метод простой итерации решения некорректных задач с априорным выбором числа итераций. Пусть в гильбертовом пространстве Н требуется решить Опр. Задача определения решения Пример некорректной задачи: Х=У=L2(0,1). Интегральное уравнение Фредгольма 1-ого рода Опр. назовём задачу (1) корректной по Тихонову на множестве Будем решать ур-е (1) с помощью неявного итерационного метода:
Предполагая существование единственного точного решения x уравнения (1) при точной правой части у, ищем его приближение
Под сходимостью метода (3) понимается утверждение о том, что приближение Справедлива Теорема 1. Итерационный процесс (2) при условии Док-во: По индукции нетрудно показать, что
Разобьём полученный интеграл на 2 интеграла
При условии (4) величина
Покажем, что при тех же условиях процесс (3) можно сделать сходящимся, если нужным образом выбрать число итераций n в зависимости от уровня погрешности Теорема 2. При условии Доказательство: Будем считать
Тогда Теорема 3. Если точное решение ур-я (1) истокопредставимо, т.е. 58 .Метод обобщенного суммирования рядов для решения некорректных задач. При приближенном решении математических задач сущ. является вопрос корректно поставленной задачи. Задача наз. устойчивой - если бесконечно-малой вариации правой части уравнения, соответствует бесконечно-малые вариации левой части. Задача наз. корректной по Адамару, если при любой фиксированной правой части правой части y=y0, точное решение: существует в x, единственно, устойчиво. Задача наз. корректной по Тихонову на мн-ве X, если: точное реш. сущ в M, ед при любом у из N, устойчиво. Метод обобщенного суммирования рядов предназначен для решения некорректных задач. Рассмотрим его на примере уравнения: zi(t) – соотв. полная, ортонормированная система собственных функций уравнения: Возьмем вместо точного y(t) – приближенное yδ(t) такое, что Рассмотрим: Оценить Найдем, при каком n эта оценка – оптимальна (принимает мин. значение).
Получим оптимальную оценку: Если имеет место s-кратная истокопредставимость, то Доказательство. Так как
Следовательно, Отсюда
Замечание 1. Так как Замечание 2. Использование энергетической нормы позволило получить оценки погрешности метода и априорный момент останова Стиль программирования. Необходимость станд. стиля –трудночитаемые проги сложно модифицировать, особенно не автором. Часто мы не знаем чего хотим. Как правило к разработке проги приступают со скромной целью, потом она увеличивается. Стандартизация стиля – правило: если сущ более одного способа сделать что-то и выбор произволен, то остановиться на одном и способе и всегда его придерживаться. Делая одно и тоже всегда одинаково легче избежать путаницы, однако процессу стандартизации свойственны и недостатки т.к. применение стандартов может замедлить работу, стандарты могут оказаться огранич или громоздкими для написания. Станд стиля – результат здравого смысла и опыта программистов, а не закреплённое раз и на всегда правило. Комментарии – их редко вставляют в прогу, но потом авторы понимают что не помнят программу. Хорошее правило – включать комментарии в процессе написания проги, именно в это время программёр более всего шарит в проге. Виды: · Вводные – каждая прога должна включать: назначение, синтаксис вызова, список и назначение осн. переменных и массивов, указание по вводу выводу, список всех файлов, список использ подпрограмм, название методов, список литературы, объём памяти, специфические указания оператору, сведения об авторе · Оглавление– если прога очень большая, то в её начале помещают оглавление виде комментариев(название, размещение и функции каждой подпрограммы) · Пояснительные комментарии – сопровождают те части проги, к-рые трудно понять без комментариев. Норма – одна строка на 10 строк текста, комментарии должны описывать цель, а не объяснять синтаксис. Расположение комментариев – выделяются пустыми строками, заключ-ся в прямоугольники, располагайте комментарии так, чтобы это не делало её менее наглядной. Коментарии должны быть должны быть правильными и изменяться в процессе изменения проги. Неправ комментарии хуже чем их отсутств. Пропуски строк используются для отделения параграфов, рекоменд пропуск строки после опер безусл передачи управл. Пробелы облегчают чтение, рекоменд ставить пробелу между элементами списка, +,-,:=. Имена переменных должны быть выбраны так чтобы наилучш образом определить те величины, к-рые они представляют, если огранич на длину имени отсутств, используют имена настолько длинные настолько нужно, но не длиннее. Запреты: избегайте схожих по виду описаний, имена должны отлич психологич, цифры пишутся в конце имени, когда имя содерж избыт инф. это тоже плохо, в качестве индиф исп-ть те названия к-рые прим-ся в той области для к-рой решается задача. Для различных типов данных имена должны начинаться с соотв символов (dNorm, nIter). Имена файлов должны содержать «file». Стандартные сокращения позволяют программистам понимать тексты прог. Соглашения Джексона: каждое значимое слово должно сокращаться но не больше 3-х, в аббревиатуру всегда должна включаться 1-я буква, согласные важнее гласных, начало важнее конца, аббревиатура должна включать 6-15 букв. Алгоритм: из слова удаляются все гласные с правого конца, пока либо все гласные не будут удалены, кроме первой, либо слово не уменьшиться до требуемого размера, если слово больше то удаляются согласные. Перенос рекомендуется делать после знака операции. Это позволяет избежать ошибки, когда 2-я строка оператора может быть выброшена. Размещение операторов – одного оператора в строке достаточно. Списки параметров упорядычивают по алфавиту, часто размещают сначало входные, потом выходные, можно упорядычивать переменные по логическому смыслу. Рекомендуется списки описаний переменных распологать по столбцам. Скобки – в сомнительных случаях ставьте скобки, это не только делает прогу более понятной но и предотвращает ошибки, скобки обходятся дешевле ошибки. Правильно сделанные отступы выявляют структуру проги, прога должна быть приятна глазу. Ожидаемый эффект – небольшие усилия применяются для написания проги удобочитаемой обходятся дешевле чем издержки по пересмотру, обнаружению ошибки или переделки плохо написанной проги. Считается что хороший программист отличается способностью писать хорошо читаемые проги, оправдание плохого программиста: быстро написать, провалившийся проект. 9. Проектирование программ. Структурный подход. Этап проектирования прог оказывает влияние на стиль программирования, на надёжность будущей проги, её эффективность, этапы отладки и тестирования, эксплуатационные св-ва программ. Проектируйте до этапа кодирования. Простота при проектировании проги – первый шаг ведущий к получению легко читаемой проги, кодирование должно быть простым. Структура прог должна раскрывать её логику, сущ-на простота написания отдельных операторов. Простота операторов позволяет обнаружить ошибку и в процессе вычисления. Используйте постоянные приёмы кодирования. Программу снабжают комментариями, делят на параграфы, она становится ясной и точной. Одна из систем – один пишет, 2-й пытается понять написанное. Если 1-й не в состоянии дописать то 2-ой доделает. Ничего нет хуже чем неполное или неправильное требование к ПО. Если заказчики не могут определить свои запросы, или прогр не может понять что от него хотят, то будут проблемы. Добивайтесь точности в определении задачи. Выбор алгоритма: не начинайте программировать первый пришедший в голову алгоритм, просмотрите, по крайней мере, несколько вариантов и выберите лучший из них. При рассмотрении только одного алгоритма для решения задачи, вряд ли он будет наилучшим.. Выбирайте алгоритм задачи самым тщательным образом. Если предлагают выбрать язык, то подходящий для задачи язык высокого уровня – наилучший выбор. Универсальностью будем н-ть независимость программы от конкретного набора данных. Хорошая универсальная программа должна обрабатывать вырожденные случаи и печатать сообщение об ошибке. Используйте в качестве параметров переменные, а не константы. Должна быть независимость проги от конкретного набора данных. { For i:=1 to 25 do read(a[i]), лучше Const N = 25;… For i:=1 to N do read(a[i]) } Процедура изменения констант на новые значения отнимает много времени, может вызвать появление ошибок. Переменные вместо констант: размер таблиц, массивов, устройств ввода- вывода. В простой проге переменные можно поместить в начале. Если сложная то полезно выделить подпрограмму, которая задавала бы начальные значения всех параметров. Параметры могут быть полезны в процессе отладки. Создавайте универсальные программы, при этом можно предугадать возможные изменения её спецификации. Чтобы повысить эффективность прог, сохранить время на создание рекомендуется использовать библиотеки. Плагиат в программировании не преследуется. Встроенные функции лучше своих. Входные форматы должны быть разработаны с учетом макс. удобства для пользователя и минимальной возможности допущения ошибок. Данные следует компоновать в функциональные или логические группы, разделенные пустыми строками или страницами. Выходные данные должны нормально идентефиц. Важное обстоятельство – удобство работы с программой ее пользователя. Следует интересоваться, как продвигается работа у оператора и не возникает ли каких-либо проблем Более скромные по целям работающие программы полезнее неоконченных грандиозных проектов. Цели: высокий уровень надёжности, выполнение нек-рого объёма данных к определ дате, миним время разработки или стоимость, эффект., универсальность, модифицируемость. Если прога должна быть сделана быстро и потом не будет модифицироваться то не надо усложнять. Наиболее важные параметры время и память, но есть ещё и сложность. Чем сложнее программа, тем труднее ее контролировать, тестировать, отлаживать и эксплуатировать. Устанавливайте цели проекта заблаговременно и точно. Структурное программиров служит для организации процесса проектирования прог, те. чтобы предотвратить большинство ошибок и обнаруж те которые есть. СП сосредотачивается на логике проги и включ 3 составляющие: · Проектирование сверху- вниз: метод предусматривает вначале определение задачи в общих чертах, а затем постепенное уточнение стр-ры путем внесения более мелких деталей. Сначала напишите прогу на естеств. языке. Прежде чем начать программ., разработайте проект. Исключайте ошибки с самого начала. · Модульное программирование – процесс разбиения проги на модули и последующее их программирование. Каждая задача должна делиться на модули. Цели: необх добиться того, чтобы програмн модуль был правильным и не зависим от контекста, следует стремиться к тому чтобы из модулей можно было строить большие проги. Требования к модулям: короткие лучше длинных, независимость. Хороший модуль должен быть подобен математ функции. · Структурное кодирование – это метод написания хорошо структурированных программ, к-рый позволяет получать программы, более удобные для тестирования, модификации и восприятия. Состоит в получении правильной программы из нек-рых простых логических стр-р(последлвательность, ветвление, цикл). Особенности структур – один вход и выход. С их помощью можно строить алгоритмы люб степ сложности. Прога должна быть организована так, чтобы её можно было читать от начала до конца без использования переходов(goto). Преимущества: прога может быть проанализирована путем проверки структуры, когда проектировщик или программист знакомит с программой своих коллег; существенно улучшается читаемость программы; если в проге отсутствуют операторы goto, то она может быть прочитана с начала до конца последовательно. Эффективность программ. Основная задача программирования — создание правильных, а не эффективных программ. Эффективная программа бесполезна, если не обеспечивает правильных результатов. Эффективность является дополнительной характеристикой программы в отличие от правильности. Эффективная, но неправильная программа редко может быть сделана правильной, а правильную, хотя и неэффективную программу можно оптимизировать и сделать эффективной. Оптимизация является вторым этапом программирования. Первый этап — получение правильной программы. Обычно, большая часть времени расходуется на выполнение очень небольшой части программы (5% ее объема), называемой критической областью. Требования к эффективности следует определять на этапе проектирования. Отношение к эффективности Существуют три типа программ по требованиям к эффективность: 1) часто используемые программы; 2) производственные программы (используются длительное время); 3) единажды или редко используемые программы (например, для однократных вычислений или испытаний). Следует оптимизировать те программы, которые используются многократно. Оптимизирующие компиляторы Оптимизация программного кода — это модификация программ, выполняемая оптимизирующим компилятором или интерпретатором с целью улучшения их характеристик, таких как производительности или компактности, — без изменения функциональности. Оптимизация — не обязательный, но важный этап компиляции. Типы оптимизации компилятора: 1) низкоуровневая (машинно-зависивамая) — на уровне элементарных команд, например, инструкций процессора; 2) высокоуровневая (машинно-независимая) — на
|
||
|
Последнее изменение этой страницы: 2016-12-30; просмотров: 1301; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.156 (0.011 с.) |