Giáo trình Phương pháp tính - Chương 7: Giải phương trình vi phân8: Tối ưu hóa

CHƯƠNG 8: TỐI ƯU HOÁ  
§1. PHƯƠNG PHÁP TỈ LỆ VÀNG  
Trong chương 8 chúng ta đã xét bài toán tìm nghiệm của phương trình  
phi tuyến tức là tìm giá trị của x mà tại đó hàm triệt tiêu. Trong phần này  
chúng ta sẽ đặt vấn đề tìm giá trị của x mà tại đó hàm đạt giá trị cực trị(cực đại  
hay cực tiểu). Phương pháp tiết diện vàng là một phương pháp đơn giản và  
hiệu quả để tìm giá trị cực trị của hàm.  
Giả sử ta có hàm y = f(x) và cần tìm giá trị cực trị trong khoảng [a, b].  
Khi tìm nghiệm chỉ cần biết 2 giá trị của hàm là ta khẳng định được nghiệm có  
nằm trong khoảng đã cho hay không bằng cách xét dấu của hàm. Khi tìm giá  
trị cực trị ta phải biết thêm một giá trị nữa của hàm trong khoảng [a, b] thì  
mới khẳng định được hàm có đạt cực trị trong đoạn đã cho hay không. Sau đó  
ta chọn thêm một điểm thứ tư và xác định xem giá trị cực trị của hàm sẽ nằm  
trong đoạn nào.  
Theo hình vẽ,khi chọn điểm trung gian c ta có:  
l1 + l2 = l0  
(1)  
và để tiện tính toán ta chọn :  
l1 l2  
l0 l1  
(2)  
c
a
b
Thay thế (1) vào (2) ta có :  
l0  
l1  
l2  
l1  
l2  
(3)  
l1 l2 l1  
l
Gọi r 2 , ta nhận được phương trình :  
l1  
1
r
1r   
(4)  
(5)  
hay: r2 + r - 1 = 0  
Nghiệm của phương trình (5) là:  
114(1)  
5 1  
2
r   
0.61803...  
(6)  
2
Giá trị này đã được biết từ thời cổ đại và được gọi là “tỉ lệ vàng”. Như trên đã  
nói, phương pháp tỉ lệ vàng được bắt đầu bằng 2 giá trị đã cho của biến x là a  
và b. Sau đó ta chọn 2 điểm x1 và x bên trong khoảng [a, b] theo tỉ lệ  
174  
5 1  
2
vàng: d   
0.61803...  
y
a
y
x
1  
b
x
x
a
x2 x12  
d
b
x2  
d
x1 cũ  
b
x2 cũ  
a
Ta tính giá trị của hàm tại các điểm bên trong đoạn [a, b]. Kết quả có thể là  
một trong các khả năng sau:  
1. Nếu,như trường hợp hình a, f(x1) > f(x2) thì giá trị cực trị của hàm  
nằm trong [x2, b] và x2 trở thành a và ta tính tiếp.  
2. Nếu f(x1) < f(x2) thì thì giá trị cực trị của hàm nằm trong [a, x1] và x1  
trở thành b và ta tính tiếp.  
Cái lợi của phương pháp tỉ lệ vàng theo hình a là giá trị x1 cũ trở thành giá trị  
x2 mới nên giá trị f(x2) mới chính là giá trị f(x1) cũ nên ta không cần tính lại  
nó. Chương trình mô tả thuật toán trên như sau:  
Chương trình 8-1  
//tiet_dien_vang;  
#include <conio.h>  
#include <stdio.h>  
#include <math.h>  
float eps=1e-6;  
float f(float x)  
{
float a=2*sin(x)-x*x/10;  
175  
return(a);  
};  
float max(float xlow,float xhigh)  
{
float xl,xu,r,d,x1,x2,f1,f2,xopt,s;  
int lap;  
xl=xlow;  
xu=xhigh;  
lap=1;  
r=(sqrt(5.0)-1.0)/2.0;  
d=r*(xu-xl);  
x1=xl+d;  
x2=xu-d;  
f1=f(x1);  
f2=f(x2);  
if (f1>f2)  
xopt=x1;  
else  
xopt=x2;  
do  
{
d=r*d;  
if (f1>f2)  
{
xl=x2;  
x2=x1;  
x1=xl+d;  
f2=f1;  
f1=f(x1);  
}
else  
{
xu=x1;  
x1=x2;  
x2=xu-d;  
176  
f1=f2;  
f2=f(x2);  
}
lap=lap+1;  
if (f1>f2)  
xopt=x1;  
else  
xopt=x2;  
if (xopt!=0)  
s=(1.0-r)*fabs((xu-xl)/xopt)*100;  
}
while((s>eps)&&(lap<=20));  
float k=xopt;  
return(k);  
}
float min(float xlow,float xhigh)  
{
float xl,xu,r,d,x1,x2,f1,f2,fx,xopt,s;  
int lap;  
xl=xlow;  
xu=xhigh;  
lap=1;  
r=(sqrt(5.0)-1.0)/2,0;  
d=r*(xu-xl);  
x1=xl+d;  
x2=xu-d;  
f1=f(x1);  
f2=f(x2);  
if (f1<f2)  
xopt=x1;  
else  
xopt=x2;  
do  
{
d=r*d;  
177  
if (f1<f2)  
{
xl=x2;  
x2=x1;  
x1=xl+d;  
f2=f1;  
f1=f(x1);  
}
else  
{
xu=x1;  
x1=x2;  
x2=xu-d;  
f1=f2;  
f2=f(x2);  
}
lap=lap+1;  
if (f1<f2)  
xopt=x1;  
else  
xopt=x2;  
if (xopt!=0)  
s=(1.0-r)*fabs((xu-xl)/xopt)*100;  
}
while ((s>eps)&&(lap<=20));  
float r1=xopt;  
return(r1);  
}
void main()  
{
float x,y,xlow,xhigh,eps;  
clrscr();  
printf("TIM CUC TRI CUA HAM BANG PHUONG PHAP TIET DIEN  
VANG\n");  
printf("\n");  
178  
printf("Cho khoang can tim cuc tri\n");  
printf("Cho can duoi a = ");  
scanf("%f",&xlow);  
printf("Cho can tren b = ");  
scanf("%f",&xhigh);  
if (f(xlow)<f(xlow+0.1))  
{
x=max(xlow,xhigh);  
y=f(x);  
printf("x cuc dai = %10.5f\n",x);  
printf("y cuc dai = %10.5f\n",y);  
}
else  
{
x=min(xlow,xhigh);  
y=f(x);  
printf("x cuc tieu = %10.5f y cuc tieu = %10.5f",x,y);  
}
getch();  
}
Trong chương trình này ta cho a = 0 ; b =4 và tìm được giá trị cực đại y =  
1.7757 tại x = 1.4276  
§2. PHƯƠNG PHÁP NEWTON  
Khi tính nghiệm của phương trình f(x) = 0 ta dùng công thức lặp  
Newton-Raphson:  
f(xi )  
xi1 xi   
f (xi )  
Một cách tương tự,để tìm giá trị cực trị của hàm f(x) ta đặt g(x)=f(x).Như vậy  
ta cần tìm giá trị của x để g(x) = 0. Như vậy công thức lặp Newton-Raphson sẽ  
là:  
g(xi )  
f (xi )  
xi1 xi   
xi   
  
g (xi )  
f (xi )  
Các đạo hàm f(xi) và f(xi) được xác định theo các công thức:  
179  
f(xi h) f(xi h)  
f (xi )   
2h  
f(xi h) 2f(xi ) f(xi h)  
  
f (xi )   
h2  
Tại giá trị f(x) = 0 hàm đạt giá trị cực đại nếu f(x) < 0 và cực tiểu nếu f(x) > 0.  
Chương trình sau mô tả thuật toán trên.  
Chương trình 8-2  
//Phuong phap New_ton;  
#include <conio.h>  
#include <stdio.h>  
#include <math.h>  
#include <stdlib.h>  
float f(float x)  
{
float a=2*sin(x)-x*x/10;  
return(a);  
}
float f1(float x)  
{
float a=2*cos(x)-x/5.0;  
return(a);  
}
float f2(float x)  
{
float a=-2*sin(x)-1.0/5.0;  
return(a);  
}
void main()  
{
float a,eps,x[50],y1,t;  
180  
clrscr();  
printf("TINH CUC TRI BANG PHUONG PHAP NEWTON\n");  
printf("\n");  
printf("Cho diem bat dau tinh a = ");  
scanf("%f",&a);  
eps=1e-6;  
int i=1;  
x[i]=a;  
do  
{
x[i+1]=x[i]-f1(x[i])/f2(x[i]);  
t=fabs(x[i+1]-x[i]);  
x[i]=x[i+1];  
i++;  
if (i>1000)  
{
printf("Khong hoi tu sau 1000 lan lap");  
getch();  
exit(1);  
}
}
while (t>=eps);  
printf("\n");  
y1=f2(x[i]);  
if (y1>0)  
printf("x cuc tieu = %10.5f y cuc tieu = %10.5f",x[i],f(x[i]));  
else  
printf("x cuc dai = %10.5f y cuc dai = %10.5f",x[i],f(x[i]));  
getch();  
}
Ta có kết quả x = 1.42755, y= 1.77573  
§3. PHƯƠNG PHÁP PARABOL  
Nội dung của phương pháp parabol là ta thay đường cong y = f(x) bằng  
một đường cong parabol mà ta dễ dàng tìm được giá trị cực trị của nó. Như  
vậy trong khoảng [a, b] ta chọn thêm một điểm x bất kì và xấp xỉ hàm f(x)  
181  
bằng parabol qua 3 điểm a, x và b. Sau đó ta đạo hàm và cho nó bằng 0 để tìm  
ra điểm cực trị của parabol này. Giá trị đó được tính bằng công thức:  
f(a)(x2 b2 ) f(x)(b2 a2 ) f(b)(b2 x2 )  
x1   
2f(a)(x b) 2f(x)(b a) 2f(b)(a x)  
Sau đó tương tự phương pháp tỉ lệ vàng ta loại trừ vùng không chứa giá trị  
cực trị và tiếp tục quá trình trên cho đến khi đạt độ chính xác mong muốn.  
Chương trình được viết như sau:  
Chương trình 8-3  
//phuong phap parabol  
#include <conio.h>  
#include <stdio.h>  
#include <math.h>  
float f(float x)  
{
float f1=2*sin(x)-x*x/10;  
return(f1);  
}
void main()  
{
float a,b,x0,x1,x2,x3,f3;  
clrscr();  
printf("TIM CUC TRI BANG PHUONG PHAP PARABOL\n");  
printf("\n");  
printf("Cho doan can tim cuc tri [a,b]\n");  
printf("Cho diem dau a = ");  
scanf("%f",&a);  
printf("Cho diem cuoi b = ");  
scanf("%f",&b);  
x0=a;  
x2=b;  
182  
x1=(x0+x2)/4;  
do  
{
x3=(f(x0)*(x1*x1-x2*x2)+f(x1)*(x2*x2-x0*x0)+f(x2)*(x0*x0-x1*x1))  
/(2*f(x0)*(x1-x2)+2*f(x1)*(x2-x0)+2*f(x2)*(x0-x1));  
f3=f(x3);  
if (x3>x1)  
x0=x1;  
else  
x2=x1;  
x1=x3;  
}
while (fabs(x2-x0)>1e-5);  
printf("\n");  
f3=(f(x2+0.01)-2*f(x2)+f(x2-0.01))/(0.01*0.01);  
if (f3<0)  
printf("x cuc dai = %10.5f y cuc dai = %10.5f",x2,f(x2));  
else  
printf("x cuc tieu = %10.5f y cuc tieu = %10.5",x2,f(x2));  
getch();  
}
Chạy chương trình này với a = 0 và b = 4 ta có x cực đại là 1.42755 và y  
cực đại là 1.77573.  
§4. PHƯƠNG PHÁP ĐƠN HÌNH (SIMPLEX METHOD)  
Trong thực tế nhiều bài toán kinh tế, vận tải có thể được giải quyết nhờ  
phương pháp quy hoạch tuyến tính. Trước hết ta xét bài toán lập kế hoạch sản  
xuất sau:  
Một công ty muốn sản xuất 2 loại sản phẩm mới là A và B bằng các  
nguyên liệu 1, 2 và 3. Suất tiêu hao nguyên liệu để sản xuất các sản phẩm cho  
ở bảng sau:  
183  
Sản phẩm A Sản phẩm B  
Nguyên liệu 1  
Nguyên liệu 2  
Nguyên liệu 3  
2
1
0
1
2
1
Số liệu này cho thấy để sản xuất một đơn vị sản phẩm A cần dùng 2 đơn  
vị nguyên liệu 1, một đơn vị nguyên liệu 2 và để sản xuất một đơn vị sản  
phẩm B cần dùng 1 đơn vị nguyên liệu 1, hai đơn vị nguyên liệu 2, 1 đơn vị  
nguyên liệu 3. Trong kho của nhà máy hiện có dự trữ 8 đơn vị nguyên liệu 1,  
7 đơn vị nguyên liệu 2 và 3 đơn vị nguyên liệu 3. Tiền lãi một đơn vị sản phảm  
A là 4.000.000 đ, một đơn vị sản phẩm B là 5.000.000đ. Lập kế hoạch sản xuất  
sao cho công ty thu được tiền lãi lớn nhất.  
Bài toán này là bài toán tìm cực trị có điều kiện. Gọi x1 là lượng sản  
phẩm A và x2 là lượng sản phẩm B ta đi đến mô hình toán học:  
f(x) = 4x1 + 5x2 max  
với các ràng buộc :  
2x1 + x2 8  
x1 + 2x2 7  
x2 3  
(ràng buộc về nguyên liệu 1)  
(ràng buộc về nguyên liệu 2)  
(ràng buộc về nguyên liệu 3)  
x1 0,x2 0  
Một cách tổng quát ta có bài toán được phát biểu như sau: Cho hàm  
mục tiêu CTX max với điều kiện ràng buộc AX B và X 0. Thuật toán để  
giải bài toán gồm hai giai đoạn  
- tìm một phương án cực biên một đỉnh  
- kiểm tra điều kiện tối ưu đối với phương án tìm được ở giai đoạn 1.  
Nếu điều kiện tối ưu được thoả mãn thì phương án đó là tối ưu. Nếu  
không ta chuyển sang phương án mới.  
Chương trình giải bài toán được viết như sau:  
Chương trình 8-4  
//simplex;  
#include <conio.h>  
#include <stdio.h>  
184  
int m,n,n1,it,i,j,h1,h2,hi,m1,ps,pz,v,p;  
float bv[20];  
float a[20][20];  
float h,mi,x,z;  
void don_hinh()  
{
int t;  
float hi;  
if (p!=2)  
for (i=1;i<=m;i++)  
bv[i]=n+i;  
if (p==2)  
{
h1=n;  
h2=m;  
}
else  
{
h1=m;  
h2=n;  
}
for (i=1;i<=m1;i++)  
for (j=1;j<=h1;j++)  
{
a[i][h2+j]=0.0;  
if (i==j)  
a[i][h2+j]=1.0;  
}
it=0;  
t=1;  
while (t)  
{
it=it+1;  
if (it<(m*n*5))  
{
185  
mi=a[m1][1];  
ps=1;  
for (j=2;j<=n1-1;j++)  
if (a[m1][j]<mi)  
{
mi=a[m1][j];  
ps=j;  
}
if (mi>-0.00001)  
{
z=a[m1][n1];  
t=0;  
}
mi=1e+20;  
pz=0;  
for (i=1;i<=m1-1;i++)  
{
if (a[i][ps]<=0.0)  
continue;  
h=a[i][n1]/a[i][ps];  
if (h<mi)  
{
mi=h;  
pz=i;  
}
}
if (pz==0)  
{
if (p==2)  
{
printf("Khong ton tai nghiem\n");  
t=0;  
}
else  
{
printf("Nghiem khong bi gioi han\n");  
186  
t=0;  
}
}
if (p==1)  
bv[pz]=ps;  
hi=a[pz][ps];  
for (j=1;j<=n1;j++)  
a[pz][j]=a[pz][j]/hi;  
if (pz!=1)  
for (i=1;i<=pz-1;i++)  
{
hi=a[i][ps];  
for (j=1;j<=n1;j++)  
a[i][j]=a[i][j]-hi*a[pz][j];  
}
for (i=pz+1;i<=m1;i++)  
{
hi=a[i][ps];  
for (j=1;j<=n1;j++)  
a[i][j]=a[i][j]-hi*a[pz][j];  
}
}
else  
printf("Nghiem bat thuong");  
}
}
void main()  
{
clrscr();  
printf("PHUONG PHAP DON HINH\n");  
printf("\n");  
flushall();  
printf("Cho bai toan tim max(1) hay min(2)(1/2)? : ");  
scanf("%d",&p);  
printf("Cho so bien n = ");  
187  
scanf("%d",&n);  
printf("Cho so dieu kien bien m = ");  
scanf("%d",&m);  
n1=n+m+1;  
if (p==2)  
m1=n+1;  
else  
m1=m+1;  
printf("Cho ma tran cac dieu kien bien\n");  
for (i=1;i<=m;i++)  
for (j=1;j<=n;j++)  
if (p==2)  
{
printf("a[%d][%d] = ",i,j);  
scanf("%f",&a[j][i]);  
}
else  
{
printf("a[%d][%d] = ",i,j);  
scanf("%f",&a[i][j]);  
}
printf("\n");  
printf("Cho ma tran ve phai\n");  
for (i=1;i<=m;i++)  
if (p==2)  
{
printf("b[%d] = ",i);  
scanf("%f",&a[m1][i]);  
}
else  
{
printf("b[%d] = ",i);  
scanf("%f",&a[i][n1]);  
}
printf("\n");  
printf("Cho ham muc tieu\n");  
188  
for (j=1;j<=n;j++)  
if (p==2)  
{
printf("z[%d] = ",j);  
scanf("%f",&a[j][n1]);  
}
{
else  
printf("z[%d] = ",j);  
scanf("%f",&a[m1][j]);  
}
if (p==2)  
hi=m;  
else  
hi=n;  
for (j=1;j<=hi;j++)  
a[m1][j]=-a[m1][j];  
a[m1][n1]=0.0;  
don_hinh();  
printf("\n");  
printf("NGHIEM TOI UU HOA\n");  
if (p==2)  
printf("Bai toan cuc tieu tieu chuan\n");  
else  
printf("Bai toan cuc dai tieu chuan\n");  
printf("sau %d buoc tinh",it);  
printf("\n");  
for (j=1;j<=n;j++)  
{
if (p==2)  
x=a[m1][m+j];  
else  
{
v=0;  
for (i=1;i<=m;i++)  
if (bv[i]==j)  
189  
{
}
v=i;  
i=m;  
if (v==0)  
x=0.0;  
else  
x=a[v][n1];  
}
printf("x[%d] = %10.5f\n",j,x);  
}
printf("\n");  
printf("Gia tri toi uu cua ham muc tieu = %10.5f\n",z);  
getch();  
}
Dùng chương trình này giải bài toán có hàm mục tiêu :  
z = 80x1 + 56x2 + 48x3 min  
với ràng buộc :  
3x1 + 4x2 + 2x3 15  
2x1 + 3x2 + x3 9  
x1 + 2x2 + 6x3 18  
x2 + x3 5  
x1,x2,x3 0  
Ta cần nhập vào chương trình là tìm min,với số biến n =3,số điều kiện  
biên m = 4,các hệ số a[1,1] = 3 ; a[1,2] = 4 ; a[1,3] = 2 ; a[2,1] = 2; a[2,2] = 3 ;  
a[2,3] = 1 ; a[3,1] = 1 ; a[3,2] = 2 ; a[3,3] = 6 ; a[4,1] = 0 ; a[4,2] = 1 ; a[4,3] = 1 ; b[1]  
= 15 ; b[2] = 9 ; b[3] = 18; b[4] = 5 ; z[1] = 80 ; z[2] = 56 ; z[3] = 48 và nhận được  
kết quả :  
x[1] = 0 ; x[2] = 2.5 ; x[3] =2.5 và trị của hàm mục tiêu là 260  
§5. PHƯƠNG PHÁP THẾ VỊ  
Trong vận tải ta thường gặp bài toán vận tải phát biểu như sau: có n  
thùng hàng của một hãng xây dựng cần chuyển tới n địa điểm khác nhau. Giá  
vận tới tới mỗi địa điểm đã cho. Tìm phương án vận chuyển để giá thành là  
cực tiểu.  
Một cách tổng quát bài toán được phát biểu:  
190  
a p min  
i
i
Ví dụ: Cần vận chuyển 6 thùng hàng tới 6 địa điểm với giá thành cho ở bảng  
sau:  
Thùng  
1
2
3
4 5  
6 địa điểm  
1
60 35 28 53 29 26  
81 43 37 23 36 45  
42 42 33 47 43 51  
29 70 42 53 48 37  
81 69 40 66 69 60  
10 21 32 31 24 27  
2
3
4
5
6
Để giải bài toán ta dùng thuật toán Hungary như sau:  
- trừ mỗi dòng cho số min của dòng đó ta có:  
34 9 2 27 3  
58 20 14 0 13 22  
0
9
9
0 14 10 18  
0 41 13 24 19 8  
41 29 0 26 29 20  
0 11 22 21 14 17  
- trừ mỗi cột cho số min của cột đó  
34 0 2 27 0  
58 11 14 0 10 22  
0
9
0
0 14 7 12  
0 32 13 24 16 8  
41 20 0 26 26 20  
0
2 22 21 11 17  
Mục tiêu của thuật toán Hungary là biến đổi ma trận giá thành sao cho  
có thể đọc giá trị tối ưu từ ma trận. Điều này được thực hiện khi mỗi hàng và  
cột chứa ít nhất một số 0. Nếu ta vẽ một đoạn thẳng qua mỗi hàng và cột  
chứa số 0 thì khi đó số đoạn thẳng tối thiểu qua tất cả các số 0 phải là 6. Trong  
ma trận trên ta chỉ mới dùng 5 đoạn thẳng nghĩa là chưa có giá trị tối ưu. Để  
191  
biến đổi tiếp tục ta tìm trị min của các phần tử chưa nằm trên bất kì đoạn  
thẳng nào. Trị số đó là 7. Lấy các phần tử không nằm trên đoạn thẳng nào trừ  
đi 7 và công các phần tử nằm trên hai đoạn thẳng với 7 ta có ma trận:  
41 7 9 27 0  
65 18 21 0 10 22  
0
9
0
0
7
0
5
1
0 32 13 17 9  
41 20 0 19 19 13  
0
2 22 14 4 10  
Do số đoạn thẳng tối thiểu còn là 5 nên ta lặp lại bước trên và nhận được ma  
trận mới:  
42 7 10 28 0  
0
65 17 21 0 9 21  
10 0  
0 31 13 17 8  
41 19 0 19 18 12  
1
8
0
5
0
0
1 22 14 3  
9
Số đoạn thẳng cần để qua hết các số 0 là 6 nghĩa là ta đã tìm được trị tối ưu.Ta  
đánh dấu 6 số 0 sao cho mỗi hàng và mỗi cột chỉ có 1 số được đánh dấu. Chỉ  
số các số 0 được đánh dấu cho ta trị tối ưu:  
a15 = 0 nghĩa là thùng 1 được vận chuyển tới địa điểm 5  
a24 = 0 nghĩa là thùng 2 được vận chuyển tới địa điểm 4  
a32 = 0 nghĩa là thùng 3 được vận chuyển tới địa điểm 2  
a46 = 0 nghĩa là thùng 4 được vận chuyển tới địa điểm 6  
a53 = 0 nghĩa là thùng 5 được vận chuyển tới địa điểm 3  
a61 = 0 nghĩa là thùng 6 được vận chuyển tới địa điểm 1  
Chương trình viết theo thuật toán trên như sau :  
Chương trình 8-5  
// van_tru;  
#include <conio.h>  
#include <stdio.h>  
192  
void main()  
{
int a[20][20],z[20][20],p[20][2];  
float x[20][20],w[20][20];  
float c[20],r[20];  
int t,c1,i,j,k,k2,k3,k5,l,l1,m,n,r1,s;  
float m1,q;  
clrscr();  
printf("Cho so an so n = ");  
scanf("%d",&n);  
printf("Cho cac he so cua ma tran x\n");  
for (i=1;i<=n;i++)  
for (j=1;j<=n;j++)  
{
printf("x[%d][%d] = ",i,j);  
scanf("%f",&x[i][j]);  
w[i][j]=x[i][j];  
}
for (i=1;i<=n;i++)  
{
c[i]=0.0;  
r[i]=0.0;  
p[i][1]=0.0;  
p[i][2]=0.0;  
a[i][1]=0.0;  
a[i][2]=0.0;  
}
for (i=1;i<=2*n;i++)  
{
z[i][1]=0.0;  
z[i][2]=0.0;  
}
193  
Tải về để xem bản đầy đủ
doc 26 trang Thùy Anh 20860 Free
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Phương pháp tính - Chương 7: Giải phương trình vi phân8: Tối ưu hóa", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • docgiao_trinh_phuong_phap_tinh_chuong_7_giai_phuong_trinh_vi_ph.doc