让我们来看看我们是否可以帮助您解决这个问题。
首先,Mathematica是关于大写和使用正确字符的FANATIC。做任何事情,甚至与Mathematica期望的有所不同,你会得到错误信息,你不会理解或不正确的结果,甚至什么都没有。
接下来,Reduce函数通常是解决代数问题的好方法。所以,试试这个:
Reduce[y == y0 + a/(1 + Exp[-(x - x0)/b]), x, Reals]
通知我用==
告诉数学的东西,左,右边那个是被认为同样的事情。这与Mathematica认为您的意思是将y0+a
的值保存在名为y
的变量中的y=y0+a
完全不同。并且我大写了Exp
,我用[
和]
代替了(
和)
围绕论点。所有这些都遵循Mathematica约定,所以你可以得到正确的答案。
如果你仔细输入所有的,然后按Shift-Enter,然后你应该得到一个复杂的答案:
(b != 0 && a == 0 && y0 == y) || (b != 0 && ((b != 0 && a < 0 && y < y0 < -a + y &&
x == x0 - b Log[(a - y + y0)/(y - y0)]) || (b != 0 && a > 0 && -a + y < y0 < y &&
x == x0 - b Log[(a - y + y0)/(y - y0)])))
这有很多的条件,有可能不会在你的情况适用。例如,注意b != 0
其中说如果你的分母不是零,你几乎肯定会认为你不会有零。因此,让我们使用Simplify
仅查看不会有零分母的情况。
Simplify[Reduce[y == y0 + a/(1 + Exp[-(x - x0)/b]), x, Reals], b != 0]
,如果你尝试,你应该得到一个稍微简单的答案:
(a == 0 && y == y0) || (x + b Log[(a - y + y0)/(y - y0)] == x0 &&
((y < y0 && a + y0 < y && a < 0) || (a > 0 && a + y0 > y && y > y0)))
如果你看一下刚才的第一部分,你看到(a == 0 && y == y0)
这是一个答案。你可能没有想过它,但如果你的零为a
那么你的“sigmoid”只是一个水平线y0
。 Mathematica并不认为你显然从来不是这个意思,它只是磨碎了。
第二部分更有趣x + b Log[(a - y + y0)/(y - y0)] == x0
如果你盯着那一点,你可能会发现它确实找到了你已经显示的解决方案,它只是移动了整个==的东西,如果你移动它们x == - b Log[(a - y + y0)/(y - y0)] + x0
。但是,为了解决这个问题,还有额外的一点是关于y
是否小于y0
或大于y0
以及a
是否小于0等等。所有这些都是细节,他的头脑里有代数的人可能只是跳过直到他们被迫真正看看细节。
所以,先尝试一些简单的问题。看看你能否让Reduce为真正简单的问题告诉你正确的答案。你试图获得一点信心,它可以给你明智的答案。您也可以购买或借用Mathematica的非常简单的教程介绍。 Mathematica的一些旧版本的入门书籍,比如“Applied Mathematica:Getting Started,Getting It Done”只有几美元+邮资。你甚至可以在你的图书馆找到一份副本。这些可以为您提供实例和介绍,这些介绍对您的入门可能非常有帮助。
其他提示,小心使用变量名称的资本C
,首都C
已经有一个Mathematica的含义,这不是你的想法。
要找到一个衍生
D[Log[-(c - C0 - a)/(c - C0)]*b + x0, c]
要找到一个组成
Integrate[Log[-(c - C0 - a)/(c - C0)]*b + x0, c]
运气好,还有很多东西需要学习
比尔,感谢million-这清楚地表明我在哪里犯了一个错误。你的帮助真的很感谢! – Jana