Mathlab编程-微积分在Matlab中的解法

这一章节将介绍一系列典型的微积分问题(求极限、级数、定积分、导数、重积分等)在Matlab中的求解。

首先关于极限:

(1)    数列极限:

给出下面三段例程。

求解数列极限的limit函数参数说明:可以看到该函数可以有三个参数也可以有两个参数,对于三个变量(比如说第二个例程),第一个参数是数列的通项,第二个参数是确认离散变量,因为在通项中有两个字母a、n,第三个参数表示这个离散变量趋于某个范围,这个函数将返回在离散变量趋于的那个范围(第三个参数)时的极限。

当然,借助Matlab自身强大的图像功能,我们对于求解数列极限,我们还有一个可行的方法就是得到这个数列的散点图,通过观察这个数列趋近于一个怎样的数,但是散点的数量要始终,而且得到的结果很可能不准确。

那第一个例子来说:

>> n=1:50;

>> plot(n,n.^(1./n),‘k.‘)   %  k.这里表示制自变量整数位置的散点图

得到如下的大致图像:

导数和微分在Matlab中的求解:

对于最简单的一阶导数,基于之前我们介绍的极限在Matlab中的写法,可根据定义直接求出导函数。

定义法求导函数:

diff函数直接求导函数:

基于定义法和左右导数的概念所编写的DerivativeDefinition函数:

function df=DerivativeDefinition(fun,x,x0,type)
%DERIVATIVEDEFINITION   根据导数的定义求函数的导函数或在某点处导数值
% DF=DERIVATIVEDEFINITION(FUN,X)或
% DF=DERIVATIVEDEFINITION(FUN,X,[])  求函数FUN关于X的导函数
% DF=DERIVATIVEDEFINITION(FUN,X,X0)  求函数FUN在点X0处的导函数
% DF=DERIVATIVEDEFINITION(FUN,X,X0,TYPE)  根据TYPE指定导数类型求函数在点X0处的导数,
%                                                 TYPE有以下取值:
%                                                 1.‘double‘或0:双侧导数值,此为缺省值
%                                                 2.‘left‘或-1:左导数
%                                                 3.‘right‘或1:右导数
% DF=DERIVATIVEDEFINITION(FUN,X,[],TYPE)  根据TYPE指定导数类型求函数的导函数
%
% 输入参数:
%     ---FUN:符号函数表达式
%     ---X:符号自变量
%     ---X0:求导点
%     ---TYPE:导数类型
% 输出参数:
%     ---DF:返回的导函数或导数值
%
% See also limit, diff

if nargin<4
    type=0;
end
if nargin==2 || isempty(x0)
    x0=x;
end
syms h
delta_y=subs(fun,x,x0+h)-subs(fun,x,x0);
switch type
    case {0,‘double‘}
        df=limit(delta_y/h,h,0);  % 求导数
    case {-1,‘left‘}
        df=limit(delta_y/h,h,0,‘left‘);  % 求左导数
    case {1,‘right‘}
        df=limit(delta_y/h,h,0,‘right‘);  % 求右导数
    otherwise
        error(‘The Style of Derivative is Illegal.‘)
end

结合一个实际问题对这段代码进行应用。

根据结果可知该点导数并不存在。

这里值得提的一点是,为了实现Matlab自定义函数功能,需要在Matlab编辑器中定义函数及其功能,然后在命令行窗口进行编程计算时直接调用即可。

时间: 2024-10-25 08:01:19

Mathlab编程-微积分在Matlab中的解法的相关文章

matlab中界面编程存在的问题

一.matlab编程具体实例详见 http://jingyan.baidu.com/album/e5c39bf587698b39d760331d.html?picindex=19 http://wenku.baidu.com/view/220b604ee45c3b3567ec8b6c.html?re=view 二.当matlab中出现.fig文件打不开时,原因有可能是: 1.文件损坏 2.没有放到中文的目录下 三.http://www.cnblogs.com/zjutlitao/p/388381

Matlab中配置VLFeat

在VLFeat官网上是这么介绍VLFeat的:VLFeat开源库实现了很多著名的机器视觉算法,如HOG, SIFT, MSER, k-means, hierarchical k-means, agglomerative information bottleneck, SLIC superpixels, 和 quick shift.VLFeat开源库是用C语言写的,以确保其效率和兼容性,同时VLFeat还提供了MATLAB接口和详细的文档.它可以在windows, Mac, 和Linux上使用.

编程之美——二进制数中1的个数

解法一:若二进制末尾为1,则除以2余1: int count(int a) { int num=0; while(a) { if(a%2==1) ++num; a=a/2; } return num; } 解法二:使用移位操作相除: int count(int a) { int num=0; while(a) { num+=a&0x01; a>>=1; } return num; } 解法三:以上两种算法复杂度log2(t),t为a的二进制表示位数,若要求复杂度仅与二进制表示中1的个数

MATLAB中多个一维数组的合并

1.一维数组直接合并 题目: 数组work1[x1,x2--,xn],work2[y1,y2--,yn],现在要生成一个数组work3, work3中的数据为[x1,x2,x3--xn,y1,y2--yn]; 合并方法: 直接将两个矩阵合并: A = [1,2,3,4]; B = [-1,-2,-3,-4]; C = zeros(1,size(B,2)+size(A,2));     %这句可以不要; C = [A, B]; 2.一维数组交叉合并: 题目: 数组work1[x1,x2--,xn]

在matlab中配置vlfeat

[转自]http://cnyubin.com/?p=85 在VLFeat官网上是这么介绍VLFeat的:VLFeat开源库实现了很多著名的机器视觉算法,如HOG, SIFT, MSER, k-means, hierarchical k-means, agglomerative information bottleneck, SLIC superpixels, 和 quick shift.VLFeat开源库是用C语言写的,以确保其效率和兼容性,同时VLFeat还提供了MATLAB接口和详细的文档.

基于Matlab中FDATool工具箱的滤波器设计及相关文件的生成

一.摘要 除了采用编程的方法实现滤波器之外,Mat l ab中自带工具箱FDATool 也能很方便快速的实现滤波器的设计.另外FPGA.DS P等实现数字滤波器算法时,经常要用到滤波器系数,采用FDATool 工具箱也能快速的得到滤波器系数.二.实验平台 Matlab7.1三.实现步骤3.1 滤波器指标若需要设计一个16阶的FIR滤波器(h(0)=0),给定的参数如下:(1) 低通滤波器(2) 采样频率Fs 为48kHz ,滤波器Fc为10.8kHz(3) 输入序列位宽为9位(最高位为符号位)在

VC++中调用MATLAB中的数据

网上的帖子都是如何将VC++数据添加进入MATLAB中,而VC++调用MATLAB中的数据几乎没有,再次记录一点东西吧 配置好编程环境,本文环境为:VS2012+MATLAB2012b. 首先要了解的是Matlab Engine API函数 接下来贴代码和效果: void test2() { Engine *ep; if (!(ep = engOpen(NULL))) { cout<<"Can't start MATLAB engine"<<endl; //Me

详细MATLAB 中BP神经网络算法的实现

MATLAB 中BP神经网络算法的实现 BP神经网络算法提供了一种普遍并且实用的方法从样例中学习值为实数.离散值或者向量的函数,这里就简单介绍一下如何用MATLAB编程实现该算法. 具体步骤 这里以一个普遍实用的简单案例为例子进行编程的说明. 假设一组x1,x2,x3的值对应一个y值,有2000组这样的数字,我们选择其中1900组x1,x2,x3和y作为样本,其余100组x1,x2,x3作为测试数据来验证.   首先需要读取这些数据,并把数据赋值给input 和 output . 我是把数据存储

Matlab中的actxserver运用

创建 COM 服务器 语法 c = actxserver(progid) c = actxserver(progid,Name,Value) 说明 示例 c = actxserver(progid) 创建一个本地 OLE 自动化服务器,其中 progid 是与 OLE 兼容的 COM 服务器的编程标识符 (ProgID).返回服务器的默认接口的句柄. c = actxserver(progid,Name,Value) 使用名称-值对组参数创建一个服务器. 示例 全部折叠 显示 Excel Act