书中Matlab源程序

更新时间:2023-11-17 06:24:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

书中Matlab源程序 第1 章 绪论

【例1-1】有一名学生,期末有5门功课要考试,可用的复习时间有18小时。假定这五门课程分别是数学、英语、计算机基础、画法几何和专业概论。如果不复习直接参加考试,这五门功课预期的考试成绩分别为65分、60分、70分、60分和65分。复习以1小时为一单元,每增加1小时复习时间,各门功课考试成绩就有可能提高,每复习1小时各门功课考试成绩提高的分数分别为3分、4分、5分、4分和6分。问如何安排各门功课的复习时间可使平均成绩不低于80分,并且数学和英语成绩分别不低于70分和75分。

解:设分配在数学、英语、计算机基础、画法几何和专业概论这五门功课的复习时间分别为x1,x2,x3,x4,x5,则可列出如下的目标函数和限制条件为:

f(x)?x1?x2?x3?x4?x5 x1?x2?x3?x4?x5?18

(3x1?4x2?5x3?4x4?6x5?320)/5?80

3x1?65?70

本例具体程序如下:

%li_1_1 f=[1 1 1 1 1];

A=[1 1 1 1 1; -3 -4 -5 -4 -6; -3 0 0 0 0; 0 -4 0 0 0; 3 0 0 0 0; 0 4 0 0 0; 0 0 5 0 0; 0 0 0 4 0; 0 0 0 0 6]; b=[18;-80;-5;-15;35;40;30;40;35]; lb=zeros(6,1)

[x,fval]=linprog(f,A,b,[],[],lb)

计算结果为:

x = 1.6667 3.7500 5.0000 0.0000 5.8333 fval =

16.2500

1

【例1-2】某工厂要生产两种规格的电冰箱,分别用Ⅰ和Ⅱ表示。生产电冰箱需要两种原材料A和B,另外需设备C。生产两种电冰箱所需原材料、设备台时、资源供给量及两种产品可获得的利润如表1-1所示。问工厂应分别生产Ⅰ、Ⅱ型电冰箱多台,才能使工厂获利最多?

表1.1 资源需求与限制

资源 设备 原料A 原料B 单位产品获利 产品Ⅰ用原料限制 Ⅰ 1 2 0 220元 Ⅱ 1 1 1 250元 资源限制 1200台时 1800千克 1000千克 求最大收益 ?800千克 解:设生产Ⅰ、Ⅱ两种产品的数量分别为x1,x2。则可获得的最大收益为

maxf(x)? 220 x1 ? 250 x2 ,x?R2

s.. tx1 ? x2 ? 1200 2 x1 ? x2 ? 1800 x1 ? 800x2 ? 1000 x1 , x2 ? 0 Matlab求解程序如下:

%li_1_2 clc; close all; f=-[220 250]; A=[1 1;2 1;1 0;0 1]; b=[1200;1800;800;1000]; xl=[0 0];

[x,fval]=linprog(f,A,b,[ ],[ ],xl) x1=[0:1800]; x2=[0:2000];

[xm1,xm2]=meshgrid(x1,x2); x21=1200-x1; x22=1800-2*x1; x23=(-fval-220*x1)/250;

2

plot(x1,x21,x1,x22,[0:1:1000],1000,800,[0:1:1500],x1,x23,'r') axis([0,1400,0,2000]) xlabel('x1'); ylabel('x2'); hold on

z=200*xm1+250*xm2; [C,h]=contour(xm1,xm2,z); text_handle = clabel(C,h);

set(text_handle,'BackgroundColor',[1 1 .6],'Edgecolor',[.7 .7 .7]); hold off

【例1-3】绘制下面函数的曲线。

y(x)?2sin(x)?ln(x)

解:应用plot()函数绘制该函数曲线的程序如下:

%li_1_3

f=inline('2*sin(x)+log(x)','x') x=linspace(0.1,2*pi,15); y=feval(f,x);

plot(x,y,'-rs','LineWidth',2,'MarkerEdgeColor','k','MarkerFaceColor','g', 'MarkerSize',10) xlabel('0.1\\leq \\Theta \\leq 2\\pi') ylabel('2sin(\\Theta)+ln(\\Theta)'); title('Plot of 2sin(\\Theta)+ln(\\Theta)')

text(pi/4,sin(-pi/4),'\\leftarrow 2sin(\\Theta)+ln(\\Theta)','HorizontalAlignment','left') legend('-') grid on

【例1-4】用图形表示如下优化模型,并求解。 minf(x)?4x1?x2?12

2s.t.x12?xx?2532(x1?5)?(x2?5)?16?022

解:该绘制目标函数曲面、约束函数曲线及求解程序如下:

(1)绘制目标函数曲面的程序

%li_1_4_1 function li_1_4_1() clc; clear all; close all; n=20;

3

x1=linspace(0,2,n); x2=linspace(0,6,n);

[xm1,xm2]=meshgrid(x1,x2); for i=1:n for j=1:n

xx=[xm1(i,j),xm2(i,j)]; zm(i,j)=fun_obj(xx); end end figure(1)

meshc(xm1,xm2,zm) xlabel('x1'); ylabel('x2'); zlabel('zm')

(2)绘制约束函数曲线及求解的程序

%li_1_4_2 function li_1_4_2() clc; clear all; close all; x0=[1,1];

[x,fval,exitflag,output]=fmincon(@fun_obj,x0,[ ],[ ],[ ],[ ],[ ],[ ],@fun_cons) n=20;

x1=linspace(0,6,n); x2=linspace(0,10,n); [xm1,xm2]=meshgrid(x1,x2); for i=1:n for j=1:n

xx=[xm1(i,j),xm2(i,j)]; zm(i,j)=fun_obj(xx); end end figure(1)

f1=inline('sqrt(25-x.^2)','x'); f2=inline('sqrt(16-(x-5).^2)+5','x'); y1=feval(f1,x1); y2=feval(f2,x1);

y3=sqrt((4*x1.^3)-12-fval+0.01)

4

plot(x1,y1,x1,y2); hold on

plot(x1(1:8),y3(1:8),'--r') hold on

[c,h]=contour(xm1,xm2,zm,20); clabel(c,h); xlabel('x1'); ylabel('x2');

function f=fun_obj(x) f=4*x(1)^3-x(2)^2-12; function [c,ceq]=fun_cons(x)

c=[x(1)^2+x(2)^2-10*x(1)-10*x(2)+34 -x(1) -x(2)];

ceq=[x(1)^2+x(2)^2-25];

5

本文来源:https://www.bwwdw.com/article/mafv.html

Top