delphi 解四参数方程(300)

  • 主题发起人 主题发起人 xiebaotong
  • 开始时间 开始时间
X

xiebaotong

Unregistered / Unconfirmed
GUEST, unregistred user!
给一定n组数据X Y0.10 49.91 0.13 49.78 0.18 49.48 0.24 48.79 0.32 47.22 0.42 43.90 0.56 37.69 0.75 28.42 1.00 18.36 1.33 10.60 1.77 6.05 2.36 3.80 3.15 2.78 4.20 2.33 5.59 2.14 7.46 2.06 9.94 2.03 13.25 2.01 17.66 2.00 23.54 2.00 31.38 2.00 41.82 2.00 55.75 2.00 74.32 2.00 99.07 2.00 132.05 2.00 176.03 2.00 234.65 2.00 312.78 2.00 416.94 2.00 555.78 2.00 740.86 2.00 987.56 2.00 1316.42 2.00 1754.79 2.00 2339.13 2.00 3118.07 2.00 求方程:y=(a-d)/(1+(x/c)^b)+d中的a,b,c,d
 
要是分不够,我再加。如分不能吸引你我可以给¥。
 
难度较大,估计没戏,结贴放分吧。
 
17.66 2.00 23.54 2.00 31.38 2.00 41.82 2.00 55.75 2.00 74.32 2.00 99.07 2.00 132.05 2.00 176.03 2.00 234.65 2.00 312.78 2.00 416.94 2.00 555.78 2.00 740.86 2.00 987.56 2.00 1316.42 2.00 1754.79 2.00 2339.13 2.00 3118.07 2.00 Y的极限值为2,(x/c)^b的极限值为0,所以2=a-d+d=a
a = 2;0.10 49.91 0.13 49.78 0.18 49.48 0.24 48.79 0.32 47.22 0.42 43.90 0.56 37.69 0.75 28.42 X越小,Y越接近50,X越小,(x/c)^b越大,因此 d=50;现在是2个参数的方程了,y=(2-50)/(1+(x/c)^b)+50,祝LZ好运
 
to smlabc:如果只有如下数据怎么办X Y0.13 49.78 0.18 49.48 0.24 48.79 0.32 47.22 0.42 43.90 0.56 37.69 0.75 28.42
 
没有高人吗?[:(]
 
再等一天,如无人能解就把所有分散尽。。。。。。再也不来了。。。。
 
这个可能就是求曲线方程,在google里搜了一下,有人说用用最小二乘法,还搜到一个下面的答案,但看不懂,数学不好。Best Answer - Chosen by Votersy=[(A-D)/(1+X/C)^B)] + Dy-D = (A-D)/(1+X/C)^B)(y-D)((1+X/C)^B) = (A-D)(1+X/C)^B) = (A-D)/(y-D)take root of B(1+X/C) = B root (A-D)/(y-D)X/C =[ B root (A-D)/(y-D) ]-1X = C * ( [ B root (A-D)/(y-D) ]-1 )
 
to Vsun:我要是数学好,也不在这里丢人了。。。。。但仍然要感谢你。
 
只有以上数据无法求解.另给出的第一个算法有缺陷问题下面给个稍微正规点的解法经变换:(a-y)/(y-d) = (x/c)^b 或 (y-d)/(a-y) = (c/x)^b设f1(y) = (a-y)/(y-d)
// f2(x) = (x/c)^b f1(y)=f2(x)
当y = a 时, f1(y) 恒等于 0,此时f2(x)=0.得到x=0
设f3(y) = (y-d)/(a-y)
// f4(x) = (c/x)^b f3(y)=f4(x)
当y = d 时, f3(y) 恒等于 0,此时f4(x)=0.得到x=无穷大
同样分析数据,得d=2. a=50
变换成两参数方程,带入数据可求的近似解 以上是b>0的情况,当b<0时 得d=50. a=2
变换成两参数方程,带入数据可求的近似解
 
用 matlab 非线性回归更方便些,你查一下 nlinfit 函数如果用Delphi自己写,可参考http://www.math.washington.edu/~reu/papers/current/mark/REU%20Final%20Paper.pdf
 
楼上正解很久前读研时做过类似题目啊
 
简化方程:y= a + (a-d) * (x^b) / (c^b)实际就是求解:y = a + t * (x^b) ---------- t = (a-d)/(c^b)目测也知道 a = 2再求解b和t即可
 
to MrMengyi:能不能给个完整的代码,现在问题是:y=a+t*(x^b)中的b不好解出来
 
先结贴吧!
 

Similar threads

后退
顶部