Метод Ньютона-Рафсона

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

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

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

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

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

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

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ

ФИЛИАЛ ФЕДЕРАЛЬНОГО ГОСУДАРСТВЕННОГО БЮДЖЕТНОГО ОБРАЗОВАТЕЛЬНОГО УЧРЕЖДЕНИЯ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ «МЭИ»» в г. Смоленске

Отчет по лабораторной работе

Тема: «Метод Ньютона-Рафсона»

по курсу: «Методы оптимизации»

Студент: Морозова А.В

Лишик А.Ю

Группа: АС-10

Смоленск, 2012

Цель работы

Изучение методов оптимизации функций нескольких переменных с помощью метода Ньютона - Рафсона.

Задание

Определить с помощью метода Ньютона - Рафсона точки минимума функций

и количество итераций, необходимых для достижения заданной точности .

Блок-схема вычислительного алгоритма метода Ньютона-Рафсона

Рис. 1 - Блок-схема вычислительного алгоритма

Блок-схема программы

Рис. 2 - блок-схема программы

Текст программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, Grids;

type оптимизация программа вычислительный

TForm1 = class(TForm)

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Button1: TButton;

Edit4: TEdit;

Edit5: TEdit;

RadioGroup1: TRadioGroup;

StringGrid1: TStringGrid;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Edit6: TEdit;

RadioGroup2: TRadioGroup;

Label7: TLabel;

Edit7: TEdit;

procedure Button1Click(Sender: TObject);

procedure RadioGroup2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

function f(x,y:real):real;

begin

if form1.RadioGroup1.ItemIndex=0 then

result:=2*x*x+5*(x+y)*(x+y)+10*(y-2)*(y-2)

else

result:=0.5*x*x+x*x*(x-y)*(x-y)+0.5*(y-2)*(y-2);

end;

function dfdx(x,y:real):real;

begin

if form1.RadioGroup1.ItemIndex=0 then

result:=14*x+10*y

else

result:=x*x*(2*x-2*y)+2*x*(x-y)*(x-y)+x;

end;

function dfdy(x,y:real):real;

begin

if form1.RadioGroup1.ItemIndex=0 then

result:=10*x+30*y-40

else

result:=y-x*x*(2*x-2*y)-2;

end;

function d2fdx2(x,y:real):real;

begin

if form1.RadioGroup1.ItemIndex=0 then

result:=14

else

result:=2*x*x+4*x*(2*x-2*y)+2*(x-y)*(x-y)+1;

end;

function d2fdy2(x,y:real):real;

begin

if form1.RadioGroup1.ItemIndex=0 then

result:=30

else

result:=2*x*x+1;

end;

function d2fdxdy(x,y:real):real;

begin

if form1.RadioGroup1.ItemIndex=0 then

result:=10

else

result:=-2*x*x-2*x*(2*x-2*y);

end;

function opredelitel(x,y:Real):Real;

begin

result:=d2fdx2(x,y)*d2fdy2(x,y)-d2fdxdy(x,y)*d2fdxdy(x,y);

end;

function zolotoeSechenie(a1,a2,b1,b2,e:Real):Real;

var a,b,x:real;

begin

a:=-100;

b:=100;

repeat

x:=(a+b)/2;

if f(a1+b1*(x-e/2),a2+b2*(x-e/2))> f(a1+b1*(x+e/2),a2+b2*(x+e/2)) then

a:=x else

b:=x;

until abs(b-a)<=e;

result:=(b+a)/2;

end;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var x,y,e,l,x1,norma:Real;

n,num:Integer;

flag:Boolean;

begin

x:=StrToFloat(Edit1.text);

y:=StrToFloat(Edit2.text);

if RadioGroup2.ItemIndex=0 then e:=StrToFloat(Edit3.text) else num:=StrToInt(Edit3.text);

n:=0;

stringgrid1.Cells[0,0]:='N';

stringgrid1.Cells[1,0]:='X';

stringgrid1.Cells[2,0]:='Y';

stringgrid1.Cells[3,0]:='L';

stringgrid1.Cells[4,0]:='Norma';

stringgrid1.Cells[5,0]:='F';

repeat

Inc(n);

StringGrid1.rowCount:=n+1;

l:=zolotoeSechenie(x,y,-(1/opredelitel(x,y)*(d2fdy2(x,y)*dfdx(x,y)-d2fdxdy(x,y)*dfdy(x,y))),-(1/opredelitel(x,y)*(-d2fdxdy(x,y)*dfdx(x,y)+d2fdx2(x,y)*dfdy(x,y))),0.000001);

x1:=x-l*(1/opredelitel(x,y)*(d2fdy2(x,y)*dfdx(x,y)-d2fdxdy(x,y)*dfdy(x,y)));

y:=y-l*(1/opredelitel(x,y)*(-d2fdxdy(x,y)*dfdx(x,y)+d2fdx2(x,y)*dfdy(x,y)));

x:=x1;

norma:=sqrt(dfdx(x,y)*dfdx(x,y)+dfdy(x,y)*dfdy(x,y));

stringgrid1.Cells[0,n]:=IntToStr(n);

stringgrid1.Cells[1,n]:=FloatToStr(Trunc(x*100000)/100000);

stringgrid1.Cells[2,n]:=FloatToStr(Trunc(y*100000)/100000);

stringgrid1.Cells[3,n]:=FloatToStr(Trunc(l*100000)/100000);

stringgrid1.Cells[4,n]:=FloatToStr(Trunc(norma*100000)/100000);

stringgrid1.Cells[5,n]:=FloatToStr(Trunc(f(x,y)*100000)/100000);

if RadioGroup2.ItemIndex=0 then flag:=norma<e else flag:=num<=n;

until flag;

Edit4.Text:=FloatToStr(Trunc(x*100000)/100000);

Edit5.text:=FloatToStr(Trunc(y*100000)/100000);

Edit6.text:=FloatToStr(Trunc(f(x,y)*100000)/100000);

if RadioGroup2.ItemIndex=0 then Edit7.text:=IntToStr(n) else Edit7.text:=floatToStr(Trunc(norma*100000)/100000);

end;

procedure TForm1.RadioGroup2Click(Sender: TObject);

begin

if RadioGroup2.ItemIndex=0 then begin

label3.Caption:='E';

Label7.Caption:='Число итераций';

end else begin

label3.Caption:='N';

label7.caption:='Погрешность';

end;

end;.

Тестирование

Тестирование функции на отрезке [-2,2].

1) При заданном количестве итераций (N=5) получаем:

Рис. 3 - Для функции 1 с заданным числом итераций

Тестирование функции на отрезке [-2,20].

2) При заданной погрешности (е=0,0005) получаем:

Рис. 4 - Для функции 1 с заданной точностью0.5*x*x+x*x*(x-y)*(x-y)+0.5*(y-2)*(y-2)

Тестирование функции на отрезке [-2,20].

3) При с заданным числом итераций (N=5) получаем:

Рис. 5 - Для функции 2 с заданным числом итераций

Тестирование функции на отрезке [-2,20].

4) с заданной точностью (E=0.0005) получаем:

Рис. 6 - Для функции 2 с заданной точностью

Вывод

В ходе лабораторной работы был исследован метод Ньютона - Рафсона для оптимизации функций нескольких переменных. Для этого метод был реализован на языке Delphi для заданных функций.

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

...

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

  • Отделение действительных корней нелинейного уравнения. Метод хорд и касательных (Ньютона), геометрическая интерпретация. Графическая схема алгоритма. Описание реализации базовой модели в MathCAD. График сравнения числа итераций в зависимости от точности.

    курсовая работа [2,0 M], добавлен 16.05.2013

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

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

  • Создание программы для поиска минимума функции двух вещественных переменных в заданной области с помощью генетического алгоритма. Генетические алгоритмы и операторы. Создание начальной популяции. Размножение. Мутация и селекция. Тестирование программы.

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

  • Нахождение XI–неизвестных. Определение количества ITER-итераций. Составление текста программы, ее тестирование. Условия применения итерационного метода. Выбор количества итераций, исследование их зависимости от точности (eps). Получение корней уравнений.

    контрольная работа [33,8 K], добавлен 27.02.2014

  • Изучение методов решения нелинейных уравнений таких как: метод Ньютона, модифицированный метод Ньютона, метод Хорд, метод простых Итераций. Реализация программы для персонального компьютера, которая находит решение нелинейного уравнения разными способами.

    практическая работа [321,9 K], добавлен 24.06.2012

  • Численные методы в задачах без ограничений. Схема методов спуска. Среда редактора Visual Basic. Использование объектов ActiveX в формах. Блок-схема алгоритма моделирования. Задачи оптимизирования детерменированных функций с единственной точкой экстремума.

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

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

    курсовая работа [249,8 K], добавлен 25.09.2013

  • Суть основных идей и методов, особенностей и областей применения программирования для численных методов и решения нелинейных уравнений. Методы итераций, дихотомии и хорд и их использование. Алгоритм метода Ньютона, создание программы и ее тестирование.

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

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

    курсовая работа [364,8 K], добавлен 25.01.2010

  • Метод установления границ начального отрезка локализации минимума. Метод золотого сечения. Оценивание точки минимума внутри найденного отрезка локализации. Программная реализация метода Свенна на языке C++. Текст программы нахождения точки минимума.

    контрольная работа [47,3 K], добавлен 27.01.2011

  • Способы отделения корней. Решение задачи методами Ньютона уточнения корней и простых итераций. Формула нахождения погрешностей. Геометрическая интерпретация методов. Составление блок-схем и текстов программ. Результаты их работы на тестовом примере.

    курсовая работа [3,1 M], добавлен 15.06.2013

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

    лабораторная работа [253,9 K], добавлен 19.12.2012

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

    контрольная работа [1,1 M], добавлен 07.07.2012

  • Анализ метода касательных (метода секущих Ньютона), аналитическое решение нелинейного уравнения. Описание алгоритма решения задачи, пользовательских идентификаторов, блок-схем, программного обеспечения. Тестирование программы на контрольном примере.

    курсовая работа [97,1 K], добавлен 10.01.2014

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

    курсовая работа [305,9 K], добавлен 03.07.2011

  • Разработка программы, применяемой для интерполяции таблично заданной функции методом Ньютона. Метод структурного программирования для облегчения написания и отладки программы, повышения ее наглядности, читаемости. Применение языка программирования Pascal.

    курсовая работа [371,8 K], добавлен 05.01.2010

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

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

  • Разработка программы на языке С++ по определению величин и направлений токов в ветвях электрической цепи с использованием метода Гаусса. Блок-схема алгоритма. Контрольный расчет с помощью электронных таблиц Excel, используя метод обратной матрицы.

    курсовая работа [30,3 K], добавлен 10.11.2010

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

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

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

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

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