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