折线方程再谈(点列法)
geogebra吧
全部回复
仅看楼主
level 11
本吧已经谈过关于折线或者多边形的方程问题,我们可以用如果语句分段给出折线方程,也可以用符号函数拼出方程,还可以从反演图形中提取折线方程,也可以仿反演计算出方程,甚至用曲线拼接法生成,有兴趣的可以搜一下本吧,这里先给出仿反演计算出折线方程,这是绝对值方程,相对来说方程不复杂,比较实用:
我是把上述代码做成了工具,输入项为l1,输出项为b,运算速度还可以。
本贴讨论的不是此法,而是另一种更为简单的方法,只是用这种方法生成的折线参数方程,不能像上边的那样可以给折线作切点。
先看上图,左边是一个多边形或者首尾点重合的折线,我们这里统一叫折线,生成代码如下:
A = (-1.90312, 0.50455)
B = (-1.40112, 1.07905)
C = (-0.54314, 0.84849)
D = (-0.29317, 0.35819)
E = (-0.77847, -0.46604)
F = (-1.76447, -0.18873)
l1 = {A, B, C, D, E, F, A}
f = 折线(l1)
l2 = 序列((i - 1, x(l1(i))), i, 1, 长度(l1))
l3 = 序列((i - 1, y(l1(i))), i, 1, 长度(l1))
l4 = 映射(直线(m, y = 0), m, l3)
l5 = 映射(直线(m, x = 0), m, l2)
我们将点列横坐标和纵坐标分别提取出来,根据点的个数,横坐标间隔为1,形成两个点列。
这两个点列是可以分别用函数表示的:
p(x) = 函数(合并({{0, 长度(l1) - 1}, x(l1)}))
q(x) = 函数(合并({{0, 长度(l1) - 1}, y(l1)}))
上边两条函数,就是我们需要的东西了:
b = 曲线(p(t), q(t), t, 0, 长度(l1) - 1)
这就是折线参数方程了,用了点列函数构成参数方程,它的图形与折线命令生成图形完全一样。
2021年02月23日 05点02分 1
level 11
上述处理方法,有时候可用于曲线拟合,如果我们规定不用样条曲线的情况下,设如下点:
A = (-1.64892, 0.61162)
B = (-1.1228, 1.13928)
C = (-0.50116, 0.92745)
D = (-0.31782, 0.29194)
E = (-0.72455, -0.40519)
F = (-1.43323, -0.84426)
l1 = {A, B, C, D, E, F}
我们对l1怎么拟合曲线呢?如果直接使用多项式函数或者多项式拟合,会是如下情况:
而我们想要的图形是如下样子:
这里规定不使用样条曲线,我们仿照上边的方法,将x和y分离出来,分别拟合出两条曲线:
l2 = 序列((i - 1, x(l1(i))), i, 1, 长度(l1))
l3 = 序列((i - 1, y(l1(i))), i, 1, 长度(l1))
r(x) = 多项式函数(l2)
s(x) = 多项式函数(l3)
把这两个曲线组合成一个参数曲线:
d = 曲线(r(t), s(t), t, 0, 长度(l1) - 1)
这两条曲就是上图兰色曲线的样子,基本满足我们要求,比较一下其与样条曲线的区别:
在曲线转弯比较平稳的情况下,这两条曲线是比较接近的。
2021年02月23日 07点02分 2
level 11
为什么纠结于折线参数方程呢?那是因为有的时候我们需要,如画两曲线之间的曲面:
l1 = {A, B, C, D, E, F}
p(x) = 函数(合并({{0, 长度(l1) - 1}, x(l1)}))
q(x) = 函数(合并({{0, 长度(l1) - 1}, y(l1)}))
b = 曲线(p(t), q(t), t, 0, 长度(l1) - 1)
a = 曲线(b((长度(l1) - 1) t), t, 0, 1)
G = (-3.10376, -0.74977)
H = (-2.67506, -1.16288)
c = 曲线((1 - u) G + u H, u, 0, 1)
k = 100
d = 曲面((1 - u / k) a(v / k) + u / k c(v / k), u, 0, k, v, 0, k)
l1 = {A, B, C, D, E, F, A}
a = 曲线(b((长度(l1) - 1) t), t, 0, 1)
I = (-1.10398, 0.84921, 3)
e = 曲面((1 - u / k) a(v / k) + u / k I, u, 0, k, v, 0, k)
2021年02月23日 15点02分 4
level 11
做成工具“折线点列方程”再试:
l6 = {A, B, C, D, E, F, A}
l7 = {G, H, I, J, G}
k = 67
c = 折线点列方程(l6)
d = 折线点列方程(l7)
e = 曲面((1 - u / k) c(v / k) + u / k d(v / k), u, 0, k, v, 0, k)
2021年02月24日 11点02分 5
level 1
请问请问大神们怎么对数拟合一组点列
2021年04月10日 06点04分 6
level 11
2021年04月10日 08点04分 7
1