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

2020-11-23 11:16:25 字数 4045 阅读 2314

1楼:匿名用户

你好,diff并不是求导的意思,而是求差分difference。

如果diff(x),x是一个矩阵,则对每一列求差分。

a=[1,2;2,1];

disp('matlab相约七点半 579164912');

diff(a)

运行结果为:

matlab相约七点半群 579164912ans =

1 -1

觉得有帮助就采纳吧。

matlab中用diff求导后的值为什么变成理论值的0.1倍了

2楼:匿名用户

因为导数的定义是dy/dx,你这里是df/dt你用diff(f),实际上只是求了df,还有除以自变量的微分你这里自变量t的间隔是0.1

所以d应该等于diff(t)/0.1也就是你计算的十倍那样就和ff一样了

为什么matlab中用diff求出的不是求导的结果。

3楼:匿名用户

^matlab中's'表示输入一个字符串,求导可以试试如下**:clc;clear;close all;

syms x b;

s1=6*x^3-4*x^2+b*x-5;

diff(s1)

显示结果:ans =

18*x^2 - 8*x + b

4楼:匿名用户

因为它将字符按数值处理了,可以试试:>> diff(s1, 'x')ans =

18*x^2 - 8*x + b

>> 或者使用符号函数clc; clear; close all;

syms x b;

s1 = 6*x^3 - 4*x^2 + b*x - 5;

diff(s1, x)

ans =

18*x^2 - 8*x + b

>>

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

5楼:我要那个妾

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

如果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 如何规定常数,比如求求sin(w*t)的导数时,w是常数,t为变量,怎么定义w

6楼:宇逸

>> syms w t

>> f=sin(w*t)

f =sin(w*t)

>> f1=diff(f,'t')

f1 =

cos(w*t)*w

>>求导时候,指出来对谁求导就行了,剩下的会自动当做常量处理。

7楼:刘贺

只要指定变量就行了,如果不指定变量,matlab会自动确定自由变量有时会错误的。

clear all;

syms w t

y=sin(w*t);

df=diff(y,t)

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

8楼:书宬

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

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

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

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

matlab中diff函数求差分什么意思?课本上说是求导数。两者有什么区别?

9楼:

差分是针对离散情况如离散向量、数字图像等来讲的,而导数是针对连续函数来讲的,这两种情况都可以用diff函数来求

离散情况如:

a=[1 2 3], diff(a) = [1 1];

连续情况如:

syms x y

y=x^2;

diff(y,x)=2*x

望采纳,谢谢!

10楼:小小肖麒麟

题主你好,请问你追问中的的**,是出自哪一本书?可以告诉我一下吗?感激不尽

matlab 用diff求导的话 如果方程里面有cosd就会出错。。改成cos就行了

11楼:匿名用户

很遗憾diff函数中你用cosd,是无法解析的,>> diff('cos(x)')

ans =

-sin(x)

>> diff('cosd(x)')

ans =

diff(cosd(x),x)

这时你可以考虑cos和cosd的转换

cosd(x) = cos(x/180*pi)因此diff('cosd(x)') = pi/180*diff('cos(x)')

matlab中的diff函数

12楼:匿名用户

楼主,您好;

1、最高项是6*x^3,而非6*t^3吧?

2、我是这样运行的,可以得到你想要的结果:

>> syms x b

>> s1=6*x^3-4*x^2+b*x-5;

>> diff(s1,1);

>> diff(s1,1)

ans =

18*x^2-8*x+b

>> syms x b

>> s1=6*x^3-4*x^2+b*x-5;

>> diff(s1,1)

ans =

18*x^2-8*x+b

3、diff有2个用途:求向量相邻间元素的差 和 求导;

你得到的结果是误让系统执行了前者;

而且,注意到:

>> '*' - '6'

ans =

-12这就是第1个数为什么是-12,之后的就不用再讲了。

13楼:暗影之王

在matlab中,diff函数用于求导数或者向量和矩阵的比较。在matlab的命令窗口中输入doc diff或者help diff即可获得该函数的帮助信息。

调用格式及说明:

y = diff(x)

这里求函数x的一阶导数

y = diff(x,n)

求函数x的n阶导数

y = diff(x,dim)

求函数x关于变量dim的偏导数

y = diff(x,n,dim)

求函数x关于dim的n阶偏导数

若x为向量,

y = diff(x)= [x(2)-x(1),x(3)-x(2),...,x(n)-x(n-1)]

求前后两项之差

若x为矩阵,

y = diff(x)= [x(2:n,:) - x(1:n-1,:)]

求每列前后两项之差

14楼:晏漾漾达农

如果你的函数是解析表达式,可以借助于符号运算求导数,求出导数之后再转换回inline函数。

示例:>> fun=inline('sin(x^2)*cos(y^3)')

fun =

inline function:

fun(x,y) = sin(x^2)*cos(y^3)>> dfun=inline(char(diff(char(fun))))

dfun =

inline function:

dfun(x,y) = 2*cos(x^2)*x*cos(y^3)

matlab中单位矩阵用什么表示

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