24小时热门版块排行榜    

CyRhmU.jpeg
查看: 646  |  回复: 11
当前主题已经存档。
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

hht666

金虫 (正式写手)

[交流] 【求助】用matlab中的高斯牛顿法或单纯形法进行模型嵌合

各位高手, 我最近碰到一问题,需要分析人体内的药物含量随时间变化,需要用上述方法进行模型嵌合, 只知道matlab 软件可以计算,想自己来时间不够,只能求助各位高手。
t        X
0.5        29701602
1        28952373
2        27578765
3        26202931
4        24616875
5        23031635
6        21218045
7        19869353
8        18343096
9        16833890
10        15504818
11        14335500
12        13110579
13        12048990
14        10987643
模型公式如下:X=A×e∧(-a×t)+B× e∧(-b×t)+C×e∧(-c×t)+D× e∧(-d×t)
  A,a, B,b,C,c, D,d 需满足如下条件。
A+B+C+D=29792400, A×a+B×b+C×c+D×d=0,
a,b,,c,d 均大于零,且 b>a,b>c,b>d;
请高手解决,30金币敬请笑纳。

[ Last edited by 点点风 on 2009-3-21 at 12:44 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hht666

金虫 (正式写手)

这次结果是满足两大条件,但新问题又来了,根据我对模型的推导,当b>c>a>d时,A>0, B<0, C<0,D>0.而且b,c 两值太大,最多也就在几百左右,是否还有其他解.
11楼2009-03-21 19:04:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 12 个回答

fspdlh

金虫 (正式写手)

★ ★ ★ ★ ★
hht666(金币+5,VIP+0):多谢啊.有一个条件不满足,请帮忙再算算 3-21 12:02
以下是我用非线性拟合做的,结果与几个量的初值关系比较大,你能不能说一下各值大约在什么范围内啊,或者数据再多些,因为待定参数太多,相对来说数据有点少
abcd =

    0.0631    0.9828    0.0593    0.0650


ABCD =

  1.0e+009 *

    9.3546   -0.0019   -3.1108   -6.2121


r =

    0.9999



abcd =

    0.0949  184.3219   37.3425    0.2386


ABCD =

  1.0e+007 *

    4.3306    0.0086   -0.0452   -1.3148


r =

    0.9999

[ Last edited by fspdlh on 2009-3-20 at 19:53 ]
2楼2009-03-20 19:50:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fspdlh

金虫 (正式写手)

★ ★
Doctorcbw(金币+2,VIP+0):谢谢参与 12-8 15:07
这是程序
datafit.m中:
function [abcd ABCD r ]=datafit(beta)
load data.txt
t=data(:,1);
X=data(:,2);
beta=nlinfit(t,X,'fun',beta);
a1=beta(1);
delta_b=beta(2);
c1=beta(3);
d1=beta(4);
A=beta(5);
B=beta(6);
a=a1^2;
c=c1^2;
d=d1^2;
b=max(max(a,c),d)+delta_b^2;
C=-(-B*d+A*a+B*b+29792400*d-A*d)/(c-d);
D=(-c*B+A*a+29792400*c-c*A+B*b)/(c-d);
X1=fun(beta,t);
r=corrcoef(X,X1);
r=r(1,2);
abcd=[a b c d];
ABCD=[A B C D];

fun.m中:
function X=fun(beta,t)
a1=beta(1);
delta_b=beta(2);
c1=beta(3);
d1=beta(4);
A=beta(5);
B=beta(6);
a=a1^2;
c=c1^2;
d=d1^2;
b=max(max(a,c),d)+delta_b^2;
C=-(-B*d+A*a+B*b+29792400*d-A*d)/(c-d);
D=(-c*B+A*a+29792400*c-c*A+B*b)/(c-d);
X=A.*exp(-a.*t)+B.*exp(-b.*t)+C.*exp(-c.*t)+D.*exp(-d.*t);

data.txt中:
0.5        29701602
1        28952373
2        27578765
3        26202931
4        24616875
5        23031635
6        21218045
7        19869353
8        18343096
9        16833890
10        15504818
11        14335500
12        13110579
13        12048990
14        10987643
3楼2009-03-20 19:58:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fspdlh

金虫 (正式写手)


点点风(金币+1,VIP+0):感谢参与讨论,加分鼓励! 3-21 12:45
我编的函数的参数为
sqrt(a) sqrt(b-max(a,c,d)) sqrt(c) sqrt(d) A B 六个
由这六个参数来确定a b c d A B C D

[ Last edited by fspdlh on 2009-3-20 at 20:02 ]
4楼2009-03-20 19:59:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复(可上传附件)
信息提示
请填处理意见