Chào các bạn! Vì nhiều lý do từ nay Truyen2U chính thức đổi tên là Truyen247.Pro. Mong các bạn tiếp tục ủng hộ truy cập tên miền mới này nhé! Mãi yêu... ♥

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: Truyen247.Pro

Tags: