Bài đăng nổi bật

Lời tựa

Thứ Tư, 13 tháng 12, 2017

Tìm cực trị và min-max hàm một biến bằng matlab (R2015b)

Chủ đề đầu tiên về matlab mình code.
Mong được các bạn giúp đỡ để code được hoàn thiện hơn.
Các bạn nào muốn tiếp tục xem code thì bấm vào bài viết.
File gốc đây nhé =>> Min_Max


syms x i y(x) f(x) Cuctri(i) g p q p1 q1 lg
f(x)=input('f(x)=') ;
a=input('Chan duoi a=');
b=input('Chan tren b=');
if a>=b
    disp('Vui long nhap b>a')
end
assume (a<x<b);
eqn=f(x);
lg = input('Neu la ham luong giac nhap 1 (Neu khong phai nhan enter):');
if lg==1
    N=input('So khoang chia nho tu a den b: ');
    n=input('So chu so lam tron sau dau phay: ');
chianho=linspace(a,b,N) ;
A=[];
for i = 1:length(chianho)-1
    A1=[];
    try
    A1=vpasolve(diff(eqn,x)==0,[chianho(1,i) chianho(1,i+1)]);
    end
    for i=1:length(A1)
        t= A1(i,1);
        format long g
        t=round(t*10^(n))/10^(n);
    A=[A t];
    end
end
if size(feval(symengine,'discont',eqn,x))~=[0,0];
    K=feval(symengine,'discont',eqn,x);
    [m2,n2]=size(K);
B=unique(A(imag(A)==0));
[m,n]=size(B);
y(x)=diff(f(x),x);

for i=1:m;
    g(i)=1;
   while y(B(i,1))==0;
        y(x)=diff(f(x),x,g(i));
        y(x)=y(B(i,1));
        g(i)=g(i)+1;
   end
    y(x)=diff(f(x),x);
end
C=[];
for i=1:m
    if mod(g(i),2)==1
        C =[C B(i,1)];
    end
end
[m1,n1]=size(C);
D=[a b C];
E=[f(a) f(b)];
for i=1:n1
    E=[E f(C(1,i))];
end
[M,I]=max(E);
[m,k]=min(E)  ;
    for i=1:n2
        p(i)=0;
        q(i)=0;
        if limit(f(x),x, K(1,i), 'left')==Inf;
            p(i)=1;
        end
        if limit(f(x),x, K(1,i), 'left')==-Inf;
             q(i)=1;
        end
        if and(p(i)==0,q(i)==0)
              E=[E limit(f(x),x, K(1,i), 'left')];
        end
    end
      for i=1:n2;
        p1(i)=0;
        q1(i)=0;
        if limit(f(x),x, K(1,i), 'right')==Inf;
            p1(i)=1;
        end
        if limit(f(x),x, K(1,i), 'right')==-Inf;
             q1(i)=1;
        end
        if and(p1(i)==0,q1(i)==0)
              E=[E limit(f(x),x, K(1,i), 'right')];
        end
      end
   
  if length(p1)~=0;
      for i=1:length(p1);
          if p1(1,i)==1;
              disp('Khi x tien dan ben phai gia tri')
              disp (K(1,i))
              disp('=> f(x) tien toi vo cung')
          end
      end
      for i=1:length(q1);
           if q1(1,i)==1;
              disp('Khi x tien dan den ben phai gia tri')
              disp (K(1,i))
              disp('=> f(x) tien toi am vo cung')
           end
      end
  end
  if length(p)~=0
      for i=1:length(p)
          if p(1,i)==1;
              disp('Khi x tien dan den ben trai gia tri')
              disp (K(1,i))
              disp('=> f(x) tien toi vo cung')
          end
      end
      for i=1:length(q);
           if q(1,i)==1
              disp('Khi x tien dan den ben trai gia tri')
              disp (K(1,i))
              disp('=> f(x) tien toi am vo cung')
           end
      end
  end
if size(C)== [0,0];
    disp('Ham khong co cuc tri')
else
    disp('Cac cuc tri cua ham so trong khoang tu a den b la: ')
for i=1:n1
    disp([vpa(C(1,i)) vpa(f(C(1,i))) ]);
end
end
if or(max(p)==1,max(p1)==1);
    disp('GTLN cua ham so la vo cung')
else
    disp('GTLN cua ham so la:')
    MAX=max(E);
end
if or(max(q)==1,max(q1)==1)
    disp('GTNN cua ham so la am vo cung')
else
    disp('GTNN cua ham so la:')
    MIN=min(E);
end
else
    B=unique(A(imag(A)==0));
[m,n]=size(B);
y(x)=diff(f(x),x);

for i=1:n
    g(i)=1;
   while y(B(1,i))==0
        y(x)=diff(f(x),x,g(i));
        y(x)=y(B(1,i));
        g(i)=g(i)+1;
   end
    y(x)=diff(f(x),x);
end
C=[];
for i=1:n
    if mod(g(i),2)==1
        C =[C B(1,i)];
    end
end
[m1,n1]=size(C);
D=[a b C];
E=[f(a) f(b)];
for i=1:n1
    E=[E f(C(1,i))];
end
[M,I]=max(E);
[m,k]=min(E);
if size(C)== [0,0]
    disp('Ham khong co cuc tri')
    disp('Gia tri lon nhat cua ham so la: ')
    MAX=vpa(M)
    disp('Dat duoc tai x= ')
    disp(vpa(D(1,I)))
    disp('Gia tri nho nhat cua ham so la: ')
    MIN=vpa(m)
    disp('Dat duoc tai x= ')
    disp(vpa(D(1,k)))
else
disp('Cac cuc tri cua ham so trong khoang tu a den b la: ')
for i=1:n1
    disp([vpa(C(1,i)) vpa(f(C(1,i))) ]);
end
disp('Gia tri lon nhat cua ham so la: ')
MAX=vpa(M)
disp('Dat duoc tai x= ')
disp(vpa(D(1,I)))
disp('Gia tri nho nhat cua ham so la: ')
MIN=vpa(m)
disp('Dat duoc tai x= ')
disp(vpa(D(1,k)))
end
end
else
if size(feval(symengine,'discont',eqn,x))~=[0,0]
    K=feval(symengine,'discont',eqn,x);
    [m2,n2]=size(K);
A=solve(diff(eqn,x) == 0);
B=unique(A(imag(A)==0));
[m,n]=size(B);
y(x)=diff(f(x),x);

for i=1:m
    g(i)=1;
   while y(B(i,1))==0
        y(x)=diff(f(x),x,g(i));
        y(x)=y(B(i,1));
        g(i)=g(i)+1;
   end
    y(x)=diff(f(x),x);
end
C=[];
for i=1:m
    if mod(g(i),2)==1
        C =[C B(i,1)];
    end
end
[m1,n1]=size(C);
D=[a b C];
E=[f(a) f(b)];
for i=1:n1
    E=[E f(C(1,i))];
end
[M,I]=max(E);
[m,k]=min(E)  ;
    for i=1:n2
        p(i)=0;
        q(i)=0;
        if limit(f(x),x, K(1,i), 'left')==Inf
            p(i)=1;
        end   
        if limit(f(x),x, K(1,i), 'left')==-Inf
             q(i)=1;
        end
        if and(p(i)==0,q(i)==0)
              E=[E limit(f(x),x, K(1,i), 'left')];
        end
    end
      for i=1:n2
        p1(i)=0;
        q1(i)=0;
        if limit(f(x),x, K(1,i), 'right')==Inf
            p1(i)=1;
        end
        if limit(f(x),x, K(1,i), 'right')==-Inf
             q1(i)=1;
        end
        if and(p1(i)==0,q1(i)==0)
              E=[E limit(f(x),x, K(1,i), 'right')]
        end
      end
   
  if length(p1)~=0
      for i=1:length(p1)
          if p1(1,i)==1
              disp('Khi x tien dan ben phai gia tri')
              disp (K(1,i))
              disp('=> f(x) tien toi vo cung')
          end
      end
      for i=1:length(q1)
           if q1(1,i)==1
              disp('Khi x tien dan den ben phai gia tri')
              disp (K(1,i))
              disp('=> f(x) tien toi am vo cung')
           end
      end
  end
  if length(p)~=0
      for i=1:length(p)
          if p(1,i)==1
              disp('Khi x tien dan den ben trai gia tri')
              disp (K(1,i))
              disp('=> f(x) tien toi vo cung')
          end
      end
      for i=1:length(q)
           if q(1,i)==1
              disp('Khi x tien dan den ben trai gia tri')
              disp (K(1,i))
              disp('=> f(x) tien toi am vo cung')
           end
      end
  end
if size(C)== [0,0]
    disp('Ham khong co cuc tri')
else
    disp('Cac cuc tri cua ham so trong khoang tu a den b la: ')
for i=1:n1
    disp([C(1,i) f(C(1,i)) ])
end
end
if or(max(p)==1,max(p1)==1)
    disp('GTLN cua ham so la vo cung')
else
    disp('GTLN cua ham so la:')
    MAX=max(E)
end
if or(max(q)==1,max(q1)==1)
    disp('GTNN cua ham so la am vo cung')
else
    disp('GTNN cua ham so la:')
    MIN=min(E)
end
else
if diff(eqn,x)==0
    disp('Ham hang nen khong co cuc tri')
else
    if diff(eqn,x,2)==0
        E=[f(a) f(b)]
        disp('f(x) la ham tuyen tinh nen khong co cuc tri')
        disp('Gia tri nho nhat cua ham so la')
        MIN=min(E)
        disp('Gia tri lon nhat cua ham so la')
        MAX=max(E)
    else
A=solve(diff(eqn,x) == 0);
B=unique(A(imag(A)==0));
[m,n]=size(B);
y(x)=diff(f(x),x);

for i=1:m
    g(i)=1;
   while y(B(i,1))==0
        y(x)=diff(f(x),x,g(i));
        y(x)=y(B(i,1));
        g(i)=g(i)+1;
   end
    y(x)=diff(f(x),x);
end
C=[];
for i=1:m
    if mod(g(i),2)==1
        C =[C B(i,1)];
    end
end
[m1,n1]=size(C);
D=[a b C];
E=[f(a) f(b)];
for i=1:n1
    E=[E f(C(1,i))];
end
[M,I]=max(E);
[m,k]=min(E);
if size(C)== [0,0]
    disp('Ham khong co cuc tri')
    disp('Gia tri lon nhat cua ham so la: ')
    MAX=M
    disp('Dat duoc tai x= ')
    disp(D(1,I))
    disp('Gia tri nho nhat cua ham so la: ')
    MIN=m
    disp('Dat duoc tai x= ')
    disp(D(1,k))
else
disp('Cac cuc tri cua ham so trong khoang tu a den b la: ')
for i=1:n1
    disp([C(1,i) f(C(1,i)) ])
end
disp('Gia tri lon nhat cua ham so la: ')
MAX=M
disp('Dat duoc tai x= ')
disp(D(1,I))
disp('Gia tri nho nhat cua ham so la: ')
MIN=m
disp('Dat duoc tai x= ')
disp(D(1,k))
end
end
end
end
end

Không có nhận xét nào: