讓我們來看看我們是否可以幫助您解決這個問題。
首先,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