公告:1)网站程序升级:Q2A升级到1.8.6,Wordpress升级到5.7.2
2)修复了头像加载慢与提交问题反应慢等问题
2021-06-16

欢迎来到 Mathematica 问答社区

提问时请贴上文本代码

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

被禁止的话题:广告破解

请阅读:《提问的智慧》

备用域名:mma.ooo

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

社区建议QQ群:365716997

分类

+3 投票
767 浏览

我是高中生,今天刚刚接触 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.1k 分)
修改于 用户:xzczd
...