24小时热门版块排行榜    

CyRhmU.jpeg
南方科技大学公共卫生及应急管理学院2025级博士研究生招生报考通知
查看: 3274  |  回复: 10
本帖产生 1 个 程序强帖 ,点击这里进行查看

yangger

新虫 (初入文坛)

[求助] 急切求助用matlab曲线拟合色散方程

现在有如下色散方程:

y^2 =  A + B/(x^2-C) - D x^2   ----------------Eq. 1

其中A,B, C, D为待定系数,现在有(x,y)的一组实验值; 如何得到最佳的A、B、C、D


我的思路如下:

step1 通过四对(x_i,y_i) 得到 A,B,C,D 值,
step2 代入Eq.1 输入x实验值,得到y拟合值,
step3 判断y拟合值和y实验值差值,
step4 如果差值大于10^-4则调节A,B,C,D;
step5 用新的ABCD,返回到step2

现在遇到的问题是 1.不收敛
                 2. 调节过的A,B,C,D有时候使得Eq.1方程右边小于零

求助:要是用matlab如何处理,

[ Last edited by yangger on 2011-6-3 at 12:53 ]
回复此楼

» 本帖已获得的红花(最新10朵)

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

fd
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

dubo

金虫 (著名写手)

优秀版主

【答案】应助回帖

★ ★
余泽成(金币+2, 程序强帖+1): 谢谢参与应助! 2011-06-04 19:30:05
yangger(金币+3): 非常感谢~~@ 2011-06-17 19:02:33
或者你仿照这个代码改改
function y = fitme_diheral( c,phi )
% A1=c(1);
% k1=c(2);
% x1=c(3);
% kBT=443*8.3145/1000;
aa=c(1);
bb=c(2);
cc=c(3);
dd=c(4);
ee=c(5);
ff=c(6);
psi=(phi-pi);
% y=0.5*(f1*(1+cosx)+f2*(1-cos(2*x))+f3*(1+cos(3*x))+f4*(1-cos(4*x)));
y=aa-bb.*cos(psi)+cc.*(cos(psi)).^2-dd.*(cos(psi)).^3+ee.*(cos(psi)).^4-ff.*(cos(psi)).^5;
end



clear;
clc;
load diherals.txt;
data=diherals;
%%avge the theta<0 and theta>0
a=data(1:180,2);
b=data(361:-1:182,2);
avg=0.5*(a+b);
data(1:180,2)=avg;
data(361:-1:182,2)=avg;

p=[24.5156799887984,-1.90007004205358,-1.66217137679272,3.06265999012061,2.33333792446086,-2.48454162655902;];
% data(:,2)=acf(data(:,2));
data3=data;
data3(:,1)=data3(:,1)*pi/180;

for i=1:50
%     [p,res]=lsqcurvefit('dihe',p,data3(:,1),data3(:,2));
    [p,res]=lsqcurvefit('fitme_diheral',p,data3(:,1),data3(:,2));
    %注意修改函数名dihe
    plot(data3(:,1),data3(:,2),'ro');
    hold on
    plot(data3(:,1),fitme_diheral(p,data3(:,1)));
     %注意修改函数名dihe(p,data3(:,1)
end
5楼2011-06-04 14:39:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

smithjohn

金虫 (正式写手)

【答案】应助回帖


dubo(金币+1): 谢谢参与 2011-06-04 14:34:19
加上几十上百组数不就over了?
为什么要一个一个的加啊,就算验证的话也不用这样吧?
2楼2011-06-03 23:28:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

杨小胖

金虫 (正式写手)


dubo(金币+1): 谢谢参与 2011-06-04 14:34:31
你说的这step1到step4其实在matlab中直接用polyfit和polyval这个函数不就可以实现了吗?
而且step4其实就是误差棒。
你再找找help里面的例子吧。我现在电脑上没有相关的代码。
回头贴出来。
人生中最辉煌的不是功成名就的时候,而是在失败和挫折中看到希望并为之奋斗的日子
3楼2011-06-04 13:36:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dubo

金虫 (著名写手)

优秀版主

【答案】应助回帖


余泽成(金币+1): 谢谢参与应助! 2011-06-04 19:29:51
楼上我的很对,MATLAB直接就可以拟合的
要么你把数据贴上来,我给你拟合一下
4楼2011-06-04 14:39:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yangger

新虫 (初入文坛)

引用回帖:
Originally posted by smithjohn at 2011-06-03 23:28:10:
加上几十上百组数不就over了?
为什么要一个一个的加啊,就算验证的话也不用这样吧?

普通编程思路, 对matlab不是很熟的后果。。。。。。。。。。。。。
fd
6楼2011-06-17 19:15:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yangger

新虫 (初入文坛)

引用回帖:
Originally posted by dubo at 2011-06-04 14:39:52:
或者你仿照这个代码改改
function y = fitme_diheral( c,phi )
% A1=c(1);
% k1=c(2);
% x1=c(3);
% kBT=443*8.3145/1000;
aa=c(1);
bb=c(2);
cc=c(3);
dd=c(4);
ee=c(5);
ff=c(6);
psi=(phi-pi);
% ...

非常感谢,我试试
fd
7楼2011-06-17 19:16:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
送鲜花一朵
支持
8楼2011-06-21 10:10:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

rns521

金虫 (正式写手)

都是大牛啊

[ 发自手机版 http://muchong.com/3g ]
9楼2011-06-21 11:32:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

liang201101

铜虫 (小有名气)

引用回帖:
5楼: Originally posted by dubo at 2011-06-04 14:39:52
或者你仿照这个代码改改
function y = fitme_diheral( c,phi )
% A1=c(1);
% k1=c(2);
% x1=c(3);
% kBT=443*8.3145/1000;
aa=c(1);
bb=c(2);
cc=c(3);
dd=c(4);
ee=c(5);
ff=c(6);
psi=(phi-pi);
% y ...

你好,我有个相似的问题,希望大侠帮帮忙,非常感谢,一共有8组数据,abcd是自变量,F是因变量,需要利用这些数据用matlab编程拟合成一条曲线,得出一个含有abcd变量的F=f(abcd)函数,由于初学不知道该怎么入手,希望能有源代码程序,这样我比较好理解一点,非常感谢!拜托大侠!
           F              a                 b              c              d
          4              30               98           330            16   
          4              50               80           300            14
          6              70               85           300            14
          9              90               82           300            14
          9             130              61.9         300            14
          12            150              75           300            14
          16            182              90           300            14
          20            200             115           330            16
希望能做出自己的东西,加油!
10楼2013-05-23 21:44:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 yangger 的主题更新
信息提示
请填处理意见