关于最速曲线的介绍有

http://zhidao.baidu.com/s/daily/2014-04-21/1403015178.html

内容比较丰富,还比较好玩

最速曲线公式

理论解很久之前就已经有了,如下

我找了半天也没有找到这个理论解是如何求出来的方法,但是我找到了一篇怎样用数值方法求最速曲线的算法,这篇文章的题目是《应用斯涅尔公式求解最速下降曲线问题研究》,在百度文库中有。这个方法我觉得很有意思,就在matlab中实现了这个算法。

特别要注意的是文章中提到的,如果入射角大于90°时,要考虑全反射,也就是入射角从正变为负,下降变为上升。

Matlab代码如下

<span style="font-size:18px;">x0 = 10;
y0 = 10;syms x;
f = (1-cos(x)) / (x - sin(x)) - y0 / x0;
x = vpasolve(f);       %数值求解器
K = x0 / (x - sin(x));s = 0:0.01:x;
x = K*(s - sin(s));
y = K*(1 - cos(s));
plot(x,y, 'r-');
view([0,0,-1]);
hold on;
%-----------------------------------------上面是理论的结果-----------------------------------% 下面用数值方法求解最速曲线
etof = 1e-2;         %误差,精度为0.1
a0 = 0;        % 入射角的边值
a1 = pi/30;    %dex = 0.1;        %最大步长
dey = 0.1;while 1a_init = (a0 + a1) / 2;   % 入射角的初值a = a_init;dx = dex;   %起始步长dy = cot(a) * dx;while (dy > dey)dx = dx / 10;         %细化步长dy = cot(a) * dx;endx = dx;y = dy;while (x + dx <= x0)yt = y + cot(a) * dx;if (yt < 0) break;         %已久上升到初始高度,结束endif (sin(a) / sqrt(y) * sqrt(yt) >= 1)            % 考虑全反射a = -a; yt = y + cot(a) * dx;endat = asin(sin(a) / sqrt(y) * sqrt(yt));x = x + dx;y = yt;a = at;dy = cot(a) * dx;while (dy < dey / 10 && dx  < dex)             %适当放大步长dx = dx * 10;dy = cot(a) * dx;endendif (abs(y - y0) < etof && x + dx > x0)break;endif (x + dx <= x0 || y < y0)a1 = a_init;elsea0 = a_init;end
enda = (a0 + a1) / 2;scatter(0, 0, 'go');
dx = dex;
dy = cot(a) * dx;
while (dy > dey)dx = dx / 10;dy = cot(a) * dx;
end
scatter(dx, dy, 'go');
x = dx;
y = dy;
while (x + dx<= x0)yt = y + cot(a) * dx;if (sin(a) / sqrt(y) * sqrt(yt) >= 1)a = -a;yt = y + cot(a) * dx;endat = asin(sin(a) / sqrt(y) * sqrt(yt));x = x + dx;y = yt;a = at;scatter(x, y, 'go');dy = cot(a) * dx;while (dy < dey / 10 && dx < dex)dx = dx * 10;dy = cot(a) * dx;end
end</span>

效果如下

采用数值方法计算最速曲线相关推荐

  1. python 采用数值方法计算最速曲线

    原文:https://blog.csdn.net/WhoisPo/article/details/47149395

  2. R计算获取决策曲线数据(Decision Curve Analysis,DCA)并使用python进行可视化

    R计算获取决策曲线数据(Decision Curve Analysis,DCA)并使用python进行可视化 目录 R计算获取决策曲线数据(Decision Curve Analysis,DCA)并使 ...

  3. python 最速曲线

    关于最速曲线的介绍有 http://zhidao.baidu.com/s/daily/2014-04-21/1403015178.html 内容比较丰富,还比较好玩 最速曲线公式 理论解很久之前就已经 ...

  4. [team]开发中的“最速曲线”

    最速曲线是一个物理中的概念,也就是小球从左上到右下,最快的曲线是红色的这条,这个和我们直觉中的"两点之间直线最短"有点不一样: 当然其原理就是最速曲线是一个平滑,且能保证全程速度很 ...

  5. 采用递归方法计算x的n次方。

    采用递归方法计算x的n次方. **输入格式要求:"%d%d" 提示信息:"x=? n=?" **输出格式要求:"%d**%d=%d\n" 程 ...

  6. vegan稀释曲线 基因丰度_R语言 vegan包计算物种累计曲线

    vegan 包是进行群落数据分析最常用的R包,其中的 specaccum 函数用来计算物种的累计曲线 首先看下官方示例: library(vegan) data(BCI) sp1 plot(sp1, ...

  7. Origin计算多条曲线的峰面积

    背景介绍 前几天对一个自己造的化合物使用紫外(UV)进行全波长扫描,虽然波长是扫出来了,但是如何对每条曲线进行积分求峰的面积,以此进行下一步计算呢? 积分教程 下面是我们的一组数据,数据是从机器上直接 ...

  8. 详解scikit-learn计算ROC/AUC曲线

    ROC和AUC定义 ROC全称是"受试者工作特征"(Receiver Operating Characteristic).ROC曲线的面积就是AUC(Area Under the ...

  9. 哪些物联网应用最适合采用雾计算?

    有时在做出判断时真的是要靠自己,让别人为你指出方向是不可行的. 许多物联网系统所面临的情景与此相同.集中处理大量传感器数据会减慢决策,并增加带宽需求.而做出明智的决策最好靠近源头. 哪些决策应该靠近网 ...

  10. 绘制ROC 曲线 计算 AUC PR曲线(精准率 召回率)示例

    #一 ROC评价 及曲线  AUC的值   准确率 auc 的参数来自假阳率 真阳率,一般与 metrics.roc_curve配合使用,来自sklearn正规示例网站 >>> fp ...

最新文章

  1. Spring boot自动配置使用
  2. C++Windows下CONTAINING_RECORD宏的用法和详解
  3. firefox扩展开发(八) :控件激活
  4. 【Python笔记】使用 re 模块实现正则表达式操作
  5. 《Web漏洞防护》读书笔记——第6章,XXE防护
  6. JavaCC详解 绝对干货
  7. 忘记了Excel工作表保护密码的解决办法
  8. install -save 和 -save-dev区别
  9. 如何进行git ssh文件的配置
  10. ARM Linux 内核 panic 之cache 一致性 ——cci-400 cache一致互联
  11. Maven安装与配置详解、多镜像节点的配置
  12. redis常用命令手册大全 - 笔记
  13. 人脸性别识别文献阅读笔记(3)
  14. 浅谈信息化,数字化,元宇宙,未来IT行业的机遇
  15. 墨子号量子计算机原型时间,科学网—“墨子号”量子卫星实现安全时间传递
  16. Logstash filter grok正则的使用及介绍
  17. Linux下cuda9.1安装Pytorch和Torchvision|简记
  18. python计算sin37_怎样计算 sin1°·sin2°·sin3°· … ·sin89°?
  19. MQL4学习之MACD Sample解读
  20. 求助!如果想从事3D建模需要选择什么专业?

热门文章

  1. 一、Jquery入门(超详)
  2. 关于XCP标定CANape的界面安全会话DLL库
  3. rf 遍历列表_RF学习笔记
  4. 即时聊天:前端react+极光IM
  5. stm32 ov2640硬件软件笔记
  6. Vivado2017.4软件安装
  7. python 最准确的图片转文字软件_图片转文字软件哪个好用?免费的图片转文字软件...
  8. Clover 文件结构
  9. 顺丰快递如何凭收件人电话和单号批量查询物流信息
  10. Zcash下一次NU5升级——基于Halo 2