已知N个点求渐开线方程参数
- 格式:doc
- 大小:63.50 KB
- 文档页数:13
已知N个点求渐开线方程参数?已知N个点,X: 15.5910 24.6601 33.3732 49.3445 62.7992 68.3962 73.1584 79.9955 83.0531Y: 86.2142 83.7114 80.2618 70.7216 58.0891 50.8058 42.9946 26.1718 8.4225渐开线方程:X=R*[COS(A)+(A-B)*SIN(A)]+X0Y=R*[SIN(A)-(A-B)*COS(A)]+Y0 注:A是自变量求渐开线方程参数R ,B,X0,Y0?本人做了好长时间没有计算出来,有没有高人能做出来!Re:已知N个点求渐开线方程参数?自变量A的数值在哪?Re:已知N个点求渐开线方程参数?自变量A是未知数,从方程中可知,自变量A是可以用消元法消去的,因此没有自变量A的数据!求各位高人好好想一想怎解?Re:已知N个点求渐开线方程参数?呵呵...我不是高人,只是来凑个热闹.想请教楼主,自变量A是如何通过消元法消去的,我怎么没有消掉啊?只是得到了这样一个东东,请问我的思路是错在哪里了呢?因为我想把参数方程里的参数A消去再做拟合,可是没有实现第一步的工作,所以烦请楼主解释一下,谢谢:Re:已知N个点求渐开线方程参数?你的计算是对的,但没有算完,可以将你计算的结果中的A提出,再代入渐开线方程中,得到一个没有A的方程(消去了A),但是公式太复杂,很难求解;在MATLAB中也不好用曲线拟合来计算,这个方法可能行不通,看大家有没有其他的算法?Re:已知N个点求渐开线方程参数?看看这组结果, A值一并找出:R: 3.19952274225784X0: -0.000329662962626779Y0: 0.000374675740275446B: -24.4385002236161A1: 2.92615423135071A2: 2.81843505839381A3: 2.7107145952849A4: 2.49527589847113A5: 2.27983592537613A6: 2.17211673604989A7: 2.06439699247056A8: 1.84895788756548A9: 1.63352047488433Re:已知N个点求渐开线方程参数?呵呵...让我猜猜,要么你是把A同样看成拟合参数求解!要么你是用origin求解的.我也想这么做,但是嫌麻烦,一直没有做,我还有两点疑问想请教shamohu,一是这个结果中A有多个值,但是根据摆线的参数方程,这个A应该是参数自变量,这样做会不会有问题呢?二是假设不管第一点,将A单纯看成一个待拟合的参数值,以上这么多的A都是最符合条件的吗,烦请老兄解释验证一下,无论是MATLAB还是origin软件均可.谢谢另外,从上次那个线性整数规划问题的求解时我就注意老兄你了,你作出的结果我用MATLAB解出来了(贴子上我只给了部分解,最大值我的解法比较麻烦),但没有你的流畅,我感觉好像你也不是用MATLAB解的,不知对否?Re:已知N个点求渐开线方程参数?将问题转化为函数优化,既求f的最小值。
A1至A9视为待求参数。
没错,既没用MATLAB也没用Origin答案还有一组:R: -3.19952276594517X0: -0.00032964545736056Y0: 0.000374658120480759B: -27.580092678896A1: -0.215438422271413A2: -0.323157595213907A3: -0.430878058308783A4: -0.646316755107809A5: -0.861756728201724A6: -0.96947591753094A7: -1.0771956611183A8: -1.29263476604836A9: -1.50807217876604Re:已知N个点求渐开线方程参数?shamohu的结果对了,你的水平太高了,请问shamohu,具体的算法能不能贴上来,让我们好好学一学这一类问题的解答方法!!!!!!Re:已知N个点求渐开线方程参数?设下悬赏,缉拿高手shamohu的答案!前面的是订金:D:D其实我也很想知道你的做法,别介意,上面只是个玩笑.因为上面你给了一个提示,参数方程合并为单一表达式我也想到了,但是你说待求参数A为9个,恕小弟驽钝,不知为何是9个,我猜测是转换原来的解向量空间到参数向量空间,至于两组解的问题我认为是您更换了寻优的搜索方向或者初值,不知是否如此?由于不知道具体的做法,恳请老兄给个思路,很期待您的答案.谢谢.=============================================================== ====================[color=red]想到了!——by bainhome[/color]建议版主给shamohu加分!!!!=============================================================== ======================[color=red]第一分已经加了,给出解答还有重赏:D------------by bainhome[/color]Re:已知N个点求渐开线方程参数?将问题转换成函数优化问题后,求解思路其实就很简单了,与一般的函数求优没任何两样。
在函数中,X与Y视为一维常量数组,因为维数为9,如果A视为一维参数,对应于X,Y,维数自然应为9。
R,B,X0,Y0为另外4个参数,既本函数求优时共13个参数。
这个方法还不是最佳的。
因为如果X,Y的维数非常大时,如1000,这时用上述方法将会有1004个参数需优化求得,正解会很难。
现有一方法可克服上述缺点,只是不知结果对否,因与前面给出的结果有点不同,且B值不是唯一的。
下面给出两组,大家检验一下正误。
一组:R 3.19954269986836B 0.694407460100277X0 -0.000316786712610136Y0 0.000358515403967372二组:R 3.19954425614575B 6.97760555916832X0 -0.000316175037841735Y0 0.00035671577139817Re:已知N个点求渐开线方程参数?shamohu 有两种方法来解,太利害了!!!我太佩服你了!!!我再给一组数据,以供查验方法!x:26.3899 24.8345 21.3284 18.1741 15.0294 3.844 -0.3803 -2.8163 -11.0011 -17.5832y:5.5099 15.3775 21.4514 24.8333 27.2583 31.4899 31.7977 31.6880 29.7671 26.2028再次希望能贴上来具体的算法和步骤??Re:已知N个点求渐开线方程参数?第一种方法应该讲的比较清楚了.第二种方法还不敢确定.第一种方法:一组:R: 3.90187185881426B: -4.2706363811564X0: 3.64685464896831Y0: 2.86753755627187a1: 1.51520826333279a2: 1.94490279391307a3: 2.22836635919769a4: 2.40856376988636a5: 2.55948180012787a6: 2.99795992038619a7: 3.14592188754961a8: 3.22970690730423a9: 3.5124985728316a10: 3.75578754458526二组:R: -3.90187193693554B: -1.12904359094162X0: 3.64685472033187Y0: 2.86753750731939a1: 4.65680091534744a2: 5.08649544715818a3: 5.3699590128758a4: 5.55015642373502a5: 5.70107445394626a6: 6.13955257391244a7: 6.28751454083754a8: 6.37129956040106a9: 6.65409122542962a10: 6.89738019662277第二种方法:R: 3.88733357180136B: 1.98678198325104X0: 3.6321353135977Y0: 2.87599071209853Re:已知N个点求渐开线方程参数?shamohu的确很厉害,欢迎今后多发贴!我对你的第一种解法给一些自己的理解不对之处请shamohu指正:在MATLAB中需要把多表达式转化为单一表达式才可以做优化及拟合(我说的是传统的单一目标优化),本式中这是第一个要考虑的,所以你采用的方法是将参数表达式合并,其实应该叫"和"并,然后代入九组已知数据.将等式左边的项移到右边,这样,理论上我们如果找到精确的几个参数,表达式应为零,但由于是优化(拟合)因此是寻找是残差最小的参数值,这样即把问题转化成为一个多元无约束函数的优化问题,这样用fminunc或者fminsearch命令大概都可以求解了,表达式在上面你也给了,只是比较麻烦,所以你才考虑了你的第二种解法(???^_^),也就是如果所给的数据维数太大,将同时面临两个问题,第一是输入太过麻烦,第二是解的向量空间太大,计算机无法求解.不知道你用的第二种方法是什么,如何脱离Ai 的维数困难,但我想由于参数方程形式给定,假如给出你所说的1000个数据点,有1000个A值,我会这样做,在其中均匀选点,比如相隔100个选一个点[1:100:...],按照你上面所说的方法求出几个参变量,用1000个数据点中的另外一些点回代,看残差,如果小于设定精度,都ok,大于的话说明搜索优化失败,再以本组数据作为已知数据重新按原方法求解.不知道是否可行,请shamohu指正.Re:已知N个点求渐开线方程参数?我的优化计算方法先建立函数文件,并保存为myfun.mfunction F = myfun(A)X=[15.5910 24.6601 33.3732 49.3445 62.7992 68.3962 73.1584 79.9955 83.0531];Y=[86.2142 83.7114 80.2618 70.7216 58.0891 50.8058 42.9946 26.1718 8.4225];k = 1:9;F=(A(10)*(cos(A(k))+(A(k)-A(11))*sin(A(k)))+A(12)-X(k))^2+(A(10)*(sin(A(k))+(A(k)-A(11))*cos( A(k)))+A(12)-X(k))^2然后调用优化程序:A0=[1 1 1 1 1 1 1 1 1 1 1 1];[A,resnorm] = lsqnonlin(@myfun,A0)但是结果出不来,请问shamohu是那个地方不对,还是思想不对??请多多指点!!!!我找的优化例子:Re:已知N个点求渐开线方程参数?我这有本电子版的matlab的数学手册,20.6M,不好上传,不知版主有没有,如想要,请告诉怎么传给你?=============================================================== ====================[color=blue]呵呵...谢谢你了,可是我自己手头的资料已经看不完了,资料对我来说不是太少而是太多,遗憾的是我现在一本都没有消化完,惭愧...不管怎样还是非常感谢你,资料大于1M的可以在FTP区申请上传,请yuan老大批准(我们的boss!^_^).----------------------by bainhome[/color]Re:已知N个点求渐开线方程参数?To: bainhome抽样取点,不失为一种方法,但以类似1%的频率取样,恐怕会严重失去真,效果不会太好。