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 再...