24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1035  |  回复: 4

青沙山

木虫 (小有名气)

[求助] Mathematica中含分段函数的方程组求解出表达式

定义了一个分段函数,然后又定义了两个含此分段函数的函数,要通过 后两个函数的定点的函数值求出变量,求不出来呢,为什么?
而人工对分段函数的值进行判断后代入,可求解,有什么办法能直接让电脑求出解?求指点

详见下图,黑框部分为人工将分段函数求解后代入时的求解过程

Mathematica中含分段函数的方程组求解出表达式
分段函数的求解.png

代码如下:
f[x_] := x*Boole[x > 0]

fx[x_, i_] := -qx*f[x] + \!\(
\*UnderoverscriptBox[\(\[Sum]\), \(u = 1\), \(i\)]\((
\*SubscriptBox[\(rx\), \(u\)]*
\*SuperscriptBox[\(f[x -
\*UnderoverscriptBox[\(\[Sum]\), \(v = 1\), \(u\)]
\*SubscriptBox[\(lx\), \(v\)]]\), \(0\)])\)\)

mx[x_, i_] := -(qx/2)*f[x]^2 + \!\(
\*UnderoverscriptBox[\(\[Sum]\), \(u = 1\), \(i\)]\((
\*SubscriptBox[\(rx\), \(u\)]*
\*SuperscriptBox[\(f[x -
\*UnderoverscriptBox[\(\[Sum]\), \(v = 1\), \(u\)]
\*SubscriptBox[\(lx\), \(v\)]]\), \(1\)])\)\)

Solve[{fx[lx, 2] == 0, mx[lx, 2] == 0, lx > 0, Subscript[lx, 1] > 0,
  Subscript[lx, 2] > 0,
  lx > Subscript[lx, 1] + Subscript[lx, 2]}, {Subscript[rx, 1],
  Subscript[rx, 2]}]

分段函数人工代入后的代码:
Solve[{-lx qx + Subscript[rx, 1] + Subscript[rx, 2] ==
   0, -(1/2) lx^2 qx + (lx - Subscript[lx, 1]) Subscript[rx,
     1] + (lx - Subscript[lx, 1] - Subscript[lx, 2]) Subscript[rx,
     2] == 0}, {Subscript[rx, 1], Subscript[rx, 2]}]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xzczd

木虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
……分段函数不是这么定义的。总之你看看Piecewise的帮助。
小木虫Mathematica版块已毁(当然原本也不咋的),建议大家前往百度贴吧或Stackexchange。
2楼2016-01-02 23:19:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

青沙山

木虫 (小有名气)

引用回帖:
2楼: Originally posted by xzczd at 2016-01-02 23:19:23
……分段函数不是这么定义的。总之你看看Piecewise的帮助。

谢谢回复,分段函数即使用Piecewise定义,我所提出的问题还是存在。
分段函数无法对不等式条件进行判定并求出解吗?
Mathematica中含分段函数的方程组求解出表达式-1
123.png

3楼2016-01-03 14:09:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xzczd

木虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
青沙山: 金币+10, ★★★很有帮助 2016-01-04 09:52:04
该说是被你戳中了盲点吗……我还真的从来没思考过这个问题。总之Solve内的不等式条件似乎(至少现在还)没法穿过Piecewise内的条件,不过这个很容易变通,那就是,把不等式判据交给Simplify:
CODE:
Simplify[Solve[eqn, {Subscript[rx, 1], Subscript[rx, 2]}], {lx > 0, Subscript[lx, 1] > 0,
   Subscript[lx, 2] > 0, lx > Subscript[lx, 1] + Subscript[lx, 2]}]

小木虫Mathematica版块已毁(当然原本也不咋的),建议大家前往百度贴吧或Stackexchange。
4楼2016-01-04 00:59:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

青沙山

木虫 (小有名气)

引用回帖:
4楼: Originally posted by xzczd at 2016-01-04 00:59:15
该说是被你戳中了盲点吗……我还真的从来没思考过这个问题。总之Solve内的不等式条件似乎(至少现在还)没法穿过Piecewise内的条件,不过这个很容易变通,那就是,把不等式判据交给Simplify:
Simplify[Solve, {lx ...

谢谢!
把Simplify放到Solve内确实解决了这个问题。

Solve[Simplify[{fx[lx, 2] == 0, mx[lx, 2] == 0}, {lx > 0,
   Subscript[lx, 1] > 0, Subscript[lx, 2] > 0,
   lx > Subscript[lx, 1] + Subscript[lx, 2]}], {Subscript[rx, 1],
  Subscript[rx, 2]}]
5楼2016-01-04 09:50:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 青沙山 的主题更新
信息提示
请填处理意见