失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > matlab 符号运算 数值 MATLAB中的微积分运算(数值符号)

matlab 符号运算 数值 MATLAB中的微积分运算(数值符号)

时间:2018-09-20 10:16:29

相关推荐

matlab 符号运算 数值 MATLAB中的微积分运算(数值符号)

显然这个函数是单词differential(微分)的简写,用于计算微分。实际上准确来说计算的是差商。

如果输入一个长度为n的一维向量,则该函数将会返回长度为n-1的向量,向量的值是原向量相邻元素的差,于是可以计算一阶导数的有限差分近似。

(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里关于集合运算和二进制数的运算的函数 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 将位移动指定位数

来源:/help/matlab/ref/bitshift.html?searchHighlight=bitshift&s_tid=doc_src ...

matlab 中txt文件(含字符及数值)处理

matlab中txt文件(含字符及数值)处理 (-08-02 09:45:12) 转载▼ 标签: 杂谈 分类:matlab及C学习 Matlab文件操作及读txt文件ZZ -07- ...

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

这一章节将介绍一系列典型的微积分问题(求极限.级数.定积分.导数.重积分等)在Matlab中的求解. 首先关于极限: (1) 数列极限: 给出下面三段例程. 求解数列极限的limit函数参数说明 ...

C语言中无符号数和有符号数之间的运算

C语言中无符号数和有符号数之间的运算 C语言中有符号数和无符号数进行运算(包括逻辑运算和算术运算)默认会将有符号数看成无符号数进行运算,其中算术运算默认返回无符号数,逻辑运算当然是返回0或1了. un ...

matlab 中使用 GPU 加速运算

为了提高大规模数据处理的能力,matlab 的 GPU 并行计算,本质上是在 cuda 的基础上开发的 wrapper,也就是说 matlab 目前只支持 NVIDIA 的显卡. 1. GPU 硬件支 ...

随机推荐

salesforce 零基础学习(六十一)apex:component简单使用以及图片轮转播放的实现

有的时候,我们项目有可能有类似需求:做一个简单的图像轮转播放功能,不同的VF页面调用可以显示不同的图片以及不同的图片描述.这种情况,如果在每个页面单独处理相关的图像轮转播放则显得代码特别冗余,此种情况 ...

Transactional replication-如何跳过一个事务

在transactional replication, 经常会遇到数据同步延迟的情况.有时候这些延迟是由于在publication中执行了一个更新,例如update ta set col=? Wher ...

Application.ProcessMessages用法

参考:/blog/380926 我想你可能还有点模糊.举个例子容易明白:假如你的窗体上有两个按钮,一个“计算”,一个“停止”, 如果你的计算是密集运 ...

字符集与Mysql字符集处理(一)

一.字符集总结 其实大多数的知识在这篇文章里已经讲得非常清楚了.这里只是讲一下自己的感悟. 1. UTF-8虽然是以UTF(unicode transfermation format)开头的,但是 ...

sleep()

经常看到线程中用sleep(),到底是什么用处,下面讲的比较通俗: 我们可能经常会用到 Thread.Sleep 函数来使线程挂起一段时间.那么你有没有正确的理解这个函数的用法呢?思考下面这两个问题: ...

[Jmeter]jmeter之参数化

一.同一个服务器不同界面访问 a 准备工作: 1.启动jmeter: 2.创建需要访问的url文件,内容示例如下: 即比如:/amberly/p/59651 ...

js实现谷歌坐标转百度坐标

js实现谷歌坐标转百度坐标 谷歌坐标转百度坐标 实现算法如下(以js为例,其他语言调整就行): //$lat 维度:$lng 经度 function GCJTobaidu($lat, $lng){ ...

spark als scala实现(二)

Vi t1.txt1,101,5.01,102,3.01,103,2.52,101,2.02,102,2.52,103,5.02,104,2.03,101,2.53,104,4.03,105,4.5 ...

js原型与原型链探究

原型有一个非常重要的属性叫 prototype 一.先写一个简单的例子,看看 A的原型和A的实例 分别是什么 function A() {} var a = new A() console.log(a ...

使用visual C++测试

背景:学习一门语言最好的方式就是实际动手敲一遍.现在敲一遍的障碍是不能熟练的使用工具,特此记录下来 新建工程 新建——项目——Windows 控制台应用程序 如何新建测试用例呢? OJ试题在VS201 ...

如果觉得《matlab 符号运算 数值 MATLAB中的微积分运算(数值符号)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。