【发布时间】:2020-05-29 13:51:36
【问题描述】:
在尝试使用midpoint method to create geodesics on a surface,但我对迭代更新包含嵌入在 R3 中的表面上的点的矩阵所需的 Matlab 语法感到不满意,因此,由 3 行和 n 列组成,第一个给定的元素,比如说,A[:,1],最后一个元素,A[:,n]。
最初将在 XY 平面上沿一条线选择两个点。沿着穿过 A[:,1] 和 A[:,n] 的 XY 平面上的线段的多个点将使用函数 f(x,y) 投影到曲面上,因此我们最终会得到初始的第一行包含多个 X 轴坐标的矩阵;第二行,Y轴坐标;第三行,曲线在 f(x,y) 的每个点的高度。每列是一个点。
所以如果前两列是 A[:,1] 和 A[:,2],我想获得一个更新的矩阵,其中第一列不变,A[:,1],第二列列将是 A[:,1] 和 A[:,2] 的入口平均值。换句话说,列 (x) 的第一个条目将是第一列和第二列的第一个条目的平均值;第二个 (y) 和第三个 (z) 条目相同。在另一端,矩阵将以倒数第二列中的 A[:,n - 1] 和 A[:,n] 的平均值以及最后一列中的 A[:,n] 的平均值结束。
然后会进行最小化步骤,将每列投影到表面 f(x,y),然后再次开始相同的平均过程。
请注意,矩阵每走一步都会增长一列。
从逻辑上讲,这个过程将在函数的循环中。
我想问一下如何迭代地实现平均步骤,例如在第一步中会从
A =
0 2 1 4
1 3 3 2
1 2 2 2
到
A =
0 1 1.5 2.5 4
1 2 3 2.5 2
1 1.5 2 2 2
接受答案后,代码如下:
A = [0, 2, 1, 4; 1, 3, 3, 2; 1, 2, 2, 2]
A = [A(:,1), (A(:,1:end-1) + A(:,2:end))/2, A(:,end)]
【问题讨论】:
-
那么你的问题是什么?您是在要求别人从头开始为您编写代码吗?
标签: matlab matrix linear-algebra