24小时热门版块排行榜    

查看: 1873  |  回复: 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 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 基金啊基金 +3 longfie172 2026-08-20 3/150 2026-08-21 00:04 by wuchongjun
[基金申请] 科研孤儿太难了 +14 我4大白菜 2026-08-20 15/750 2026-08-20 22:33 by 袁向阳007
[基金申请] 让我中一个面上吧! +8 大萍1987 2026-08-20 10/500 2026-08-20 21:48 by 大萍1987
[基金申请] 言之凿凿,明天官网会通知放榜? +15 医学老男孩 2026-08-20 17/850 2026-08-20 20:35 by CaoLG
[基金申请] 时间戳又变了 +12 wuchongjun 2026-08-20 17/850 2026-08-20 20:05 by spzhao
[基金申请] 今天系统多次维护,明天很可能放榜! +10 zju2000 2026-08-16 11/550 2026-08-20 20:02 by cl479861084
[基金申请] 只有每年这种时候来逛逛小木虫 +21 yaoyewhu2008 2026-08-20 22/1100 2026-08-20 17:03 by yaoyewhu2008
[基金申请] 放榜前的不淡定 40+3 snowwithsea 2026-08-19 12/600 2026-08-20 15:56 by lfy8008
[基金申请] 重要消息,中午系统在维护 +11 yuleib84 2026-08-18 12/600 2026-08-20 11:09 by xskun
[基金申请] 今天基金会出结果吗?20260819 +14 kkkl_v 2026-08-19 15/750 2026-08-20 08:21 by sunzitan
[基金申请] 今天放榜没戏了吧 +4 yuleib84 2026-08-19 5/250 2026-08-19 19:52 by hhs666
[基金申请] 今天放榜吗? +14 布布和一二 2026-08-19 15/750 2026-08-19 18:07 by gltch
[基金申请] 朋友圈看到的 +6 wangzilk 2026-08-18 8/400 2026-08-19 10:55 by Haru815
[基金申请] 快农历七夕节了,轻松一下,男人悄悄话,女施主请不要进来。 +6 Tide man 2026-08-14 7/350 2026-08-19 09:56 by ZJTJZ
[基金申请] 明天放榜? +5 Shxjjxjkx 2026-08-18 5/250 2026-08-18 18:14 by -大大大大大-
[基金申请] 时间戳又变了8-15 +14 archvillain 2026-08-15 26/1300 2026-08-18 13:37 by phantomgost
[基金申请] 93BebMhtakh前后11位开头都是大写 +4 且听虎啸 2026-08-17 5/250 2026-08-18 00:49 by 蔡棒棒菂
[基金申请] 感觉是下周放榜了 +6 angus9576 2026-08-17 11/550 2026-08-17 23:57 by angus9576
[精细化工] 招聘 金属平磨液,抛光液研发工程师 +3 小天0311 2026-08-14 3/150 2026-08-16 07:31 by H9PLUS
[基金申请] 各位道友,我要去昆明玩几天,回来见。 +7 Tide man 2026-08-14 8/400 2026-08-15 01:11 by arzu_hma
信息提示
请填处理意见