24小时热门版块排行榜    

查看: 1880  |  回复: 8

quan_zhang

银虫 (小有名气)

[交流] 【求助】matlab用lsqnonlin非线性拟合的问题【已解决】 已有1人参与

大家好啊,我有个一个利用matlab的最小二乘法来求解参数的问题,困扰了我好久了。
具体情况如下:我有一个函数f(x)=346/15975*sin(4*pi*x/3.195)*pi-3196/3195*sin(2*pi*x/3.195)*pi且x=[0,1],另外一个带参数的函数为


            
且x=[0,1],  a1+a2+a3=1,且a1,a2,a3=(0,1),我想用lsqnonlin来拟合。
我的做法如下:
1.先建立函数文件,并保存为myfunlin.m
function y=myfunlin(x,xdata)
xdata=[0    0.3195  0.639   0.9585  1.278   1.43775 1.5975  1.75725 1.917   2.2365  2.556   2.8755  3.195];
ydata=[0    -1.782446806    -2.948772499    -3.028762147    -1.911872775    -1.011104195    0   1.011104195 1.911872775 3.028762147 2.948772499 1.782446806 1E-15];
y=4.3688*((x(1)*(xdata-x(2)))./((xdata-x(2)).^2+x(3).^2)+(x(4))*(xdata-x(5))./((xdata-x(5)).^2+x(6).^2)+(1-x(1)-x(4))*(xdata-x(7))./((xdata-x(7)).^2+x(8).^2));

2.然后调用优化程序:
x0=[0.12  3.32  0.16  0.12  -0.13 0.17  0.16  1.2];
x=lsqnonlin('myfunlin',x0)
得到结果
  -1.4874    2.8738    0.9386   -1.7023    0.3343    0.9831    1.5173    2.0017此时ai的范围不能控制,那么应该如何控制ai的范围呢?

[ Last edited by nono2009 on 2010-10-31 at 07:24 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

change0618

铁杆木虫 (著名写手)

方丈大师

quan_zhang(金币+1): 2010-10-26 15:38:46
help lsqnonlin
2楼2010-10-26 13:52:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

quan_zhang

银虫 (小有名气)

引用回帖:
Originally posted by change0618 at 2010-10-26 13:52:48:
help lsqnonlin

什么意思啊?能具体点吗?
3楼2010-10-26 15:39:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

change0618

铁杆木虫 (著名写手)

方丈大师

quan_zhang(金币+1): 2010-10-27 09:15:46
quan_zhang(金币+1): 2010-10-27 09:16:08
X = LSQNONLIN(FUN,X0,LB,UB) defines a set of lower and upper bounds on
    the design variables, X, so that the solution is in the range LB <= X
    <= UB. Use empty matrices for LB and UB if no bounds exist. Set LB(i)
    = -Inf if X(i) is unbounded below; set UB(i) = Inf if X(i) is
    unbounded above.
4楼2010-10-26 17:40:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lidaxue

木虫 (正式写手)

之乎者也

quan_zhang(金币+2): 2010-10-27 09:16:03
quan_zhang(金币+2): 2010-10-27 21:15:11
function seqcurvefit11
clear all;
load seqdata;
beta0=[0.005 0.001];

lb=[0 0];ub=[inf inf];
[beta,resnorm,residual,exitflag,output,lambda,jacobian] = ...
    lsqnonlin(@seqfun,beta0,lb,ub,[],t,c);


function y = seqfun(beta,t,c)
ca=exp(-beta(1)*t);
cb=beta(1)/(beta(2)-beta(1))*(exp(-beta(1)*t)-exp(-beta(2)*t));
y=[ca-c(:,1) cb-c(:,2)];
楼主 依葫芦画瓢吧~
Comeon!
5楼2010-10-26 18:48:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

quan_zhang

银虫 (小有名气)

引用回帖:
Originally posted by lidaxue at 2010-10-26 18:48:56:
function seqcurvefit11
clear all;
load seqdata;
beta0=[0.005 0.001];

lb=[0 0];ub=[inf inf];
[beta,resnorm,residual,exitflag,output,lambda,jacobian] = ...
    lsqnonlin(@seqfun,beta0,lb,ub, ...

residual,exitflag,output,lambda,jacobian
该怎么定义啊
6楼2010-10-28 09:25:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

quan_zhang

银虫 (小有名气)

引用回帖:
Originally posted by lidaxue at 2010-10-26 18:48:56:
function seqcurvefit11
clear all;
load seqdata;
beta0=[0.005 0.001];

lb=[0 0];ub=[inf inf];
[beta,resnorm,residual,exitflag,output,lambda,jacobian] = ...
    lsqnonlin(@seqfun,beta0,lb,ub, ...

是不是要对t,c赋值啊,我输入出现 Undefined function or variable 't'.
7楼2010-10-28 09:43:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lidaxue

木虫 (正式写手)

之乎者也


nono2009(金币+1):鼓励应助 2010-10-28 14:02:08
quan_zhang(金币+3): 2010-10-30 15:01:21
引用回帖:
Originally posted by quan_zhang at 2010-10-28 09:43:51:

是不是要对t,c赋值啊,我输入出现 Undefined function or variable 't'.

晕  楼主没有理解我的意思啊,[]后面的t,c是传递的参数,这里只给你一个例子,让你根据自己的需要修改一下的
Comeon!
8楼2010-10-28 13:12:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

quan_zhang

银虫 (小有名气)

引用回帖:
Originally posted by lidaxue at 2010-10-28 13:12:05:

晕  楼主没有理解我的意思啊,[]后面的t,c是传递的参数,这里只给你一个例子,让你根据自己的需要修改一下的

谢谢你啊,我已经搞定了。
9楼2010-10-30 15:01:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 quan_zhang 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[硕博家园] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +3 v7Aev8ORQjin 2026-08-22 3/150 2026-08-23 20:58 by 0p9y1isJp2jM
[考研] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +3 DpSrDtM079iu 2026-08-22 3/150 2026-08-23 19:55 by lXgU0RvNTDC9
[博后之家] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +4 2JOx3r2CYEgw 2026-08-22 6/300 2026-08-23 19:34 by lXgU0RvNTDC9
[博后之家] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 2JOx3r2CYEgw 2026-08-22 6/300 2026-08-23 19:31 by lXgU0RvNTDC9
[考博] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +4 2JOx3r2CYEgw 2026-08-22 5/250 2026-08-23 19:22 by lXgU0RvNTDC9
[公派出国] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +3 2JOx3r2CYEgw 2026-08-22 4/200 2026-08-23 19:22 by lXgU0RvNTDC9
[论文投稿] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +3 2JOx3r2CYEgw 2026-08-21 8/400 2026-08-23 18:58 by lXgU0RvNTDC9
[论文投稿] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +4 2JOx3r2CYEgw 2026-08-21 9/450 2026-08-23 18:46 by lXgU0RvNTDC9
[硕博家园] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 2JOx3r2CYEgw 2026-08-21 6/300 2026-08-23 14:21 by KM5EcsNQRBPn
[教师之家] 跳槽后在研项目怎么办? +5 简单化xn 2026-08-22 10/500 2026-08-23 12:38 by 简单化xn
[基金申请] 2026国自然函评费到账 +15 羊腰板 2026-08-21 16/800 2026-08-23 10:45 by process2012
[硕博家园] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 2JOx3r2CYEgw 2026-08-21 9/450 2026-08-23 10:44 by IXZuIJ2Q7OVy
[基金申请] 今天放榜吗? +15 布布和一二 2026-08-19 16/800 2026-08-23 09:55 by 张春生
[考博] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +3 DpSrDtM079iu 2026-08-22 3/150 2026-08-23 00:55 by OEbVnUOu01ol
[基金申请] 93BebMhtakh前后11位开头都是大写 +7 且听虎啸 2026-08-17 8/400 2026-08-22 21:55 by 医学老男孩
[基金申请] 只有每年这种时候来逛逛小木虫 +24 yaoyewhu2008 2026-08-20 26/1300 2026-08-22 17:43 by kammury
[基金申请] 建议基金发布提前给出明确的时间点 +10 kulium 2026-08-21 13/650 2026-08-21 21:58 by alongwaytogo
[基金申请] 感觉是下周放榜了 +7 angus9576 2026-08-17 12/600 2026-08-21 13:38 by weiyin
[基金申请] 我面上完蛋了 +7 且听虎啸 2026-08-20 8/400 2026-08-21 12:31 by 酷酷墨镜
[基金申请] 时间戳变了,能看出什么问题? +18 基诺咪客 2026-08-17 23/1150 2026-08-20 17:19 by Godzela
信息提示
请填处理意见