matlab1程序

发布 2022-09-20 20:53:28 阅读 2749

一、最大最小值问题:例1编程:

functionf=myfun(x)

f=[2*x(1)^2+x(2)^2-48*x(1)-40*x(2)+304;-x(2)^2-3*x(2)^2;x(1)+3*x(2)-18;-x(1)-x(2);

x(1)+x(2)-8];

> x0=[0.1;0.1];

> [x,fval,maxfval,exitflag,output,lambda]=fminimax(@myfun,x0)

例2编程:到最远销售点的距离尽可能小?

functionf=funmail(x)a=[1 4 3 5 9 12 6 20 17 8];b=[2 10 8 18 1 4 5 10 8 9];i=1:10;

f(i)=abs(x(1)-a(i))+abs(x(2)-b(i));

> x0=[6;6];>lb=[5;5];>ub=[8,8];

> [x,fval,maxfval,exitflag,output,lambda]=fminimax(@funmail,x0lb,ub)

二、多目标规划问题:

例1编程(多目标规划化成多个优化问题):

步骤1:>>c=[2;-3];>a=[3 2;1 1];>b=[12;8];>lb=[0;0];

> [x,fval]=linprog(c,a,b,lb,最优值-18.步骤2:>>c=[-5;-3];>a=[3 2;1 1];>b=[12;8];>lb=[0;0];

> [x,fval]=linprog(c,a,b,lb,最优值-20.步骤3:

functionf=objfun(x)

f=sqrt((2*x(1)-3*x(2)+18)^2+(5*x(1)+3*x(2)+20)^2);

> a=[3 2;1 1];

> b=[12;8];>lb=[0;0];>x0=[0;0];

> [x,fval,exitflag]=fmincon(@objfun,x0,a,b,lb,

例2编程(多目标规划化成最大最小值问题)

三、多维有约束条件最优化问题:

例1编程([x,fval]=fmincon(fun,x0,a,bnonlcon,options)nonlcon非线性%目标函数。

fonctionf=objfun(x)

f=exp(x(1)*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1));

非线性约束条件。

function[c,ceq] =confun(x)

c = 1.5+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10];ceq=

> x0=[-1,1];

> options=optimset('algorithm','active-set');

> [x,fval]=fmincon(@objfun,x0confun,options)%

> [x,fval]=fmincon(@objfun,x0confun)%

> x0=[-1,1];>lb=[0,0];>ub=

> options=optimset('algorithm','active-set');

> [x,fval]=fmincon(@objfun,x0lb,ub,@confun)

四、求一元函数零点或根的问题%目标函数。

functionf=funexp(x)f=exp(x)+10*x-2;

> [x,fval,exitflag]=fzero(@funexp,3)

五、非线性方程组的优化解的问题。例1(无参数)

function f=fun21(x)

f=[2*x(1)-x(2)-exp(-x(1));3*x(1)+6*x(2)-exp(-x(2))]

>x0=[-5;4];

> options=optimset('display','iter');

> [x,fval,exitflag,output,jacb]=fsolve(@fun21,x0,options)例2(有参数)

function f=funzb(x)

f=[2*x(1)-x(2)-exp(-a*x(1));3*x(1)+6*x(2)-exp(-a*x(2))]

> a=-1;

>x0=[-5;4];

> options=optimset('display','iter');

x,fval,exitflag,output,jacb]=fsolve(@funzb,x0,options);

一阶导数的微分方程组的数值解function xdot=shier(t,x)

r=1;d=0.5;a=0.1;b=0.02;xdot=[(r-a*x(2)).x(1);(d+b*x(1)).x(2)];

> ts=0:0.1:15;>>x0=[25,2];

> [t,x]=ode45('shier',ts,x0);[t,x],>plot(t,x),grid,gtext('x(t)')gtext('y(t)')pause,> plot(x(:,1),x(:,2)),grid,另一种画图方法:

>>subplot(211);

plot(t,x),grid,gtext('x(t)')gtext('y(t)')subplot(212);

plot(x(:,1),x(:,2)),grid,二次函数交叉项编程。

x1=[0.6 0 0.25 0.

20 0.15 0.05 -0.

15 0.15 0.20 0.

10 0.40 0.45 0.

35 ];x2=[7.25 5.5 7 6.

5 6.75 5.25 5.

25 6 6.5 6.25 7 6.

9 6.8];>x=[x1', x2'];

> y=[9.25 7.5 9.

33 8.28 8.75 7.

87 7.1 8 7.89 8.

15 9.1 8.86 8.

9];>rstool(x,y,'interaction')在图上直接**;在方格中选项,‘linear’‘interaction’‘quadratic’‘pure quadractic’,确定后,在工作窗口差模型残数,残差。

另一种非线性最小二乘法以模型为例:y=(bx)/(a+x)

function y=huaxue(beta,x)y=(beta(1)*x)./beta(2)+x);

> [beta,r,j]=nlinfit(x,y,'huaxue',beta0);

> x=[0.02 0.02 0.

06 0.06 0.11 0.

11 0.22 0.22 0.

56 0.56 1.1 1.

1];>y=[76 47 97 107 123 139 159 152 191 201 207 200];>beta0=[195.802 0.0484];

> [beta,r,j]=nlinfit(x,y,'huaxue',beta0);>betaci=nlparci(beta,r,j)

betaci =

> beta

beta =

> yy=beta(1)*x./(beta(2)+x);>plot(x,y,'^x,yy,'+pause>> nlintool(x,y,'huaxue',beta)

在方格中选项,确定后,在工作窗口查模型残数,残差。

logistic方程的曲线拟合。

> age=[24.5 32 37 42 47 52 57 64.5]';chd=[1 2 3 5 6 5 13 8]';

> total=[10 15 12 15 13 8 17 10]';proport=chd./total;

> [b dev,stats]=glmfit(age,[chd total],'binomial','logit');logitfit=glmval(b,age,'logit');

> plot(age,proport,'*age,logitfit,'r -'xlabel('age');ylabel('proportion of chd')>b,bi= =

5.03820.1050bi =

dev =

> [b2,dev2]=glmfit([age age.^2],[chd total],'binomial','logit');b2,pval=1-chi2cdf(dev-dev2,1)b2 =

pval =

> x2=chi2cdf(dev-dev2,1)x2 =

Matlab1习题

第一章matlab 入门1 习题11.执行下列指令,观察其运算结果,理解其意义 1 12 34 10 2i 5 exp 12 34 6 log 110100 7 prod 12 34 8 a,b min 1020 3040 9 abs 12 34 pi 11 find 1020 3040 40,30...

MATLAB程序作业

1.画出对数和指数函数曲线,并分别加上标题 轴标记和曲线说明 这里可采用多种方法来标注曲线 解 x 0.01 0.1 10 y1 log10 x y2 exp x figure 1 subplot 2,1,1 plot x,y1,k grid on legend ity1 log x title y...

Matlab 3 MATLAB程序设计

辽宁工程技术大学上机实验报告。1,已知函数计算。function y f x if x 1 x 0 y x 1elseif x 0 x 1 y 1else x 1 x 2 y x 2end f 1 y ans f 0.5 y ans f 1.5 ans y ans 2 用for end循环语句求 1...