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 -

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/06 14:42:06

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

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 -

由于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