请教 MATLAB求导问题

b=1; c=1; a=0:1:8;
x1=a.*c;
x2=a-b.*a;
y=a.^2+b.^3+2*a.*c+min(x1,x2);
z=diff(y,a);
plot(a,z)
我是想实现上面的运算,但不知知道怎样写程序,望大神指点为谢!
b=1; c=1; syms a;
x1=a.*c;
x2=a-b.*a;
y=a.^2+b.^3+2*a.*c+min(x1,x2);
t=0:1:8;
z=diff(y,a);
subs(z,a,t);
plot(a,z)
Undefined function 'min' for input arguments of type 'sym'.

得不出来哦,你能帮忙修改一下么?,菜鸟琢磨了一会一直不行。谢谢!

b=1; 

c=1; 

a=0:1:8;

x1=a.*c;

x2=a-b.*a;

y=a.^2+b.^3+2*a.*c+min(x1,x2);

plot(a,y);hold on;

z=diff(y)./diff(a);

l = length(a);

plot(a(1:l-1),z,'r-');


追问

不太理解后面I=length(a)=9, plot(a(1:l-1),z,'r-') 即为为plot(a(1:8),z),不是从1-8么?图中是0-7,为什么不到8?z是8维,它是a的计算怎么不是9维呢?为什么这样就能保证a,z 长度一致呢?而a为(0:I-2)又不行?

追答

因为算导数要用到减法 (Δy=y2-y1), 用到两个数才能算一个Δ,故9个数只能算8个Δ, 所以算出来的导数值少一个.

追问

谢谢,我是想知道length(a)-1 来调节a,z 长度相等的机理、、、还有plot(a(1:8),z)不是从1-8么?图中是0-7,这是为何呢?

追答

x轴是a=0:1:8, 即a=0~8, 减掉一个就是0~7

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-12
用syms a;
最后再用sub函数把值代入追问

还是得不出来哦,你能帮忙修改一下么?内容在补充问题后面,谢谢!

相似回答