用matlab怎么对矩阵求导,Matlab中如何求导?

2020-11-23 11:16:25 字数 5484 阅读 1725

1楼:匿名用户

本来就可以对矩阵求导。例如

syms x;

a=[sin(x) 2*x;log(x) x^2]diff(a)

matlab中如何求导?

2楼:张宇

操作方法如下:

1、打开matlab软件;

2、输入指令clear;clc;清空工作空间;

3、输入指令sy** x定义一个符号

变量,如图所示;

4、输入指令f1=atan(x),定义一个函数;

5、输入指令df1=diff(f1,x)求解导函数的符号解;

6、输入以下指令查看求导的结果,如图所示;

subplot(1,2,1);

ezplot(f1),grid on;

subplot(1,2,2);

ezplot(df1),grid on;

7、查看求导结果如下。

3楼:匿名用户

matlab求导命令diff调用格式:

diff(函数) , 求的一阶导数;

diff(函数, n) , 求的n阶导数(n是具体整数);

diff(函数,变量名), 求对的偏导数;

diff(函数, 变量名,n) ,求对的n阶偏导数;

matlab求雅可比矩阵命令jacobian,调用格式:

jacobian([函数;函数; 函数], )给出矩阵:

另外解微分方程可以用desolve

例>> x=solve('x^2=y','x')x =y^(1/2)

-y^(1/2)

matlab如何 对数组求导?

4楼:匿名用户

本来不想说的。

你的前几个数据的y是相同的,也就是说是它们的数值导数肯定为零。但不意味着这些点都是极值点,这些绝对是你的数据精度的问题。

解析式比数值的优势,我觉得就是“精度”,解析式能求出任何一点的值,而数值只是有限的几个点是己知的,根据这些去猜测(也就是插值)出其它点的值(这些值跟真值应当有一些出入)

data=[

1.04 0

1.12 0

1.2 0

1.28 0

1.36 0

1.44 0

1.52 0

1.6 0

1.68 0

1.76 0

1.84 0

1.92 0

2 52.08 69

2.16 408

2.24 1148

2.32 1963

2.4 2074

2.48 1436

2.56 689

2.64 287

2.72 80

2.8 27

2.88 4

2.96 2

3.04 0

3.12 7

3.2 14

3.28 61

3.36 158

3.44 330

3.52 724

3.6 1367

3.68 2332

3.76 3411

3.84 4054

];x=data(:,1)';

y=data(:,2)';

plot(x,y)

dydx=diff(y)./diff(x); %这个是数值导数

x(find(dydx==0)) %直接数值导数为0的x的值,但是你无法得到中间那个峰的值。

x(dydx(1:end-1).*dydx(2:end)<0) %导数值跨过0的值,这个应当是你想要的

5楼:逆心小土豆

你看看:

syms x1 x2 x3

f = x1^2+x2^2+x3^2;

fx1 = diff(f,x1);

fx2 = diff(f,x2);

fx3 = diff(f,x3);

x11 = input('请输入整数x1:');

x22 = input('请输入整数x2:');

x33 = input('请输入整数x3:');

subs(fx1,x1,x11)

subs(fx2,x2,x22)

subs(fx3,x3,x33)

输出的subs就是赋值之后的每一个偏导的结果,你可以试着运行一下。

diff默认对x求导,如果有好几个x,则默认对x1求导,默认求一介导。

6楼:匿名用户

方法:1. 矩阵y对标量x求导:

y = [y(ij)]d y/dx = [dy(ji)/dx]2. 标量y对列向量x求导:

y = f(x1,x2,..,xn) dy/dx= (dy/dx1,dy/dx2,..,dy/dxn)'

3. 行向量y'对列向量x求导:

y的每一列对x求偏导,各列构成一个矩阵。

4. 列向量y对行向量x’求导:

转化为行向量y’列向量x的导数转置。

5. 向量积对列向量x求导运算法则:

d(uv')/dx =(du/dx)v' + u(dv'/dx)d(u'v)/dx =(du'/dx)v + (dv'/dx)u'

6. 矩阵y对列向量x求导:

y对x的分量求偏导,构成超向量。

7. 矩阵积对列向量求导法则:

d(uv)/dx =(du/dx)v + u(dv/dx)d(uv)/dx =(du/dx)v + u(dv/dx)8. 标量y对矩阵x的导数:

把y对每个x的元素求偏导,不用转置。

dy/dx = [dy/dx(ij) ]

9. 矩阵y对矩阵x的导数:

将y的每个元素对x求导,然后排在一起形成超级矩阵。

10.乘积的导数

d(f*g)/dx=(df'/dx)g+(dg/dx)f'

7楼:匿名用户

这个问题我给你分析一下,首先你的想法看起来是对的,但其实不是很正确。

对于离散的数据点,使用求导的方法寻找极值,你会发现找不到导数为零的地方的。原因是离散点求导就是做差分。

寻找极值的方法应该是:一维搜索的方法

就是一个一个的查询数组,看在哪个点处的数比它前后的数都大。

8楼:匿名用户

求导 函数为 diff()

如>> syms x;

>> y=x^2+x

y =x^2 + x

>> s=diff(y)

s =2*x + 1

9楼:匿名用户

题目错了爸!!!!!!!

matlab中矩阵在x,y两个方向求导

10楼:匿名用户

建议用gradient  可以矩阵求导。

1。如果f是一维矩阵,则fx=gradient(f,h)返回f的一维数值梯度。h是f中相邻两点间的间距。

2。如果f是二维矩阵,返回f的二维数值梯度。

[fx,fy]=gradient(f,hx,hy)。hx,hy参数表示各方向相邻两点的距离。

3。如果f是三维矩阵,返回f的三维数值梯度。

[fx,fy,fz]=gradient(f,hx,hy,hz)。

hx,hy,hz参数表示各方向相邻两点的距离。

11楼:郗晚竹长衣

\是matlab里面的左除。用来求(以你问题为例)x*a=y这个线性方程组的(最小二乘)解。

当然你这个方程比较奇怪,未知数为a,方程系数存在x矩阵里面

matlab如何对一个矩阵 求导而且不降维

12楼:飛兲

gradient 计算数值梯度。 函数f(x,y,...)在(x0,y0,...

)的梯度就是函数在该点的导数,通常在数学上记作▽f(x0,y0,...)或gradf(x0,y0,...)。

梯度是一个向量, 它的方向是函数在一点变化率最快的方向,而它的模就是函数沿这个方向的变化率。 在matlab中利用gradient计算梯度,将得到若干向量,它们指出了f的值增大的方向。 语法格式:

fx = gradient(f) 其中f是一个向量。该格式返回f的一维数值梯度。fx即f/x,即沿着x轴(水平轴)方向的导数。

[fx,fy] = gradient(f) 其中f是一个矩阵。该调用返回二维数值梯度的x、y部分。fx对应f/x, fy对应于f/y。

[fx,fy,fz,...] = gradient(f) 这里,f是一个含有n个自变量的多元函数。 [...

] = gradient(f,h) 这里的h指定了沿着梯度的方向取点的间隔。 [...] = gradient(f,h1,h2,...

) 以x,y方向分别为间隔0.2求取矩阵z的数值梯度,dz/dx和dz/dy分别返回到dx,dy中。

matlab矩阵里对于时间变量t的导数应该如何表示?

13楼:我要那个妾

问题问的不清楚。什么类型的矩阵?符号矩阵?

如果a是符号矩阵

diff(a,t)

你的矩阵乘法是点乘还是叉乘?这个问题不难的。常数矩阵就按照正常定义就可以。c里的4个变量都是t的函数吧。假设它们分别是a=t,b=t^2,c=t-1,d=sin(t)

syms t;

a=t;

b=t^2;

c=t-1;

d=sin(t);

c=[a b ; c d];

a 是 c关于t的导数的话,那么 a = diff(c,t);

我就不明白你的等式a=b*c+d*e代表什么含义了。bcd都是常数矩阵,e a 是符号矩阵,这个式子怎么可能成立呢?

你最好把你的问题原原本本弄上来。

因为不知道你的原始数据,数据类型,数据结构,根本没法选择具体怎么编程。

如何用matlab求符号函数数组或函数矩阵的导数

14楼:寰宇孤心

diff 函数

https://**.mathworks.***/help/symbolic/mupad_ref/diff.html?s_tid=srchtitle

matlab中对矩阵求导后为什么矩阵中数会少一个?

15楼:书宬

fa=(x.*st(2:end)-y.

*st1(2:end))./((st(2:

end)).^2+(st1(2:end):

1).^2); % 这样改就好了

对矩阵求导数有什么意义?还有matlab中对矩阵求导的规则是什么? 5

16楼:匿名用户

fa=(x.*st(2:end)-y.

*st1(2:end))./((st(2:

end)).^2+(st1(2:end):

1).^2); %

matlab常数矩阵求导,用diff为什么不是

1楼 匿名用户 你好,diff并不是求导的意思,而是求差分difference。 如果diff x ,x是一个矩阵,则对每一列求差分。 a 1 2 2 1 disp matlab相约七点半 579164912 diff a 运行结果为 matlab相约七点半群 579164912ans 1 1 觉得...

matlab中单位矩阵用什么表示

1楼 告清竹洋画 查了一下matlab的help文档,里面也没有给出说明。 我思考了一下,可能是因为单位阵常常用 i 这个字母来代表。 而 i 的读音与 eye相同,所以就用eye 来命名生成单位矩阵的函数了。 你这个问题提得很有趣,很高兴能与你交流 2楼 匿名用户 a eye n 该函数产生n n...

matlab怎么把十进制矩阵用二进制输出

1楼 公西南风 给你写了下 a 1 2 3 4 5 6 7 8 9 b dec2bin a 将a转为二进制 c cell size a 由于得到的b的形状与a不同,我们建立一个新的元胞数据c for i 1 length b c b i 得到的c就与a的形状一样了endd cell size a 再...