24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1080  |  回复: 4
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

liuyalei820

金虫 (正式写手)

[交流] 【求助】求助,拟合参数,急。。。。已有3人参与

x=[0.8,1.0,1.2,1.6,2.0];
y=[3.03,1.55,0.9,0.38,0.19];
y=A*(1-w/(R*x))*exp(-R*x)+B*(1-w/(g*x))*exp(-g*x)+w*2.714/x;
参数为A,B,R,w,g
求参数值。
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

anyuezhiji

银虫 (正式写手)

星空行者

liuyalei820(金币+2): 2010-07-06 16:19:06
还是多提供点数据才好拟合吧
5个参数只提供了5个点
拟合出来的结果就算误差为0也不会怎么可信呀
除非能保证5个点都无误差

比如直线y=ax+b
只提供两个点的话根本就谈不上拟合
暗月下没有留下风的痕迹,但它已经寂然飘逝。。By<暗月之寂>:tiger38:
5楼2010-07-05 17:41:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 5 个回答

lijinfeng042

木虫 (小有名气)

Matlab

★ ★
liuyalei820(金币+1):用MATLAB拟合出来的模型在实际说明上有错误,不知道能否直接解出五个参数呢???? 2010-06-17 15:16:47
adu886886(金币+2):辛苦了 2010-06-17 15:27:08
zzuwangshilei:积极参与 2010-06-17 21:16:17
引用回帖:
Originally posted by liuyalei820 at 2010-06-17 14:24:08:
x=[0.8,1.0,1.2,1.6,2.0];
y=[3.03,1.55,0.9,0.38,0.19];
y=A*(1-w/(R*x))*exp(-R*x)+B*(1-w/(g*x))*exp(-g*x)+w*2.714/x;
参数为A,B,R,w,g
求参数值。

直接也可以

General model:
     f(x) = A*(1-w/(R*x))*exp(-R*x)+B*(1-w/(g*x))*exp(-g*x)+w*2.714/x
Coefficients:
       A =   -0.002875
       B =      -2.971
       R =   -0.001061
       g =      0.8612
       w =       2.019

Goodness of fit:
  SSE: 0.0641
  R-square: 0.9878
工作了,偶尔会上来~可以关注新浪微博 @云是风的梦_Matlab
2楼2010-06-17 14:57:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijinfeng042

木虫 (小有名气)

Matlab

★ ★ ★
robert2020(金币+2):辛苦了! 2010-06-17 16:45:43
zzuwangshilei(金币+1):多谢专家参与,辛苦了 2010-06-17 21:18:58
liuyalei820(金币+5): 2010-06-26 15:30:51
引用回帖:
Originally posted by lijinfeng042 at 2010-06-17 14:57:41:

直接也可以

General model:
     f(x) = A*(1-w/(R*x))*exp(-R*x)+B*(1-w/(g*x))*exp(-g*x)+w*2.714/x
Coefficients:
       A =   -0.002875
       B =      -2.971
       R =   -0.001061
        ...

再次看了 确实误差比较大啊 呵呵 那个就用最小二乘吧
结果
                 lijinfeng042                    2010-06-17 16:09:32
          0.8            1          1.2          1.6            2
y =
         3.03         1.55          0.9         0.38         0.19
f =
     Inline function:
     f(b,x) = b(:,1).*(1-b(:,2)./(b(:,3)*x)).*exp(-b(:,3).*x)+b(:,4).*(1-b(:,2)./(b(:,5).*x)).*exp(-b(:,5).*x)+b(:,2).*2.714./x
b =
     1     1     1     1     1

Solver stopped prematurely.

lsqcurvefit stopped because it exceeded the function evaluation limit,
options.MaxFunEvals = 500 (the default value).

beta =
       17.166     0.062191       3.1244       17.166       3.1244
resnorm =
     0.019414
residual =
    -0.069605     0.098142     0.035281    -0.045825    -0.039906
exitflag =
     0
b =
       17.166     0.062191       3.1244       17.166       3.1244
y =
6081198861965555/(36028797018963968*x) - (2706592770445987042675673052433/(7921178145673128892318584143872*x) - 4831739889273179/281474976710656)/exp((879427435948391*x)/281474976710656) - (902198920644967483581745009749/(2640392871957154958811273887744*x) - 4831747014776661/281474976710656)/exp((7035419905207143*x)/2251799813685248)

程序
CODE:
function tu
x=[0.8,1.0,1.2,1.6,2.0]
y=[3.03,1.55,0.9,0.38,0.19]
plot(x,y,'o')
axis([0 2 0 1])
f=inline('b(:,1).*(1-b(:,2)./(b(:,3)*x)).*exp(-b(:,3).*x)+b(:,4).*(1-b(:,2)./(b(:,5).*x)).*exp(-b(:,5).*x)+b(:,2).*2.714./x','b','x')
b=ones(1,5)
[beta,resnorm,residual,exitflag]=lsqcurvefit(f,b,x,y)
syms b x
b=beta
y=subs(b(:,1).*(1-b(:,2)./(b(:,3)*x)).*exp(-b(:,3).*x)+b(:,4).*(1-b(:,2)./(b(:,5).*x)).*exp(-b(:,5).*x)+b(:,2).*2.714./x)
hold on
ezplot(y,[0 2])

工作了,偶尔会上来~可以关注新浪微博 @云是风的梦_Matlab
3楼2010-06-17 16:15:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wlx0914

金虫 (小有名气)

liuyalei820(金币+1): 2010-07-03 17:00:22
可以用fminsearch函数求
4楼2010-07-01 21:32:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复(可上传附件)
信息提示
请填处理意见