如何在Mathematica中实现函数的非等间隔求值并生成对应表格?
生成非等间隔/对数间隔的函数值表格(Mathematica)
没问题,在Mathematica里生成非等间隔的函数值表格其实很灵活,有几种常用的方法,我给你一一说明:
方法1:直接使用自定义的x取值列表
如果你已经明确知道x的具体取值(比如你提到的[1,1.2,2,3,6,10]),最简单的方式就是把这个列表直接传入Table,或者用更简洁的Map操作(/@符号):
# 先定义示例函数(替换成你的f1[x]即可) f1[x_] := x^2; # 方式1:用Table生成 d1 = Table[f1[x], {x, {1, 1.2, 2, 3, 6, 10}}]; (* 输出结果:{1, 1.44, 4, 9, 36, 100} *) # 方式2:用Map操作(更简洁高效) d1 = f1 /@ {1, 1.2, 2, 3, 6, 10};
方法2:生成对数间隔的序列
如果需要对数均匀分布的x值,Mathematica内置了LogSpace函数,专门用来生成对数间隔的数值序列。比如在1到10之间生成5个对数间隔的点:
# 生成1到10之间的5个10进制对数间隔点 xVals = LogSpace[Log10[1], Log10[10], 5]; (* 输出结果:{1, 10^(1/4), 10^(1/2), 10^(3/4), 10},约等于 {1, 1.778, 3.162, 5.623, 10} *) # 生成对应的函数值表格 d1 = f1 /@ xVals;
如果需要自然对数间隔,只需把Log10换成Log即可:
xVals = LogSpace[Log[1], Log[10], 5];
方法3:自定义非线性间隔规则
如果需要更灵活的非线性间隔(比如按平方、指数等规律分布),可以手动生成符合规则的x序列。比如想要x从1到10,按二次曲线增长的间隔:
# 生成6个点,从1到10,按二次比例增长 xVals = Table[1 + 9*(t/5)^2, {t, 0, 5}]; (* 输出结果:{1, 1.36, 2.44, 4.24, 6.76, 10} *) # 生成函数值表格 d1 = f1 /@ xVals;
你可以根据需求修改生成xVals的表达式,比如用指数函数生成指数增长的间隔:
xVals = Table[1 + 9*(Exp[t/5]-1)/(Exp[1]-1), {t, 0, 5}];
内容的提问来源于stack exchange,提问作者Vishal Parmar
相关产品推荐
相关产品推荐

