码迷,mamicode.com
首页 > 其他好文 > 详细

Matlab基础学习------------------函数的极值、积分问题Matlab实现

时间:2014-10-09 16:33:28      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:matlab   函数积分   函数极值   matlab实现   

<span style="font-size:18px;">% 函数的积分问题Matlab实现
%% 函数极值点
% 1、一元函数的极小值点
% 实例:求f(x)=x^3-x^2-x+1在区间[-2,2]的极小值点
f=@(x)x.^3-x.^2-x+1
x=fminbnd(f,-2,2)   %使用fminbnd()函数求解一元函数的极小值点,参数分别为f(x)和区间短点
y=f(x)  %极小值点对应的函数值
%结果
% f = 
%     @(x)x.^3-x.^2-x+1
% x =
%     1.0000
% y =
%    3.5776e-10


% 2、求解一元函数的极大值:可以求解-f(x)或者1/f(x)的极小值
% 实例:求x^4-6x^2+8x+17在区间[1,3]上的极大值
f=@(x)-x.^4-6.^2+8*x+17  %求-f(x)的极小值就是f(x)的极大值
x=fminbnd(f,1,3)
y=-f(x)
%结果
% f = 
%     @(x)-x.^4-6.^2+8*x+17
% x =
%     3.0000
% y =
%    75.9952


% 2、多元函数的极小值点
% 求解多元函数的极小值点主要有两种方法:单纯行下山法和拟牛顿法
% x=fminsearch(fun,x0)  单纯行下山法求解多元函数极值点的最简单格式
% [x,fval,exitflag,output]=fminsearch(fun,x0,ptionas,p1,p2...) 完整格式
% x=fminunc(fun,x0)拟牛顿法的简单形式
% [x,fval,exitflag,output,grad,hessian]=fminunc(fun,x0)拟牛顿法的简单形式
% 具体实例
% 求解函数f(x)=100(x2-3x1^2)^2+(1-2x1)^2的极小值点
y=@(x)100*(x(2)-3*x(1)^2)^2+(1-2*x(1))^2
[x,fval]=fminsearch(y,[-3,3])
%结果
% y = 
%     @(x)100*(x(2)-3*x(1)^2)^2+(1-2*x(1))^2
% x =
%     0.5000    0.7500
% fval =
%    5.4048e-10



%% 函数积分

% 1、一元函数的数值积分
% 函数积分等于对应函数图形围成的面积
% 梯形法数值积分函数trapz()通过计算若干个梯形的面积求和来近似函数的积分
% 实例
% 求sinx在-pi到pi的积分
x=[-pi:0.001:pi];  %自变量之间的间距越小则积分结果越精确
y=sin(x);
area=trapz(x,y)
% 运行结果(sinx为奇函数,在对称区间进行积分,结果为0)
% area =
%   -1.7169e-08


% 2、辛普森数值积分
% 辛普森数值积分quad()和科茨数值积分quadl()比梯形法数值积分函数trapz()计算结果更精确一些
% q=quad('f(x)',x1,x2) 表示自适应递归地辛普森方法从积分区间[x1,x2]对函数f(x)进行积分
% 积分的相对误差在1e-3范围内。输入参数中的'f(x)'是一个字符串,表示积分函数的表达式
% 当输入的是向量时返回值必须是向量形式
% q=quad('f(x)',x1,x2,tol) 积分的误差在tol范围内
% q=quad('f(x)',x1,x2,tol,trace) 当输入的参数trace不是0的时候,以动态点图的形式实现积分的整个过程
% q=quad('f(x)',x1,x2,tol,trace,p1,p2...)表示允许输入参数p1,p2直接输给函数f(),在这种情况下,当tracehe
% tol为默认值时,需要输入空矩阵
% 实例 : 计算x^2+x-5在[0,5]上的积分
quad('x.^2+x-5',0,5)
% 结果
% ans =
%    29.1667


% 科茨数值积分:quadl()函数,语法跟辛普森数值积分函数quad()基本类似
% 实例 : 计算x^2+x-5在[0,5]上的积分
quadl('x.^2+x-5',0,5)
% 结果
% ans =
%    29.1667


% 多重数值积分,在医院积分的基础上再次积分,如二重积分,三重积分等

% 1)二重积分:使用dblquad()函数,根据dxdy的顺序,x为内积分变量,y为外积分变量。
% 先计算内积分变量,在根据内积分的中间结果计算外积分变量
% 具体使用方法:
% q=dblquad(fun,minx,maxx,miny,maxy) 计算函数在[minx,maxx,miny,maxy]上的二重积分
% q=dblquad(fun,minx,maxx,miny,maxy,tol) tol用来指定绝对计算精度
% 实例:计算在矩形区域内求函数F=ysin(x)+xcos(y)在[pi,2*pi,0,pi]上的二重积分
F=@(x,y) y*sin(x)+x*cos(y);
q=dblquad(F,pi,pi*2,0,pi)
% 结果
% q =
%    -9.8696

% 2)三重积分使用triplequad()函数来实现,方法如同二重积分dblquad()类似,只不过多添加一个dz

</span>

Matlab基础学习------------------函数的极值、积分问题Matlab实现

标签:matlab   函数积分   函数极值   matlab实现   

原文地址:http://blog.csdn.net/z1137730824/article/details/39930411

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!