Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Решение нелинейных уравнений




2.1. Постановка задачи

2.2. Выбор диапазона поиска

2.3. Выделение корней

2.4. Метод половинного деления (метод дихотомии)

2.5. Метод хорд

2.6. Метод Ньютона

2.7. Метод секущих

3. Численное интегрирование

3.1. Постановка задачи

3.2. Метод прямоугольников

3.3. Метод трапеций

3.4.Метод Симпсона

3.5. Погрешность вычислений различных методов

3.6. Адаптивные программы

4. Решение системы линейных уравнений

4.1. Постановка задачи

4.2. Метод Гаусса с выбором главного элемента

5. ИНТЕРПОЛЯЦИЯ

5.1. Постановка задачи

5.2. Однопараметрическая интерполяция

5.3. Двухпараметрическая интерполяция

6. Численное дифференцирование

6.1. Постановка задачи

6.2. Формулы численного дифференцирования

7. Решение оптимизационных задач

7.1. Постановка задачи

7.2. Однофакторная оптимизация

7.2.1. Метод «золотого сечения»

7.3. Многофакторная оптимизация

7.3.1. Метод покоординатного спуска

7.3.2. Метод наискорейшего спуска

7.3.3. Метод поиска по градиенту

7.3.5. Метод Нелдера-Мида

7.3.6. Комплексный метод Бокса

8. Решение Обыкновенных дифференциальных

уравнений

8.1. Постановка задачи

8.2. Метод Эйлера

8.3. Модификации метода Эйлера

8.3.1. Усовершенствованный метод ломаных

8.3.2. Усовершенствованный метод Эйлера-Коши

8.3.3. Итерационная обработка по усовершенствованному

методу Эйлера-Коши

8.4. Метод Рунге-Кутта

 

Введение

При решении многих практических задач значительную помощь может оказать математическое моделирование. Реальная проблема представляется в виде некоторой упрощенной математической задачи, состоящей, как правило, из систем различных уравнений, и решаемой одним из возможных методов. Математическое моделирование применяется при проектировании промышленных установок для выбора наиболее экономичного варианта проекта, для анализа и прогнозирования развития процессов при эксплуатации оборудования, для оценки состояния оборудования при планировании объема, продолжительности и последовательности отдельных этапов ремонта технологических установок и т.д.

Реальные задачи допускают решения в явном виде только в редких случаях. Обычно получить аналитическое решение или чрезвычайно трудно, или вообще невозможно. В такой ситуации или упрощают задачу до вида, допускающего аналитическое решение, или ее решают численно. До появления ЭВМ первый путь был основным, результативность работы инженера и исследователя во многом определялась его искусством принимать такие упрощения, которые, во-первых, существенно не искажают реальные условия задачи и, во-вторых, позволяют найти аналитические решения.

В настоящее время ситуация принципиально изменилась. Наличие быстродействующих ЭВМ, языков программирования высокого уровня и эффективных алгоритмов вычисления позволяют отказаться от упрощения задач. Новые возможности вычислительной техники предъявляют и новые требования к специалистам. Инженеры должны не только знать теоретические разделы соответствующих дисциплин, но также уметь составить соответствующее математическое описание задачи и написать программу для ее решения на ЭВМ.

Математика оперирует с абстрактными объектами и поэтому ее методы применимы в любой практической области. Однако для каждой отрасли существует круг типовых вычислительных задач, определяемых особенностями основных процессов и уровнем использования математических методов для их описания. Для теплоэнергетики характерно широкое применение аппроксимирующих степенных зависимостей для расчета процессов теплообмена, балансовых соотношений в виде систем линейных уравнений для расчета тепловых схем энергетических установок, табличного представления термодинамических параметров воды, водяного пара и газов, многопараметрической оптимизации для выбора оптимальных вариантов технических проектов. В соответствии с этим в пособии рассмотрены алгоритмы решения нелинейных уравнений, численного интегрирования и дифференцирования, решения систем линейных уравнений методом Гаусса, интерполирования, однопараметрической и многопараметрической оптимизации.

Раздел «Вычислительные методы» в курсе «Информатика» изучается студентами теплоэнергетического факультета в первом и втором семестрах, поэтому в пособии не рассмотрены алгоритмы решения дифференциальных уравнений, систем нелинейных уравнений, уравнений с частными производными и операций с матрицами. Эти разделы математики входят в учебную программу второго курса, поэтому для их изучения необходимо обратиться к соответствующей литературе, список которой приведен в конце пособия.

1. Машинная арифметика и ошибки вычислений.

Достоверность полученной в результате моделирования информации зависит от точности математического описания реальной проблемы и от погрешностей, возникающих при решении математической задачи. Математическая модель создается на основании наших знаний о проблеме, при этом учитывается возможность нахождения неизвестных параметров модели доступными методами. Погрешности вычислений связаны с ошибками округлений дробных чисел и неустойчивой работой вычислительных алгоритмов, когда оказывается невозможным за конечное число шагов найти решение с приемлемой точностью.

Применение компьютеров существенным образом расширяет вычислительные возможности и позволяет обращаться к таким задачам, которые принципиально не могли быть поставлены при вычислениях с помощью ручки и бумаги. Однако, при этом появились дополнительные источники возникновения ошибок. В ручных вычислениях промежуточные результаты непосредственно доступны для обозрения, и процесс расчета можно корректировать в соответствии с получаемыми результатами. При этом ручные вычисления обычно не бывают длинными, тогда как машинный процесс вычислений может состоять из миллионов шагов. Ничтожно малые ошибки, которыми в коротком вычислении можно было бы пренебречь, накапливаясь в протяженном процессе, могут приводить к разрушительным последствиям. Кроме того, методы, вполне удовлетворительные для малых задач, могут быть безнадежно неэффективными для больших задач того же типа.

Иногда компьютерные программы не замечают существенных ошибок, выводят информацию об успешном завершении расчетов и показывают полученные результаты, которые могут существенно отличаться от истинных. Поэтому в процессе разработки компьютерных программ следует помнить об источниках возникновения возможных ошибок и предусматривать соответствующие меры для их обнаружения и предупреждения.

В машинных вычислениях участвуют числа двух типов: целые числа и вещественные числа (так называемые числа с «плавающей запятой»). В отличие от общепринятой арифметики с десятичной системой исчисления работа компьютеров основана на двоичной системе чисел, т.е. в виде последовательностей нулей и единиц, при этом всегда для представления любого числа в памяти компьютера выделяется строго ограниченное количество разрядов. В частности, языке программирования Турбо-Паскаль для целых чисел типа byte выделяется один байт машинной памяти, поэтому переменные данного типа могут принимать значения в диапазоне от 0 до 28-1=255. Для хранения целых чисел типа word и integer выделяются 2 байта памяти, поэтому для типа word, в котором могут быть представлены только неотрицательные числа, диапазон допустимых значений ограничен величинами от 0 до 216-1=65535. Числа типа integer могут быть положительными или отрицательными, их диапазон ограничен значениями от до . Если работать с целыми числами, далекими от границ числовой области компьютера, то машинная арифметика дает правильные результаты, например 5+7=12, 8-27=-19, 27´3=81 и т.д. Деление целых чисел снова приводит к целому числу, а в качестве результата операции принимается частное, а остаток отбрасывается. Это означает, что и т.д.

Если результат операции над целыми числами слишком велик или слишком мал для данного типа переменных, то при отсутствии контроля за превышением допустимого диапазона результат будет заменен по циклическому правилу. Например, если переменным a и b присвоить тип byte, переменной a присвоить значение a= 255, а переменной b – значение b=a+ 1, то компьютер выдаст результат: b= 0, при b=a+ 2 получим b= 1 и т.д. Если a и b отнести к переменным типа integer и присвоить a= 32767, то при b=a+ 1 получим b=- 32768, при b=a+ 2 ® b= -32767. Эти ошибки не будут замечены, и программа продолжит дальнейшую работу с неверными значениями переменных.

Если в программе предусматривается проверка переполнения допустимого диапазона переменных, то при выходе значения за пределы диапазона на экран выводится сообщение об ошибке, а работа программы приостанавливается.

Десятичные числа вещественного типа с «плавающей запятой» представляются в виде . Число a называется мантиссой, а b – показателем. Обычно число b целое, а у числа a слева от десятичной запятой находится только один знак. У обоих чисел a и b количество разрядов конечно, поэтому имеется лишь конечное множество чисел с плавающей запятой и, в частности, существуют наибольшие и наименьшие числа с плавающей запятой.

Если результат операции превышает наибольшее значение, то происходит переполнение выделенных ячеек памяти, и работа программы на этом прекращается. Если результатом операции является число, слишком близкое к нулю, то происходит исчезновение порядка. Компьютер заменяет результат нулем без какого-либо сообщения об этой операции. Во многих случаях подобная замена не приводит к появлению заметных погрешностей в окончательном результате, однако, иногда подобные округления при операциях умножения и последующего деления, сложения или вычитания малых по абсолютной величине чисел могут вызвать принципиальные ошибки результатов вычислений.

Наибольшее значение, при котором происходит обнуление результата, называется машинным нулем. Эта величина зависит от типа переменных, с которыми производятся операции, численного значения переменных и типа компьютера. Для оценки погрешности округления используется понятие машинного эпсилон eмаш, численно равного наименьшему числу, которое при сложении с вещественным числом 1 дает результат, больший чем 1. Величину eмаш можно определить с помощью следующей программы:

Program Nul;

var

x, eps: real{single, double, extended};

BEGIN

eps:=1;

repeat

eps:=eps/2;

x:=1+eps;

until x<=1;

writeln(‘eps=’,eps);

readln;

END.

В табл.1.1. приведены результаты тестирования компьютера Pentium с различными типами данных при операции сложения x=A+e0.

Таблица 1.1.

Результаты вычисления машинного нуля e0

  Тип переменных А
     
single 5,96´10-8 1,19´10-7 3,82´10-6
real 4,55´10-13 9,05´10-13 2,91´10-11
double 1,11´10-16 2,22´10-16 7,11´10-15
Extended 5,42´10-20 1,08´10-19 3,47´10-18

 

Наличие машинного эпсилон проявляется следующим образом. Например, запись вещественного числа 0,3 в память компьютера сопряжена с ошибкой, поскольку величина 0,3 не имеет точного двоичного представления в системе вещественных чисел с плавающей запятой. Поэтому сумма десяти шагов длиной 0,3 не будет точно равна одному шагу длиной 3,0. Подобные малые ошибки при длительных расчетах могут накапливаться и приводить к более заметным суммарным ошибкам.

Погрешность представления вещественного числа в программе локализуется в последнем бите памяти. Более серьезные последствия может вызвать неудачное использование вычислительных алгоритмов.

Рассмотрим пример вычисления значений функции . Эта функция может быть представлена как сумма бесконечного ряда

. (1.1)

В практических расчетах всегда ограничиваются только несколькими членами ряда, отбрасывая величины, не влияющие на окончательный результат. В табл.1.2 и 1.3 приведены точные значения функции и результаты вычисления с помощью ряда различной длины для некоторых значений параметров.

Таблица 1.2

Точные и рассчитанные с помощью ряда значения функции y=ex при представлении вещественных чисел типом real.

    X   Точное Значение y=ex Длина ряда
для всех х при x ³0; при x <0.
       
-30 9,358´10-14 8,782´108 -2,588´10-1 -2,588´10-1 9,360´10-14
-20 2,061´10-9 1,047´100 3,505´10-5 3,505´10-5 2,061´10-9
-10 4,540´10-5 4,540´10-5 4,540´10-5 4,540´10-5 4,540´10-5
           
  2,203´104 2,203´104 2,203´104 2,203´104 2,203´104
  4,852´108 4,852´108 4,852´108 4,852´108 4,852´108
  1,069´1013 1,068´1013 1,069´1013 1,069´1013 1,068´1013

 

В диапазоне значений [-10,+30] при 50 членах ряда рассчитанные по (1.1) значения практически полностью совпадают с точными, определенными по более сложному алгоритму. Однако при x =-20 ошибка расчета составляет 9 порядков, а при x =-30 - 22 порядка. Увеличение длины ряда до 100 членов снижает расхождения между точными и расчетными значениями, но не приводит к точному результату. Дальнейшее увеличение длины ряда до 500 членов не оказывает заметного влияния на результаты расчета.

Представление вещественных чисел типом extended с 19-20 значащими цифрами позволяет при 100 членах ряда получить практически точное значение для x =-20, однако при x =-30 ошибка вычисления составляет 6 порядков. Эта погрешность сохраняется при дальнейшем увеличении длины ряда.

 

 

Таблица 1.3

Точные и рассчитанные с помощью ряда значения функции y=ex при представлении вещественных чисел типом extended.

    X   Точное Значение y=ex Длина ряда
для всех х при x ³0; при x <0.
       
-30 9,358´10-14 8,782´108 -5,736´10-8 -5,736´10-8 9,360´10-14
-20 2,061´10-9 1,047´100 2,060´10-9 2,060´10-9 2,061´10-9
-10 4,540´10-5 4,540´10-5 4,540´10-5 4,540´10-5 4,540´10-5
           
  2,203´104 2,203´104 2,203´104 2,203´104 2,203´104
  4,852´108 4,852´108 4,852´108 4,852´108 4,852´108
  1,069´1013 1,068´1013 1,069´1013 1,069´1013 1,068´1013

 

Результаты расчета показывают, что вычисление функции с помощью ряда хорошо приближается к точным значениям при положительных значениях аргумента, но дает неустранимые и существенные погрешности при отрицательных значениях. Увеличить точность вычислительного алгоритма можно достаточно просто, используя для отрицательных аргументов формулу

. (1.2)

Вычисленные по этому ряду значения приведены в правых столбцах табл. 1.2 и 1.3.

Следует обратить внимание еще на класс так называемых плохо обусловленных задач, для которых малое изменение входящих в уравнения коэффициентов приводит к значительному изменению результата. Примером таких задач является решение систем линейных уравнений, когда входящие в систему уравнения соответствуют почти параллельным прямым. Небольшое изменение в пределах погрешности округления численных значений угловых коэффициентов может значительно переместить точку пересечения прямых. К таким же последствиям приводит решение квадратного уравнения при или нахождение корней многочлена высокой степени. Для этого класса задач необходимо предусматривать дополнительные меры, позволяющие довести ошибки округления до безопасного уровня.

Из приведенных выше примеров следует, что разработку компьютерных вычислительных программ нельзя рассматривать как чисто формальную процедуру. Каждая программа должна учитывать конкретные особенности реальной задачи, содержать блоки, контролирующие вычислительный процесс (вывод промежуточных результатов расчета, контроль за переполнением допустимых диапазонов чисел, оценка погрешностей приближенных вычислений и т.д.), и пройти проверку на тестовой задаче перед решением основной.






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных