我遇到这个问题后在网上找到了答案,网上原文如下:
Question: DSolve returns true
Using Mathematica 7, I got a solution
1234 (* Commands 1*)Clear[x, y];DSolve[ y'[x] == x - y[x], y[x], x]{{y[x] -> -1 + x + E^-x C[1]}}The only time I was able to reproduce the “DSolve[True….” message was when I had the sequence of commands as follows,
123 Clear[x, y];y'[x] = x - y[x];DSolve[y'[x] == x - y[x], y[x], x]What’s happening is that y'[x] is known to be x- y[x], and the DSolve is doing a compare of y-y[x] == y-y[x], returning True. Then it can’t solve True for y[x] in x, resulting in the question being returned.
Would you try exiting the kernel, restart fresh, and re-typing (* commands 1*) only.
(内容出自 Wolfram Community http://community.wolfram.com/groups/-/m/t/332674)
意思就是,在DSolve解方程时,已事先给出了 y‘[x] 解析表达式,后来又来 y'[x] == x – y[x] 后,相当于在这里比较真假,因此返回 True。
解决办法:删去事先给出的f[x]表达式,清理内存,或者关掉从头重新计算,建议采用后一种方法,比较快速稳妥。