matlab 数值微分与函数句柄 补充最优化与函数句柄
function shuzhiweifen
clc
%ode23 ode45
% t=[0,20];
% y0=[1;0];
% [t,y]=ode45(@dfun,t,y0)//就固定用匿名函数这样写,其他出错
% plot(t,y(:,1),t,y(:,2))
% function y=dfun(t,y)
% u=2;
% y=[y(2);
% u.*(1-y(1).^2).*y(2)-y(1)];
%Euler
tn=2;
h=0.2;
y0=1;
**% [t,y]=odeEuler(@diffeq,tn,h,y0)%对应 kk=t-2.y;
% [t,y]=odeEuler(‘diffeq’,tn,h,y0)%对应 kk=t-2.y;
[t,y]=odeEuler(diffeq,tn,h,y0)%对应kk=inline('t-2.y’);和kk=@(t,y)t-2.y
function [t,y]=odeEuler(diffeq,tn,h,y0)
f=diffeq
t=(0:h:tn);
n=length(t);
y=y0ones(n,1);
for k=2:n
y(k)=y(k-1)+hfeval(diffeq,t(k-1),y(k-1));%feval
end
function kk=diffeq(t,y)
% kk=inline(‘t-2.*y’);
kk=@(t,y)t-2.*y
% kk=t-2.*y;
最优化与函数句柄
% 求一元函数 f (x) = 0.5 – x*exp(– x2) 在区间[0,2]内的极小值。
%法一,用inline
% [xmin,ymin]=fminbnd(dfun,0,2)
% ezplot(dfun,[0,2])
% function kk=dfun(x)
% % kk=0.5-x.*exp(-x.^2);
% kk=inline(‘0.5-x.*exp(-x.^2)’);
%法二,用匿名函数
% [xmin,ymin]=fminbnd(@dfun,0,2)
% ezplot(@dfun,[0,2])
% function kk=dfun(x)
% kk=0.5-x.*exp(-x.^2);
% %法三,用匿名函数
% [xmin,ymin]=fminbnd(dfun,0,2)
% ezplot(dfun,[0,2])
% function kk=dfun(x)
% kk=@(x)0.5-x.*exp(-x.^2);
%出错
[xmin,ymin]=fminbnd(‘dfun’,0,2)
ezplot(‘dfun’,[0,2])
function kk=dfun(x)
kk=0.5-x.*exp(-x.^2);
%%最后一种出错的原因,可能是fminbnd函数本身定义的问题。。可见,前三种方式才比较保险
- matlab数值积分技巧之将符号表达式转化为函数句柄
- 函数句柄matlab
- MATLAB学习笔记(八)——MATLAB数值积分与微分
- matlab 函数句柄
- Matlab中的函数句柄@
- 99、插值法,函数逼近,曲线拟和,数值积分,数值微分,解线性方程组的直接方法,解线性方程组的迭代法,非线性方程求根,常微分方程的数值解法
- MATLAB句柄图形对象的创建函数与函数描述
- matlab中函数句柄在feval中的应用
- matlab --- 函数句柄(函数指针)
- matlab中函数句柄
- Matlab_learning_4( 函数句柄 )
- 基于MATLAB的高等数学 求函数的全微分
- matlab函数微分
- matlab函数句柄(function handle)
- matlab函数句柄介绍
- matlab 函数句柄
- Matlab中函数句柄@的作用及介绍
- (原创)matlab符号微分含有未知函数时的导数计算
- Matlab中函数句柄@的作用及介绍
- 【数学建模】MATLAB数值积分与微分