Chương 7: Tối ưu hóa

1.    Giải pt f(x) =0 trong khoảng phân ly nghiệm[a,b] bằng pp dây cung - Arc

2.    Hàm Binary.m để giải pt f(x)=0 trong khoảng nghiệm phân ly [a,b]

3.    Newton: giai phuong trinh trong khoang nghiem phan ly

Hàm nội trú

Bài 2: tìm all các nghiệm thực của phương trình

Bài 4: Giải phương trình và tính giá trị nhỏ nhất

=========

A –      Hàm M - file

1.     Giải pt f(x) =0 trong khoảng phân ly nghiệm[a,b] bằng pp dây cung - Arc

X=Arc(FUN,a,b,Tol)

%Ham Arc.m dung de giai phuong trinh f(x) = 0 trong khoang phan ly [a,b]

%bang phuong phap day cung

function x = Arc(FUN,a,b,Tol)

    m=length(x);

    n=length(y);

    if(m~=n)

        disp('??? error using ==> newton');

        disp('length x,y must be equal');

        x = NaN;

    else

        if nargin == 3

            Tol = 1e-3;

        end

          x = (b+a)/2;

          while feval(FUN,x-Tol)*feval(FUN,x+Tol)>0

              if feval(FUN,x)*feval(FUN,a)>0

                  a= x;

              else

                  b = x;

              end

              x = (a*feval(FUN,b) - b*feval(FUN,a)/feval(FUN,b) -  feval(FUN,a));

          end

    end

2.      Hàm Binary.m để giải pt f(x)=0 trong khoảng nghiệm phân ly [a,b]

%Ham Binary.m de giai phuong trinh f(x) = 0 trong khoang phan ly [a,b]

%bang phuong phap chia doi

function x = Binary(FUN,a,b,Tol)

    m=length(x);

    n=length(y);

    if(m~=n)

        disp('??? error using newton');

        disp('length x,y must be equal');

        A=NaN;

    else

 if nargin == 3

    Tol = 1e-3;

 end

  x = (b+a)/2;

while abs(b-a)>Tol

  if feval(FUN,x)*feval(FUN,a)>0

        a = x;

  else

         b = x;

    end

         x = (a+b)/2;

     end

    end

3.     Newton: giai phuong trinh trong khoang nghiem phan ly 

function x=newton(fun,a,b,tol)

if nargin == 3

  tol = 1e-8;

end;

if (feval(fun,a+tol)+feval(fun,b-tol)) < feval(fun,a)+feval(fun,b)

  x = a;

else x = b;

end;

ss = realmax;

while ss>tol

  ss=feval(fun,x)*2*tol/(feval(fun,x+tol)-feval(fun,x-tol));

  x=x-ss;

  ss=abs(ss);

end;

B – Hàm nội trú

Bài 2: tìm all các nghiệm thực của phương trình

>> p=[1 -7 10 0 2 0 3 0-8];

>> x=roots(p);

>> [m n]=size(x);

>> for i=1:m

if imag(x(i,:))==0

y=x(i,:)

end

end

y =4.9720

y =  2.1404

y = 0.9566

Bài 4: Giải phương trình và tính giá trị nhỏ nhất

>> p=[2 21 -8 0 2 0 0 0 1 0 -15];

>> x=roots(p);

>> [m n]=size(x);

>> for i=1:m

if imag(x(i,:))==0

y=x(i,:);

end

end

>> q=polyder(p);

>> z=roots(q);

>> [l s]=size(z);

>> for i=1:l

if imag(z(i,:))==0

f=z(i,:);

end

end

>> D=[y' f'];

>> F=inline('2*D^10 + 21*D^9 -8*D^8 + 2*D^6 + D^2 -15','D');

>> [c d]=size(D);

>> for i=1:d

end

>> F=inline('2*D^10 + 21*D^9 -8*D^8 + 2*D^6 + D^2 -15','D');

>> [c d]=size(D);

>> E=[];

>> for i=1:d

E=[E F(D(c,i))];

end

>> [M,q]=max(E)

M =-1.8466e+009

q =   3

>> D(1,3)

ans =  -9.7767

Bạn đang đọc truyện trên: AzTruyen.Top

Tags: