作业帮 > 综合 > 作业

Matlab 符号表达式 求微分 TOT

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/11 05:28:26
Matlab 符号表达式 求微分 TOT
程序书上有Matlab 符号表达式 求微分的例子,我用matlab R2013a运行了一下,结果出不来T_T
>> y='4*x^4+3*x^3+2*x^2+x+1';
>> diff(y)
ans =
Columns 1 through 16
-10 78 -26 -42 -9 8 -9 78 -26 -43 -8 7 -8 78 -26 -44
Columns 17 through 20
-7 77 -77 6
由于diff函数有多个(可以用which diff -all命令查看),调用的时候就会涉及到调用哪一个的问题. MATLAB会调用哪个函数,是由该函数的参数类型决定的,例如对于符号变量(sym对象),很自然就会调用符号数学工具箱中求微分的那个函数,而对于普通的double数值类型,则会调用求差分的那个函数.函数重载的概念听说过吧? 现在楼主给的参数是char字符类型,在早期的版本里(例如6.5、2007b),符号数学工具箱专门提供了一个对char类型的重载函数 toolbox\symbolic\@char\diff.m,其有效代码只有一句:y = diff(sym(f),varargin{:});但不知道什么原因,这个重载的形式在2013a里面消失了,所以楼主的语句就会把char转换为double,然后调用求差分的那个diff,就得到了你现在看到的结果. 比较稳妥的方式是,把符号类型的东西明确声明为sym类型,那样就不会错了:>> y=sym('4*x^4+3*x^3+2*x^2+x+1');
>> diff(y) 
ans = 
16*x^3+9*x^2+4*x+1
再问: 多谢~~