Вычисление максимума функции с некоторыми критериями

Поиск значений интерполяционного многочлена в точках x1 и x2. Поиск максимума функции F(x) на отрезке [a;b]. Построение интерполяционного многочлена, нахождение максимума функции методом дихотомии. Создание и запуск программы в Matlab и Mathcab.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 31.12.2012
Размер файла 598,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Курсовая работа по теме:

«Вычисление максимума функции с некоторыми критериями»

Содержание

Введение

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

1.1 Поиск значений интерполяционного многочлена в точках x1 и x2

1.2 Поиск максимума функции F(x) на отрезке [a;b]

2. Детализированная схема алгоритма

2.1 Основная программа

2.2 Построение интерполяционного многочлена

2.3 Нахождение максимума функции методом дихотомии

2.4 Вычисление значения заданной функции

3. Создание и запуск программы

3.1 Создание и запуск программы в Matlab

3.2 Создание и запуск программы в Mathcab

4. Полученные результаты

5.Заключение

6. Литература

Введение

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

Говорят, что функция имеет в точке максимум, если эту точку можно окружить такой окрестностью (x0- ,x0+), содержащейся в промежутке, где задана функция, что для всех её точек выполняется неравенство:

f(x) < f(x0)

Иными словами, точка x0 доставляет функции f(x) максимум, если значение f(x0) оказывается наибольшим из значений, принимаемых функцией в некоторой (хотя бы малой) окрестности этой точки.

Пусть величина y является функцией аргумента x. Это означает, что любому значению x из области определения поставлено в соответствии значение y. Вместе с тем на практике часто неизвестна явная связь между y и x, т.е. невозможно записать эту связь в виде y=f(x). В некоторых случаях даже при известной зависимости y=f(x) она настолько громоздка (например, содержит трудно вычисляемые выражения, сложные интегралы и т.п.), что ее использование в практических расчетах затруднительно.

Наиболее распространенным и практически важным случаем, когда вид связи между параметрами x и y неизвестен, является задание этой связи в виде некоторой таблицы {xi yi}. Это означает, что дискретному множеству значений аргумента {xi} поставлено в соответствие множество значений функции {yi} (i=0,1…n). Эти значения - либо результаты расчетов, либо экспериментальные данные. На практике нам могут понадобиться значение величины y и в других точках, отличных от узлов xi. Однако получить эти значения можно лишь путем очень сложных расчетов или проведением дорогостоящих экспериментов.

Таким образом, с точки зрения экономии времени и средств мы приходим к необходимости использования имеющихся табличных данных для приближенного вычисления искомого параметра y при любом значении (из некоторой области) определяющего параметра x, поскольку точная связь y=f(x) неизвестна.

Этой цели и служит задача о приближение (аппроксимации) функций: данную функцию f(x) требуется приближенно заменить (аппроксимировать) некоторой функцией g(x) так, чтобы отклонение (в некотором смысле) g(x) от f(x) в заданной области было минимальным. Функция g(x) при этом называется аппроксимирующей.

Для практики весьма важен случай аппроксимации функции многочленом:

g(x)=a0+a1x+a2x2+…+amxm

При этом коэффициенты aj будут подбираться так, чтобы достичь наименьшего отклонения многочлена от данной функции.

Если приближение строится на заданном множестве точек {xi}, то аппроксимация называется точечной. К ней относятся интерполирование, среднеквадратичное приближение и др. При построении приближения на непрерывном множестве точек (например, на отрезке [a,b]) аппроксимация называется непрерывной или интегральной.

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

Вычислить максимум функции F(x)=-L(x1)x2+3.1L(x2)x+5 на отрезке [a;b] с точностью е.

L(x1), L(x2) - значения интерполяционного многочлена, построенного для таблично заданной функции f(x) в точках x1, x2.

Исходные данные:

a=0; b=2;

x1=0.02345;

x2=0.43210;

е=10-4;

x

0

0.1

0.2

0.3

0.4

0.5

0.6

f(x)

1.821948

1.833125

1.841914

1.848081

1.851401

1.851659

1.858652

Для решения поставленной задачи необходимо разработать программные модули, выполняющие следующие действия:

- главный модуль, получающий исходные данные (таблично заданную f(x), a, b, x1, x2, е), передающий их на обработку и выводящий конечные результаты (L(x1), L(x2) и найденный максимум функции F(x))

- модуль поиска значения интерполяционного многочлена L(x1), L(x2)

- модуль поиска максимума функции F(x) численным методом, использующий L(x1), L(x2) как коэффициенты при x2 и x.

Блок-схема

1.1 Поиск значений интерполяционного многочлена в точках x1 и x2

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

Требуется найти L(x1), L(x2) - значения интерполяционного многочлена, построенного для таблично заданной функции f(x) в точках x1,x2. Задача состоит в замене некоторой функции у = f(х) другой функцией g(х,а0,а1,...,an) таким образом, чтобы отклонение g(х,а0,а1,...,an) от f(x) удовлетворяло в некоторой области (на множестве X) определенному условию. Этим условием является g(xi,a0,a1,…an)=f(xi) при i=0,..,n, которое означает, что аппроксимируемая функция f(x) совпадает с g(xi,a0,a1,…an) в так называемых узлах интерполяции x0,x1,…,xn. Это частный случай аппроксимации, называемый интерполяцией.

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

Описание метода:

Задача интерполяции будем решать построением многочлена Лагранжа, который имеет вид:

Степень многочлена n обеспечивается n+1 интерполяционным узлом. Для задания таблицы значений функции будем использовать два массива x() и y(). Полином должен удовлетворять условию Ln(xi)=y(i).

1.2 Поиск максимума функции F(x) на отрезке [a;b]

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

Необходимо численным методом найти максимум функции

F(x)=-L(x1)x2+3.1L(x2)x+5

на отрезке [a;b] с точностью е, при том, что L(x1) и L(x2) - коэффициенты, полученные вычислением полинома Лагранжа в точках x1, x2. Это задача одномерной оптимизации.

Для решения задачи одномерной оптимизации выберем метод дихотомии, т.к. он прост в алгоритмизации, обеспечивает быструю сходимость. Его недостаток в виде необходимости многократного вычисления F(x) не играет особой роли, т.к. F(x) - обыкновенный полином и расчёт его значений не затратит много ресурсов ПК.

Описание метода:

Пусть f(x)- функция определенна на [a;b] и требуется найти максимум F(x) с абсолютной погрешностью е. Идея метода дихотомии состоит в проведении на каждой итерации двух отсчётов (вычислений значений функции), отстоящих от середины отрезка неопределённости [а;b] на величину dе[0;е] и сравнения значения исследуемой функции в двух точках и , определяемых формулами:

и

Если

, то ,

иначе

Вычисления проводятся до тех пор, пока b-а <е. Тогда с абсолютной погрешностью, не превосходящей е, полагают

На каждой итерации отрезок неопределённости [aN;bN] уменьшается примерно вдвое.

Процедура поиска максимума методом дихотомии использует большое количество отсчётов функции для локализации точки максимума на отрезке заданной длины.

Геометрическая иллюстрация метода дихотомии:

2.Детализированная схема алгоритма

2.1 Основная программа

2.2 Построение интерполяционного многочлена

2.3 Нахождение максимума функции методом дихотомии

2.4 Вычисление значения заданной функции

3. Создание и запуск программы

3.1 Создание и запуск программы в Matlab

1) Создаем и сохраняем файл Poiskmax.m

% Задание табличной Функции

X = [0.0, 0.1, 0.2 ,0.3 ,0.4 ,0.5, 0.6];

Y = [1.819548, 1.823125 ,1.831914, 1.838081, 1.847401, 1.851659, 1.855652];

% Задание отрезка для нахождения максимума функции

a = 0.0;

b = 2.0;

% Задание промежуточных точек для интерполирования %параметров функции

XL = [0.17345, 0.43210];

% Задание точности нахождения максимума функции F(X)

E = 0.0001;

% Программа

clc

subplot(1,2,1);plot(X,Y,'g-',X,Y,'k.');% построение графика по точкам

title('Интерполирование функции f(x)');grid on

m=length (XL);

nx=length (X);

ny=length (Y);

if (nx ~= ny),

error (' (x,y) do not have the same # values')

end

%

disp(sprintf('- Результаты интерполяции -'))

for k=1: m

F = LagrangeP(k,nx,X,Y,XL);

LX(k)=F;

pause% пауза в программе

disp(sprintf('XL%g=%g',k,XL(k)))

disp(sprintf('LX%g=%g',k,LX(k)))

hold on; % рисовать на том же графике

subplot(1,2,1);plot(XL(k),LX(k),'r.');

end

%%%

A=a;

B=b;

Xmax=Dixotomii(A,B,E,LX);

Fmax=Fun(LX,Xmax);

%

pause

x=[a:0.1:b];

y=Fun(LX,x);

subplot(1,2,2);plot(x,y,'k-');grid on;%координатная сетка

title('Максимум функции F(Xmax)');

pause

disp(sprintf('=== МАКСИМУМ ФУНКЦИИ ==='))

disp(sprintf('Xmax=%g',Xmax))

disp(sprintf('F(Xmax,LX1,LX2)=%g',Fmax))

hold on

subplot(1,2,2);plot(Xmax, Fmax, 'r*');

2) Создаем и сохраняем файл LagrangeP.m

% Метод интерполяции

function F=LagrangeP(k,nx,X,Y,XL)

sum=0;

for i=1: nx

lt (i) =1;

for j=1: nx

if (j ~= i),

lt (i)= lt(i)*(XL(k)-X(j))/(X(i)- X(j));

end

end

sum = sum + Y (i) * lt (i);

end

F =sum;

end

3) Создаем и сохраняем файл Dixotomii.m

% Нахождение точки максимума функции методом дихотомии

%%%

% [A,B]-заданный отрезок; Е-точность нахождения максимума;

% LX()-параметры F(X)

function X=Dixotomii(A,B,E,LX)

while B-A>2*E

X1=(A+B-E)/2;

X2=(A+B+E)/2;

G1= Fun(LX,X1);

G2= Fun(LX,X2);

if (G1<G2)

A=X1;

else

B=X2;

end

end

X=(A+B)/2;

end

4) Создаем и сохраняем файл Fun.m

% Вычисление значения функции F(X)

function Y = Fun(LX,X)

Y=-LX(1)*X.^2+3.1*LX(2)*X+5;

end

5) Запускаем Poiskmax

3.2 Создание и запуск программы в Mathcab

1) Создаем и сохраняем файл Poiskmax.mcd

2) Набираем в окне Mathcab Poiskmax и получаем результат:

4. Полученные результаты

5. Заключение

В данной курсовой работе была разработана программа, с помощью которой вычисляется максимум функции F(x) на отрезке [a,b]. В состав функции входят параметры, представляющие собой значение таблично заданной функции f(x) в точках x1 и x2, не совпадающих с узлами интерполяции. Был использован метод поиска интерполяционного многочлена Лагранжа в требуемых точках x1, x2. Поиск максимума функции F(x) осуществлялся с помощью метода дихотомии с требуемой точностью: он прост в алгоритмизации, обеспечивает быструю сходимость.

Полученные в ходе работы программы результаты, очень хорошо согласуются с результатами, полученными в MatLAB и в Mathcab, при соблюдении заданной точности .

6. Литература

интерполяционный многочлен максимум функция

1. А.П.Гловацкая, А.В.Загвоздкина, О.М.Кравченко, Т.И.Семёнова, В.Н.Шакин. Практикум Численные методы и оптимизация по дисциплине «Информатика»

2. Н.Н.Калиткин. Численные методы

3. А.П.Гловацкая. Конспект лекций «Информатика. Вычислительная математика»

4. В.М.Вержбицкий. Основы численных методов

5. Б. П.Демидович, И. А.Марон. Основы вычислительной математики

6. А. М.Половко, П. Н Бутусов. MATLAB для студента

7. С.В.Поршнев.MATLAB 7- Основы работы и программирования

8. MathCAD 6.0 Plus. Руководство пользователя. Пер. с англ.

9. Дьяконов В.П., Абраменкова И.В. MathCAD7.0 в математике, физике.

Размещено на Allbest.ru


Подобные документы

  • Постановка задачи и ее формализация. Поиск значений интерполяционного многочлена в точках x1 и x2. Поиск минимума функции F(x) на отрезке [a;b]. Проверка условий сходимости методов. Тестирование программных модулей. Детализированная схема алгоритма.

    курсовая работа [893,0 K], добавлен 04.02.2011

  • Возможности и синтаксис команд MATLAB, листинг программы и описание цикла. Порядок составления программы вычисления коэффициентов алгебраического интерполяционного многочлена и построения сплайн-функции, "склеенной" из кусков многочленов 3-го порядка.

    лабораторная работа [30,8 K], добавлен 04.07.2009

  • Решение задачи на тему максимизации функций многих переменных. Описание метода дихотомии, его применение для решения нелинейных уравнений. Решение данной задачи с использованием метода покоординатного спуска. Составление алгоритмов, листинг программы.

    курсовая работа [138,5 K], добавлен 01.10.2009

  • Определение минимума функции на заданном отрезке методами перебора, поразрядного поиска, дихотомии, золотого сечения и методом парабол. Нахождение и расчет нулей функции методом Ньютона. Построение графика данной функции, ее минимальное значение.

    реферат [55,6 K], добавлен 09.04.2013

  • Интерполирование функций методом Лагранжа. Получение функциональной зависимости по экспериментальным данным. Близость интерполяционного многочлена к заданной функции. Интерполяционный полином в форме Лагранжа. Построение интерполяционных графиков.

    лабораторная работа [315,8 K], добавлен 24.05.2014

  • Создание программы в среде программирования MatLab для решения задачи одномерной оптимизации (нахождение минимума и максимума заданных функций) методом золотого сечения, построение блок-схемы алгоритма и графическое изображение исследованных функций.

    реферат [112,0 K], добавлен 14.06.2010

  • Ввод и вывод значений целого, вещественного, логического и перечисляемого типов. Табулирование функции на отрезке с заданным количеством точек. Рекурсивная функция - вычисление суммы, произведения, количества, минимума, максимума и проверка условия.

    курсовая работа [75,6 K], добавлен 07.03.2010

  • Расчет и построение таблицы значений функции (протабулирование функции) при различных значениях аргумента. Нахождение наибольшего и наименьшего значений функции на отрезке и построение графика. Рабочий лист Excel в режимах отображения значений и формул.

    контрольная работа [30,0 K], добавлен 27.05.2010

  • Построение графика функции. Поиск корней уравнения методом половинного деления. Определение минимума функции методом перебора и значения аргумента. Вычисление определенного интеграла на заданном отрезке с использованием метода правых прямоугольников.

    контрольная работа [316,1 K], добавлен 13.11.2014

  • Понятие машинного и реального времени, дискретизация времени. Реализация временных задержек в программе. Вычисление значения многочлена методом Горнера. Разработка схем алгоритмов, основной программы и подпрограмм. Построение графика временной функции.

    курсовая работа [40,7 K], добавлен 18.04.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.