1. [测试] Sowya 中的求导函数 diff()
Posted by haifeng on 2025-09-16 08:53:02 last update 2025-09-16 09:15:42 | Answers (0) | 收藏
下面用例子检测一下 diff() 的功能. 看一下还有哪些缺点.
函数的求导法则
1. 求 $u(x)+v(x)$ 的导数
>> diff(u(x)+v(x))
input> u[x]+v[x]
diff> u'[x]*1+v'[x]*1
out> u'(x)*1+v'(x)*1
out>
------------------------
2. 求 $u(x)-v(x)$ 的导数
>> diff(u(x)-v(x))
input> u[x]-v[x]
diff> u'[x]*1-v'[x]*1
out> u'(x)*1-v'(x)*1
out>
------------------------
3. 求 $u(x)*v(x)$ 的导数
>> diff(u(x)*v(x))
input> u[x]*v[x]
diff> u[x]*v'[x]*1+u'[x]*1*v[x]
out> u(x)*v'(x)*1+u'(x)*1*v(x)
out>
------------------------
4. 求 $u(x)/v(x)$ 的导数
>> diff(u(x)/v(x))
input> u[x]/v[x]
diff> {u'[x]*1*v[x]-u[x]*v'[x]*1}/(v[x]*v[x])
out> (u'(x)*1*v(x)-u(x)*v'(x)*1)/(v(x)*v(x))
out>
------------------------
例: 求 $y=2^x+2\sqrt{x}-\cos x+e^2$ 的导数.
>> diff(2^x+2*x^0.5-cos(x)+e^2)
Fraction Mode> my_string = 0.5,
EvalForPolynModeMulti> (2)*(x^0.5)
Fraction Mode> my_string = 2,
EvalForPolynModeMulti> (2^x)+(2x^0.5)
Fraction Mode> my_string = 2,
EvalForPolynModeMulti> (2^x+2x^0.5)-()
Fraction Mode> my_string = 2,
目前有问题.
例: 设 $y=\ln\cos\sqrt{x}$, 求 $y'(x)$.
>> diff(ln(cos(x^0.5)))
Fraction Mode> my_string = 0.5,
input> ln[cos[x^0.5]]
diff> --sin[x^0.5]*x^0.5*0.5*1/x/cos[x^0.5]
out>
------------------------
这里出现了两个负号. 另外, $\sqrt{x}$ 的导数暂时不能用 diff(sqrt(x)) 完成, diff(x^(1/2)) 也不行.
例: 设 $y=2^{\sin\frac{1}{x}}$, 求 $y'(x)$.
>> diff(2^(sin(1/x)))
Fraction Mode> my_string = 0,1,x,1,^,*,-,1,+,
Fraction Mode> my_string = 1,
Fraction Mode> my_string = 0,1,-,
Fraction Mode> my_string = 1,
input> 2^sin[1/x]
diff> 2^sin[1/x]*cos[1/x]*1/(x*x)*ln[2
out> 2^sin(1/x)*cos(1/x)*1/(x*x)*ln(2
out>
------------------------
这里少了一个负号, 另外 ln[2 缺少右中括号.
