登录论坛

查看完整版本 : [问题] 关于同时优化两个函数的问题


zhangholmes
2012-12-06, 21:00
各位大侠,小弟想用Findfit同时优化r1和r2函数,只得到一组参数值,mathematica有什么格式要求吗。下面是代码,但是是分开优化的,会得到两组不同的参数值。
da = {{0.51333, 0.50536}, {0.36301, 0.61684}, {0.34194,
0.63566}, {0.28502, 0.68357}, {0.26485, 0.70947}, {0.17771,
0.72182}};
db = {{0.51333, 2.5363}, {0.36301, 1.16376}, {0.34194,
0.75531}, {0.28502, 0.4164}, {0.26485, 0.27812}, {0.17771,
0.1259}};
Subscript[k, 1] =
Subscript[A, 1]
Exp[(-Subscript[A, w]*
Exp[-Subscript[E, w]/
4098.802]*((0.133 + 0.173*x)/(0.483 - 0.346*x)) - Subscript[
E, 1])/4098.802];
Subscript[k, 2] =
Subscript[A, 2]
Exp[(-Subscript[A, w]*
Exp[-Subscript[E, w]/
4098.802]*((0.133 + 0.173*x)/(0.483 - 0.346*x)) - Subscript[
E, 2])/4098.802];
Subscript[k, 3] =
Subscript[A, 3]
Exp[(-Subscript[A, w]*
Exp[-Subscript[E, w]/
4098.802]*((0.133 + 0.173*x)/(0.483 - 0.346*x)) - Subscript[
E, 3])/4098.802];
Subscript[k, 4] =
Subscript[A, 4]
Exp[(-Subscript[A, w]*
Exp[-Subscript[E, w]/
4098.802]*((0.133 + 0.173*x)/(0.483 - 0.346*x)) - Subscript[
E, 4])/4098.802];
Subscript[k, 5] =
Subscript[A, 5]
Exp[(-Subscript[A, w]*
Exp[-Subscript[E, w]/
4098.802]*((0.133 + 0.173*x)/(0.483 - 0.346*x)) - Subscript[
E, 5])/4098.802];
Subscript[k, 6] =
Subscript[A, 6]
Exp[(-Subscript[A, w]*
Exp[-Subscript[E, w]/
4098.802]*((0.133 + 0.173*x)/(0.483 - 0.346*x)) - Subscript[
E, 6])/4098.802];
Subscript[k, 7] =
Subscript[A, 7]
Exp[(-Subscript[A, w]*
Exp[-Subscript[E, w]/
4098.802]*((0.133 + 0.173*x)/(0.483 - 0.346*x)) - Subscript[
E, 7])/4098.802];
r1 = -(x *Subscript[k, 1]* Subscript[k, 2]*Subscript[k,
3]*(-Subscript[k, 5] - Subscript[k,
7]))/(-(x*Subscript[k, 1]*Subscript[k, 2] -
Subscript[k,
3]*(-x*Subscript[k, 1] - Subscript[k, 2] -
x*Subscript[k, 4] - Subscript[k, 6]))*(-Subscript[k, 5] -
Subscript[k, 7]) -
x*Subscript[k, 3]*Subscript[k,
4]*(-x*Subscript[k, 1] + Subscript[k, 7]));
r2 = -(x^2)*Subscript[k, 1]*Subscript[k, 3]*Subscript[k, 4]*
Subscript[k,
5]/((x *Subscript[k, 1]*Subscript[k, 2] -
Subscript[k,
3]*(-x*Subscript[k, 1] - Subscript[k, 2] -
x*Subscript[k, 4] - Subscript[k, 6]))*(-Subscript[k, 5] -
Subscript[k, 7]) -
x*Subscript[k, 3]*Subscript[k,
4]*(-x*Subscript[k, 1] + Subscript[k, 7]));
FindFit[da, r1, {{Subscript[A, 1], 1000, 100, 10000}, {Subscript[A,
2], 10^13, 10^11, 10^14}, {Subscript[A, 3], 10^13, 10^12,
10^14}, {Subscript[A, 4], 1000, 100, 10000}, {Subscript[A, 5],
10^13, 10^12, 10^14}, {Subscript[A, 6], 10^13, 10^12,
10^14}, {Subscript[A, 7], 10^13, 10^12, 10^14}, {Subscript[A, w],
1000, 100, 10000}, {Subscript[E, 1], 0, 0, 80}, {Subscript[E, 2],
98, 80, 115}, {Subscript[E, 3], 108, 80, 135}, {Subscript[E, 4], 0,
0, 80}, {Subscript[E, 5], 90, 50, 110}, {Subscript[E, 6], 130,
120, 140}, {Subscript[E, 7], 80, 0, 100}, {Subscript[E, w], 25, 0,
40}}, x]
FindFit[db, r2, {{Subscript[A, 1], 1000, 100, 10000}, {Subscript[A,
2], 10^13, 10^11, 10^14}, {Subscript[A, 3], 10^13, 10^12,
10^14}, {Subscript[A, 4], 1000, 100, 10000}, {Subscript[A, 5],
10^13, 10^12, 10^14}, {Subscript[A, 6], 10^13, 10^12,
10^14}, {Subscript[A, 7], 10^13, 10^12, 10^14}, {Subscript[A, w],
1000, 100, 10000}, {Subscript[E, 1], 0, 0, 80}, {Subscript[E, 2],
98, 80, 115}, {Subscript[E, 3], 108, 80, 135}, {Subscript[E, 4], 0,
0, 80}, {Subscript[E, 5], 90, 50, 110}, {Subscript[E, 6], 130,
120, 140}, {Subscript[E, 7], 80, 0, 100}, {Subscript[E, w], 25, 0,
40}}, x]