MATLAB中的微积分运算(数值&符号)
显然这个函数是单词differential(微分)的简写,用于计算微分。实际上准确来说计算的是差商。
(1)符号微分
1.常用的微分函数
函数:diff(f) 求表达式f对默认自变量的一次微分值
diff(f,x) 求表达式f对自变量x的一次积分值
diff(f,n) 求表达式f对默认自变量的n次微分值
diff(f,t,n)求表达式f对自变量t的n次微分值
>> x=1:10
x =
1 2 3 4 5 6 7 8 9 10
>> diff(x)
ans =
1 1 1 1 1 1 1 1 1
例1:求矩阵中各元素的导数
求矩阵[1/(1+a) (b+x)/cos(x)
1/(x*y) exp(x^2)]
对x的微分,可以输入以下命令
A = sym('[1/(1+a),(b+x)/cos(x);1,exp(x^2)]');
B = diff(A,'x')
可得到如下结果:

例2:求偏导数
求
的偏导数。
syms x y;
f = x*exp(y)/y^2;
fdx = diff(f,x)
fdy = diff(f,y)
可得到如下结果:

例3:求复合函数的导数
求
的导数
sym('x');
y = 'x*f(x^2)'
y1 = diff(y,'x')
得到结果如下:

例4:求参数方程的导数
对参数方程
求导
syms a b t
f1 = a*cos(t);
f2 = b*sin(t);
A = diff(f2)/diff(f1) %此处代入了参数方程的求导公式
B = diff(f1)*diff(f2,2)-diff(f1,2)*diff(f2)/diff(f1)^3 %求二阶导数
可得到如下结果:

例5:求隐函数的导数
求
的一阶导数
syms x y
p = 'x*y(x)-exp(x+y(x))'
%隐函数可进行整体表示
%注意y(x)这种写法,它代表了y是关于x的函数
p1 = diff(p,x)
可得到如下结果:

2.符号积分
1符号函数的不定积分
函数:int
功能:求取函数的不定积分
语法:
int(f)
int(f,x)
说明:第一个是求函数f对默认自变量的积分值;第二个是求自变量f对对自变量t的不定积分值。
例:分别求函数f(x)=(3-x2)3、
的不定积分。
x = sym('x');
%函数的输入
f1 = (3-x^2)^3;
f2 = sqrt(x^3 + x^4);
%对函数进行积分
intf1 = int(f1)
intf2 = int(f2)
可得结果如下:

2符号函数的定积分
函数:int
功能:求取函数的定积分
语法:
int(f,a,b)
int(f,x,a,b)
说明:第一个是求表达式f对默认自变量的定积分值,积分区间为
[a,b];第二个是求表达式f对自变量x的定积分值,积分区间为[a,b]。
例:分别求
、
、
、
的定积分。
syms x t %输入函数方程式
f1 = abs(1-x);
f2 = 1/(1+x^2);
f3 = 4*t*x;
f4 = x^3/(x-1)^100; %求取函数积分
intf1 = int(f1,1,2)
intf2 = int(f2,-inf,+inf)
intf3 = int(f3,2,sin(t))
intf4 = int(f4,2,3)
可得到如下结果:

(2)数值微分
在MATLAB中,没有直接提供求数值导数的函数,只有计算向前差分的函数diff。
函数:diff
功能:求取数值微分
语法:
DX = diff(X)
DX = diff(X,n)
DX = diff(X,n,dim)
说明:第一个计算向量X的向前差分,即DX(i) = X(i+1)-X(i),i=1,2,...,n-1。第二个是计算X的n阶向前差分。例如,diff(X,2)=diff(diff(X))。第三个计算矩阵A的n阶差分,当dim=1或缺省状态时,按行计算差分;dim=2,按列计算差分。
例:设x由[0,2π]间均匀分布的10个点组成,求sinx的1到3阶差分。
x = linspace(0,2*pi,10);
y = sin(x);
Dy = diff(y)
Dy2 = diff(y,2)
Dy3 = diff(y,3)
plot(x,y,'B');hold on
plot(Dy,'Y');plot(Dy2,'G');plot(Dy3,'R');
title('sinx的1到3阶差分')
xlabel('x');ylabel('y')
可得到结果如下

图形如下:

注:二维图形常用设置选项

例:求函数
的数值微分,并画出函数图比较
x = 0:0.01:2 %数值微分&积分需要先确定数值的范围,这一点与符号微分&积分有所不同。
f = x.^2.*cos(x)./(3*x+2)
Df = diff(f)
plot(x,f,'r')
hold on
y = x(1:200);
plot(y,Df,'b')
legend('函数图','微分图')
可得到如图所示图线

数值积分
求解定积分的数值方法多种多样,如简单的梯形法、辛普生(Simpson)法、牛顿-科特斯(Newton-Cotes)法等都是经常采用的方法。他们的基本思想都是将整个积分区间[a,b]分成n个子区间[xi,xi+1],i = 1,2,…,n,其中x1=a,xn+1=b。这样求定积分问题就变成了求和问题。
1、变步长辛普森法
基于变步长辛普森法,MATLAB给出了quad函数来求定积分。
函数:quad
功能:求取基于变步长辛普森法的数值定积分。
语法:[I,n]=quad('fname',a,b,tol,trace)
说明:fname是被积函数名(需要新建一个函数)。a和b分别是定积分的上限和下限。tol用来控制积分精度,缺省时取tol = 10-6,。trace控制是否展现积分过程,取非0为展现积分过程,取0则不展现,缺省时trace = 0.返回参数I即定积分值,n为被积函数的调用次数。
例:用变步长辛普森法计算函数f(x)=e-0.2xsin(x+π/3)在区间[0.3π]的定积分
首先建立被积函数文件fesin.m
function f = fesin(x)
f = exp(-0.2*x).*sin(x+pi/3);
然后调用数值积分函数quad来求定积分
[S,n] = quad('f',0,3*pi)
2、牛顿-科斯特法
在MATLAB中,使用Newton-Cotes来求取定积分函数为quadl。
函数:quadl
功能:基于Newton-Cotes法来求数值定积分
语法:[I,n] = quadl('fname',a,b,lol,trace)
说明:参数的含义和quad函数相似,只是tol的缺省值取10-6。该函数可以更精确地求出定积分的值,且一般情况下函数调用的步数明显小于quad函数,从而保证以更高的效率求出所需的定积分值。
MATLAB中的微积分运算(数值&符号)的更多相关文章
- MATLAB中的集合运算
matlab里关于集合运算和二进制数的运算的函数 intersect:集合交集ismember :是否集合中元素setdiff :集合差集setxor :集合异或(不在交集中的元素)union :两个 ...
- MATLAB中的积分运算
MATLAB中计算一元函数的(不)定积分使用int函数. ①int(s)计算符号表达式s的不定积分 syms x;s = x^2;int(s) 计算x^2的不定积分. ②int(s,x)计算符号表达式 ...
- MATLAB中的多项式运算
作者:长沙理工大学 交通运输工程学院 王航臣 1.多项式求根 在MATLAB中求取多项式的根用roots函数. 函数:roots 功能:一元高次方程求解. 语法:roots(c) 说明:返回一个列向量 ...
- Matlab中要显示数学公式或符号Latex
\rho 代表 ρ, \sigma 代表 σ \alpha α \beta β \gamma γ \delta δ \epsilon ϵ \zeta ζ \eta ...
- matlab中bitshift 将位移动指定位数
来源:https://ww2.mathworks.cn/help/matlab/ref/bitshift.html?searchHighlight=bitshift&s_tid=doc_src ...
- matlab 中txt文件(含字符及数值)处理
matlab 中txt文件(含字符及数值)处理 (2008-08-02 09:45:12) 转载▼ 标签: 杂谈 分类: matlab及C学习 Matlab文件操作及读txt文件ZZ 2008-07- ...
- Mathlab编程-微积分在Matlab中的解法
这一章节将介绍一系列典型的微积分问题(求极限.级数.定积分.导数.重积分等)在Matlab中的求解. 首先关于极限: (1) 数列极限: 给出下面三段例程. 求解数列极限的limit函数参数说明 ...
- C语言中无符号数和有符号数之间的运算
C语言中无符号数和有符号数之间的运算 C语言中有符号数和无符号数进行运算(包括逻辑运算和算术运算)默认会将有符号数看成无符号数进行运算,其中算术运算默认返回无符号数,逻辑运算当然是返回0或1了. un ...
- matlab 中使用 GPU 加速运算
为了提高大规模数据处理的能力,matlab 的 GPU 并行计算,本质上是在 cuda 的基础上开发的 wrapper,也就是说 matlab 目前只支持 NVIDIA 的显卡. 1. GPU 硬件支 ...
随机推荐
- DropDownListFor的用法
Asp.Net MVC中DropDownListFor的用法 在Asp.Net MVC中可以用DropDownListFor的方式来让用户选择已定列表中的一个数值.用法不复杂,这里简单做一个记录. ...
- Binder机制,从Java到C (6. Binder in Native : libbinder)
1.Java和C++中的Binder 从前一篇 Binder机制,从Java到C (5. IBinder对象传递形式) 中可以看到,使用Binder的Java代码,到最后都会进入到Native环境,将 ...
- [Usaco2008 Open] Clear And Present Danger 寻宝之路[最短路][水]
Description 农夫约翰正驾驶一条小艇在牛勒比海上航行. 海上有N(1≤N≤100)个岛屿,用1到N编号.约翰从1号小岛出发,最后到达N号小岛.一 张藏宝图上说,如果他的路程上 ...
- 10.26最后的模拟DAY2 改造二叉树[中序遍历+严格递增的最长不下降子序列]
改造二叉树 [题目描述] 小Y在学树论时看到了有关二叉树的介绍:在计算机科学中,二叉树是每个结点最多有两个子结点的有序树.通常子结点被称作“左孩子”和“右孩子”.二叉树被用作二叉搜索树和二叉堆.随后他 ...
- Code First 启用迁移时出错 HRESULT:0x80131040
问题:Enable-Migrations 使用“8”个参数调用“CreateInstanceFrom”时发生异常 (异常来自 HRESULT:0x80131040) PM> Enable-Mig ...
- 关于ADB server didn't ACK * failed to start daemon *的问题
查看5037端口被谁占用了, 开始--运行--CMD 到命令提示符,输入 netstat -aon|findstr "5037" 输入 tasklist|findstr " ...
- JavaWEB开发国际化
1.国际化开发概述 )软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据. )国际化又称为 i18n:inter ...
- 搜索广告与广告网络Demand技术-搜索广告
搜索广告 搜索广告就是一个典型的Ad Network,但是搜索广告非常重要,它的收入非常高,所以它有其独特之处,复杂度也比展示广告要高.它与展示广告在点击率预测,检索部分差不多,它的特点:1. 用户定 ...
- CNN for Visual Recognition (01)
CS231n: Convolutional Neural Networks for Visual Recognitionhttp://vision.stanford.edu/teaching/cs23 ...
- ShardedJedis实现学习
ShardedJedis实现学习-我们到底能走多远系列(33) 我们到底能走多远系列(31) 扯淡: 工作是容易的赚钱是困难的 恋爱是容易的成家是困难的 相爱是容易的相处是困难的 决定是容易的可是等待 ...