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

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

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

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

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

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

Создание и запуск программы в 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

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

  • 1) Создаем и сохраняем файл Poiskmax.mcd
  • 2) Набираем в окне Mathcab Poiskmax и получаем результат:
 
< Пред   СОДЕРЖАНИЕ   Загрузить   След >