公告:本站正式转型为非交互式静态网站!
转型:本站将通过笔记和博客的形式继续为大家服务,关于 Mathematica 问答服务请移步至QQ群:365716997
联系:如有问题请联系QQ群管理员,或发送邮件至:lixuan.xyz@qq.com。
感谢:最后非常感谢大家多年来的支持与帮助!
参考《互联网跟帖评论服务管理规定》《中华人民共和国网络安全法》《网络信息内容生态治理规定》《互联网用户账号信息管理规定》

—— 2022-11-27

欢迎来到 Mathematica 问答社区

提问时请贴上文本代码

语法高亮:在编辑器中点击

被禁止的话题:广告破解

请阅读:《提问的智慧》

备用域名:mma.ooo

支持LaTex数学公式
行内公式标识符:\$ 或“$\backslash ($”+“$\backslash )$”,
行间公式标识符:\$\$ 或 “$\backslash [$”+“$\backslash ]$”

社区建议QQ群:365716997

分类

+3 投票
1.7k 浏览

我是高中生,今天刚刚接触 Mathematica,我只用来画一些题目的函数图像。

现在有这样一个分段函数:

g[x_] := Piecewise[{{x^2, 0 < x <= 1}, {g[x - 1], x > 1}}]
(* 然后画图 *)
Plot[g[x], {x, 0, 7}]

问题 1:Mathematica 的函数图像是不是都是必须从左到右连续的?事实上这个函数的竖直的线条应该不存在。

然后,定义另一个简单的对数函数:

h[x_] := 0.502*Log[2, x]

问题 2:我该怎么求 h(x) 和 g(x) 的交点(个数,我只需要知道交点个数)?

问题 2.1:我用 

NSolve[g[x] == h[x], x]

却是这个样子,如图:

问题 2.2:

Solve[g[x] == h[x], x]

直接导致 Mathematica 崩溃,如图:

问题 2.2.1:奇怪,我刚刚新建了一个 .nb 文件,重新按照顺序执行以上代码,发现没有崩溃,但是依然没有解出来,如图:

分类:函数 | 用户: Mathematica (26 分)
修改于 用户:xzczd

1个回答

+1 投票

1. 用Exclusions:

Plot[g[x], {x, 0, 7}, Exclusions -> Range[6]]

然后,你这种递归式的周期函数定义方式其实造成了麻烦,因为这种定义方法不够“代数”,实际上,如果我们这样定义这个函数:

f[x_] = (1 - Mod[-x, 1])^2

那么Plot不用手动Exclusions也可以分析出正确的断点。

2. 要用Solve解出交点,就需要让函数更加“代数”一些:

i[x_] = PiecewiseExpand[f[x], 0 <= x <= 7]
Solve[{0 <= x <= 7, i[x] == h[x]}, x]
(*{{x -> 1.57262}, {x -> 2.87447}}*)

顺便g[x]其实也可以用PiecewiseExpand来展开,只是会多一点警告。

用户: xzczd (2.2k 分)
修改于 用户:xzczd
...