来个老哥抬一手~
mathematica吧
全部回复
仅看楼主
level 3
哦咯哇我 楼主
如图我对这个函数的幅角求导,代入一个数值为什么求出了个复数值啊,实函数求导应该是实数啊[疑问]。声明了一下x是实数后好像也不行。
f[x_] := Arg[(-(x - 1)^2 + 4 (4 x^3 - 3 x^2 - x^4))/((x - 1)^2 +
4 (4 x^3 - 3 x^2 - x^4) - 4*I*(x^3 - 3 x^2 + 2 x))]
f'[5]
这是程序,我觉得可能是程序表达的问题,那么该怎么去写这个程序呢?新手上路,老哥请指点[呼~]
2019年04月24日 07点04分 1
level 7
你仔细看看你代码里有没有I
2019年04月27日 11点04分 2
有的啊[小乖]
2019年04月27日 17点04分
@哦咯哇我 函数里有没有I
2019年04月27日 22点04分
@真心不卡 下面分母不是有I么→_→
2019年04月30日 04点04分
@哦咯哇我 那这是个p的实函数啊
2019年04月30日 09点04分
level 3
可能是 f' 在求导的时候用到的 Derivative 函数把 f 看做是一个复函数了,对这个我也没有什么办法,不过 f'[5] 倒是可以直接用导数的定义借用 Limit 求出来
Limit[(f[x + d] - f[x])/d, d -> 0]
1117/10504
2019年04月28日 07点04分 3
可我并不是想求f5😂,我是想求整个函数图像,咋办啊
2019年04月30日 05点04分
可我并不是想求f5😂,我是想求整个函数图像,咋办啊
2019年04月30日 05点04分
level 1
我也觉得用Table根据导数的定义可以算
角度和导数分别是蓝和紫[乖]
2019年04月30日 10点04分 4
哎 图怎么没了
2019年04月30日 10点04分
level 1
2019年04月30日 10点04分 5
level 14
我还想了半天幅角函数是不是解析函数...突然意识到你这个是要弄波特图之类的东西吧。
可以试试这样,预先把Arg展开,就不会遇到复数的问题了
f[x_]=ComplexExpand[Arg[(-(x-1)^2+4 (4 x^3-3 x^2-x^4))/((x-1)^2+4 (4 x^3-3 x^2-x^4)-4*I*(x^3-3 x^2+2 x))],TargetFunctions->{Re,Im}]
f'[5]
2019年04月30日 14点04分 6
level 14
至于你这里问题发生的原因在于:
1. Mma总是假设链式求导法则是有效的,但这里遇到的Arg本身是一个
不可导的函数,链导法则是不成立的。这一点是一个非常常见的坑。
2. 然后mma的数值导数设计的也欠合理,在遇到符号求导失效的情况时,mma在计算函数导数时会利用其沿着
实轴方向的变化率来近似求导(事实上Arg沿复平面不同方向的变化率通常不相等),而Arg本身总是实数,这样一来得到的Arg'[...]的结果就总是一个实数,然而前面根据链导法则乘出的那一坨又是个复数,自然得到的最终结果也是复数。
不过利用这第二点也可以给出这个问题的另一种解法:因为你这里就是要求f沿实轴方向的导数,所以我们不妨利用数值导数始终沿实轴发生这一特性,先从f上就避免符号计算引入错误的链导法则,然后直接让mma对f进行数值求导,于是可以这么写:
Clear[f]
f[x_?NumericQ]:=Arg[(-(x-1)^2+4 (4 x^3-3 x^2-x^4))/((x-1)^2+4 (4 x^3-3 x^2-x^4)-4*I*(x^3-3 x^2+2 x))]
f'[5.]
如果只需要近似的数值值得话,同样可以解决问题。
2019年04月30日 14点04分 7
1