SimWe仿真论坛's Archiver

weitong 发表于 2008-6-20 13:02

用参数方程或隐函数拟合数据

要对一组x,y数据进行拟合,拟合方程是如下参数方程形式
x=f(L),
y=g(L),
解不出来显示形式y=y(x)或x=x(L).

请问如何用1stOpt或任何其他工具来做拟合。

s,a1,a2,a3,b1,b2,b3是待定参数。

[[i] 本帖最后由 weitong 于 2008-6-25 10:26 编辑 [/i]]

shamohu 发表于 2008-6-21 18:22

1stOpt有个命令:ParVariable,可以专门处理这种缺失中间变量的问题。

weitong 发表于 2008-6-22 05:46

请具体举例说明。多谢。

shamohu 发表于 2008-6-23 16:23

你的两个公式左边都是y,其中一个应该是x吧?
下面是个实例,需与SharedModel结合使用(老版本不敢担保能正确运行):

Parameter R ,B,x0,y0;
ParVariable t;
Variable x, y;
SharedModel;
Function x = R*(cos(t)+(t-B)*sin(t))+x0;
Function y = R*(sin(t)-(t-b)*cos(t))+y0;
Data;
15.5910        86.2142
24.6601        83.7114
33.3732        80.2618
49.3445        70.7216
62.7992        58.0891
68.3962        50.8058
73.1584        42.9946
79.9955        26.1718
83.0531        8.4225

weitong 发表于 2008-6-25 10:22

不好意思,第二个是x。

多谢。我试试。

weitong 发表于 2008-6-25 11:22

迭代数: 16
计算用时(时:分:秒:微秒): 00:00:01:172
优化算法: 麦夸特法(Levenberg-Marquardt) + 通用全局优化法
计算结束原因: 达到收敛判定标准
均方差(RMSE): 24.4851332036679
残差平方和(SSE): 10791.3914640244
相关系数(R): 0.914755795566993
相关系数之平方(R^2): 0.836778165523402
决定系数(DC): 0.836778165523402
F统计(F-Statistic): 1

参数                  最佳估算
--------------------        -------------
t                  2.73169953009845
r                  2.50317497875691
b                  0.724030952332493
x0                 54.7787726064432
y0                 50.7701875200851

====== 输出结果 =====

文件:Data file - 1
No        实测x        计算x        实测y        计算y
1        15.591        54.4856888883948        86.2142        56.3769777773365
2        24.6601        54.4856888883948        83.7114        56.3769777773365
3        33.3732        54.4856888883948        80.2618        56.3769777773365
4        49.3445        54.4856888883948        70.7216        56.3769777773365
5        62.7992        54.4856888883948        58.0891        56.3769777773365
6        68.3962        54.4856888883948        50.8058        56.3769777773365
7        73.1584        54.4856888883948        42.9946        56.3769777773365
8        79.9955        54.4856888883948        26.1718        56.3769777773365
9        83.0531        54.4856888883948        8.4225        56.3769777773365

shamohu 发表于 2008-6-25 11:33

不知你用的哪个版本?是否支持ParVariable和SharedModel?
下面是例子的结果:

均方差(RMSE): 1.34537356270244E-5
残差平方和(SSE): 3.2580540417936E-9
相关系数(R): 0.999999999999975
相关系数之平方(R^2): 0.999999999999951
决定系数(DC): 0.999999999999951
F统计(F-Statistic): -2008242960984.38

参数                  最佳估算
--------------------        -------------
r                  3.1995227671986
b                  -24.4385000174272
x0                 -0.00032965248461091
y0                 0.000374652430465203
t0                 2.92615423123336
t1                 2.81843505829979
t2                 2.71071459521477
t3                 2.49527589843761
t4                 2.27983592536782
t5                 2.17211673605045
t6                 2.0643969924754
t7                 1.84895788756821
t8                 1.6335204748713

====== 输出结果 =====

文件:Data file - 1
No        实测x        计算x        实测y        计算y
1        15.591        15.5909970736633        86.2142        86.2141866252252
2        24.6601        24.6601113317204        83.7114        83.7114338348863
3        33.3732        33.373187219426        80.2618        80.2617721959986
4        49.3445        49.3445110215649        70.7216        70.7216146089185
5        62.7992        62.7991966119381        58.0891        58.0890970931054
6        68.3962        68.396185457749        50.8058        50.8057900225526
7        73.1584        73.1584050648767        42.9946        42.994602724725
8        79.9955        79.9955112434135        26.1718        26.1718032105108
9        83.0531        83.0530949757003        8.4225        8.42249968428047

weitong 发表于 2008-6-25 11:50

我用的是2.0版本。正式注册版。我看它里面的函数有 sharemodel,还有一个VarPar,不知和你的ParVariable是否一样。

[[i] 本帖最后由 weitong 于 2008-6-25 11:55 编辑 [/i]]

页: [1]
 

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.