MatLab – Cvičení 5

Zadání

  1. Vykreslete funkci
    f(x)=\frac{sin(x)}{x}+e^{-(x-4)^{2}}
    na intervalu [-10,10] a najděte její minima na intervalech [2,4] a[4,6] pomocí funkce fminbnd
  2. Najděte globální minimum funkce
    f(x) = \frac{1}{4}x^{4}-\frac{41}{6}x^{3}+\frac{209}{4}x^{2}-135x
    Interval optimalizace pro funkci fminbnd určete z grafu funkce
  3. Vykreslete graf funkce
    f(x) = 100(x_{2}-x_{1}^{2})^{2}+(1-x_{1})^{2}
    Na intervalu -2\leq x_{1}\leq 2, -2\leq x_{2}\leq 2.Najděte její minimum pomocí funkce fminsearch
  4. Vyřešte úlohu lineárního programování pomocí funkce linprog
    _{x}^{min}f(x)=100(-5x_{1}-2x_{2}-6x_{3})
    za podmínek
    x_{1}-x_{2}+x_{3}\leq 20
    3x_{1}+2x_{2}+4x_{3}\leq 42
    3x_{1}+2x_{2}\leq 30
    x_{1}\geq 0
    x_{2}\geq 0
    x_{3}\geq 0

Řešení

Hlavní program

clear *
close all
clc
%-------------1-------------
%Nachází se v souboru cv5fc1.m
x = cv5fc1(-10:0.1:10); %Funkce na intervalu [-10;10]
plot(-5:0.05:5,x, 'r'); %Vykreslí funkci
opt = optimset('fminbnd');
fminbnd(@cv5fc1, 2,4,opt) %Najde její minima na intervalu [2;4]
fminbnd(@cv5fc1, 4,6,opt) %Najde její minima na intervalu [4;6]
%-------------2-------------
%Nachází se v souboru cv5fc2.m
y = cv5fc2(-100:0.1:100);
figure
plot(-100:0.1:100, y);
fminbnd(@cv5fc1, -20,20,opt)
%-------------3-------------
%Nachází se v souboru cv5fc3.m
z = cv5fc3(-2:0.1:2,-2:0.1:2); %Funkce na intervalu -2<=x1<=2, -2<=x2<=2
figure
plot(-2:0.1:2,z, 'r') %Vykreslí funkci
cv5fc3 = @(x)100*(x(2)-x(1)^2)^2+(1-x(1))^2;
[x,fval,exitflag] = fminsearch(cv5fc3,[-2, 2])
%-------------4-------------
f = [-5; -2; -6];
A =  [1 -1  1
      3  2  4
      3  2  0];
b = [20; 42; 30];
lb = zeros(3,1);
[x2,fval2,exitflag2,output,lambda] = linprog(f,A,b,[],[],lb);
x2,lambda.ineqlin,lambda.lower

Funkce

Funkce cv5fc1

function [z] = cv5fc1( x )
z = (sin(x)/x)+exp(-(x-4).^2);
end

Funkce cv5fc2

function [z] = cv5fc2( x )
z = ((1/4).*x.^4)-((41/6).*x.^3)+((209/4).*x.^2)-135.*x;
end

Funkce cv5fc3

function [z] = cv5fc3( x2, x1)
z = 100.*(x2-x1.^2).^2+(1-x1).^2;
end

You may also like...

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *