求助,自定义的判断函数,在表达式计算时的问题
mathematica吧
全部回复
仅看楼主
level 3
yb118 楼主
比如我自定义一个对数函数Ln,并且希望它因为自变量定义域问题报错,设计了一个If判断:
Ln[x_] := If[x <= 0, 0, Log[x]]
这对于数值计算,没有问题。但是对输入:
D[Ln[x], x],
这种类似微分运算,会带着If语句输出:
If[x <= 0, 0, 1/x]
如何让这个自定义函数正常参加表达式运算而不带有If?
谢谢各位指点。
2019年04月26日 04点04分 1
level 3
yb118 楼主
自己解决了,用了If Goto,贴出来给大家参考,应该可以解决所有函数的定义域错误。并且自定义函数可以进入表达式参与代数、微积分解析运算,不会带着一串If。
LnX[x_] := (If[x <= 0, Goto[T2], Goto[T1]];
Label[T1];
Return[Log[x]];
Label[T2]; Return[0];)
2019年04月26日 11点04分 2
level 7
分段函数想参与代数变换的用Piecewise
2019年04月29日 09点04分 3
谢谢你的办法,现在用if return解决的很好,关键是开始想不到return。return这个指令,只会使函数得到一个单一解析表达式
2019年04月29日 16点04分
吧务
level 15
……你加个?NumericQ不就完了吗。
还有,就如3楼所说,分段函数的定义应尽量使用Piecewise。
2019年05月04日 06点05分 4
多谢你的回答,不过我还希望能代数运算,而不是只能数值运算,请问你增加NumericQ定义的这个函数,可以在参与微积分运算,然后输出解析表达式吗?
2019年05月04日 07点05分
@yb118 ……你何不先试试?
2019年05月04日 07点05分
@xzcyr 见谅,手头没有电脑
2019年05月04日 08点05分
1