文件名称:所示的抛物-python读取mat文件并转为csv文件的实例
文件大小:9.75MB
文件格式:PDF
更新时间:2024-06-29 17:47:49
算法
对这个问题,以另外一种更直观的方式来理解,就是函数 ( , )f s t 是如图 4.8 所示的抛物 面,若极值点在区域 1 中,那么最小值点一定落在 1s t 的平面上,平面 1s t 与抛物面 相交的横截面是一条抛物线,相当于把 1s t 代入函数 ( , )f s t 中,得到抛物线的方程式 (4.14),接下来的分析与上面介绍的一样。 区域 3 和区域 5 的处理方法与区域 1 类似,这里不再赘述。 如果 (s , ) c c t 在区域 2 内,则函数 ( , )f s t 与三角形第一个接触的阶层曲线可能边 0s 或者 在 1s t 上。 / '( , ) s f ds f s t 和 / '( , ) t f dt f s t 分别表示二次函数 ( , )f s t 在 s 和 t 方向上的偏 导数,如果 (d , ) '( , ), '( , ) 0x y s td f s t f s t ,则函数 ( , )f s t 在 ( , )s t 处,沿着 ( , )x yd d 方向上是递增 的,如果 (d , ) '( , ), '( , ) 0x y s td f s t f s t ,则函数 ( , )f s t 在位置 ( , )s t ,沿着 ( , )x yd d 方向上是递减 的。由于极值点落在区域 2 上,第一个与长方形相切的阶层曲线,只能在 0s 或者 1s t 上,所以函数 ( , )f s t 在点 (0,1)处,方向是 (1, 1) 和方向 (0, 1) 上的偏导数不可能都是负的,即 (1, 1) '(0,1), '(0,1) '(1,1) '(1,1)s t s tf f f f 和 (0, 1) '(0,1), '(0,1) '(1,1)s t tf f f 两个值不可能都 是负的。若 '(1,1) '(1,1) 0 s t f f ,则最小值出现在 1s t 上;否则,最小值出现在 0s 上。在 确定了最小值出现的直线,就可以把该直线方程,代入函数 ( , )f s t 中,消去一元,再对一维 的一元二次方程式进行分析,该方程式的形状是一个抛物线。例如,确定了最小值出现在直 线 0s 上,代入函数 ( , )f s t ,解得 2(0, ) ct 2f t et f ,该函数的极值点是 ˆ /t e c ,若 ˆ 0t , (0,0)f 取得最小值;若 ˆ 1t , (0,1)f 取得最小值;若 ˆ0 1t , ˆ(0, )f t 取得最小值。 区域 4 和区域 6 的处理方法与区域 2 类似,这里不再赘述。 算法伪码如下所示: 在三维空间上,计算点 P 到三角形 0 1 2 V VV 的距离,其中,三角形所在的平面是 , ( , , ), {0,1,2} i i i i V x y z i 。 1. 0 0 0 1 1 1 0 1, , , ( ), ( ), ( ) ( )a e e b e e c e e d e B P e e B P f B P B P ; 2. , , *s be cd t bd ae det ac b b ; 3. if s t det , then 4. if 0s , then 5. if 0t , then 6. //区域 4 7. if 0d , then 8. 0t ; 9. if d a , then 10. 1s ; 11. else 12. /s d a ; 13. end if; 14. else 15. 0s ; 16. if 0e , then 17. 0t ; 18. else if e c , then 19. 1t ; 20. else 21. /t e c 22. end if; 23. end if ;