表达式中, d,c1,c2,c3,c4,c5,c6,c7都是已知数,请教各位大虾,该如何计算T的值?
其中, ln(T) 可通过数学函数 log(T) 计算.
求解T的值, 这个算法该如何解?
-
- 帖子: 2
- 注册时间: 2013-02-16 23:16
- 系统: Win7+Ubuntu12.04
- 枫叶饭团
- 帖子: 14683
- 注册时间: 2010-06-16 1:05
- 系统: Mac OS X
- 来自: Tencent
- 联系:
Re: 求解T的值, 这个算法该如何解?
数学家在哪里。。。
我数学不好= =:(
我数学不好= =:(
-
- 帖子: 40
- 注册时间: 2012-11-11 20:08
- 系统: mavericks
- tangboyun
- 帖子: 701
- 注册时间: 2009-07-25 1:57
- 联系:
Re: 求解T的值, 这个算法该如何解?
要算法还是软件还是库?
算法可以参考http://en.wikipedia.org/wiki/List_of_algorithms 中2.5.8节的Root finding 一节相关介绍。(要实际应用不要自己去写这类算法。)
库的话可以读下 GNU Scientific Library (or GSL )的manual,至于软件,几乎所有数学软件都有相关部分,搜下manual
算法可以参考http://en.wikipedia.org/wiki/List_of_algorithms 中2.5.8节的Root finding 一节相关介绍。(要实际应用不要自己去写这类算法。)
库的话可以读下 GNU Scientific Library (or GSL )的manual,至于软件,几乎所有数学软件都有相关部分,搜下manual
https://github.com/tangboyun
http://tangboyun.is-programmer.com/
提问的智慧————Eric Steven Raymond
回答的智慧————Andrew Clarke
吾尝终日而思矣,不如须臾之所学也;吾尝跂而望矣,不如登高之博见也。
急急急标题什么的,最讨厌了!
急急复急急,急急何其多,我生待急急,万事急急急。
http://tangboyun.is-programmer.com/
提问的智慧————Eric Steven Raymond
回答的智慧————Andrew Clarke
吾尝终日而思矣,不如须臾之所学也;吾尝跂而望矣,不如登高之博见也。
急急急标题什么的,最讨厌了!
急急复急急,急急何其多,我生待急急,万事急急急。
- cuihao
- 帖子: 4793
- 注册时间: 2008-07-24 11:33
- 来自: 郑州
- 联系:
Re: 求解T的值, 这个算法该如何解?
……用万能的牛顿法。
对于这道具体的题目,导函数算是已知的,好写多了。
对于这道具体的题目,导函数算是已知的,好写多了。
求人不如求它仨: 天蓝的Wiki 屎黄的Wiki 蓝红黄蓝绿红
Site: CUIHAO.TK Twitter: @cuihaoleo
Machine: Athlon64 X2 5200+ / 2x2GB DDR2-800 / GeForce GTS 450
AD: ~まだ見ぬ誰かの笑顔のために~
Site: CUIHAO.TK Twitter: @cuihaoleo
Machine: Athlon64 X2 5200+ / 2x2GB DDR2-800 / GeForce GTS 450
AD: ~まだ見ぬ誰かの笑顔のために~
-
- 帖子: 2
- 注册时间: 2013-02-16 23:16
- 系统: Win7+Ubuntu12.04
Re: 求解T的值, 这个算法该如何解?
谢谢大家的帮助,这个公式已经通过牛顿迭代法解决了,下面是C语言代码片段:
double f(double c1, double c2, double c3, double c4, double c5, double c6, double c7, double d, double T)
{
return (c1 + c2*T + c3*pow(T,2) + c4*pow(T,3) + c5*pow(T,4) + c6*pow(T,5) + c7*log(T)*T - d*T);
}
double f1(double c2, double c3, double c4, double c5, double c6, double c7, double d, double T)
{
return (c2 + 2*c3*T + 3*c4*pow(T,2) + 4*c5*pow(T,3) + 5*c6*pow(T,4) + c7*log(T) - d);
}
double newton_ddf()
{
double T;
doubel eps;
T = (double)473.15; // 初值设定很重要
eps = 1E-5;
//初始化c1,c2,c3,c4,c5,c6,c7,d
// 原始表达式 : d= c1/T + c2 + c3*T + c4*T^2 + c5*T^3 + c6*T^4 + c7*ln(T)
// 转换表达式1 : 0 = c1/T + c2 + c3*T + c4*T^2 + c5*T^3 + c6*T^4 + c7*ln(T) - d
// 转换表达式2 : 0 = c1 + c2*T + c3*T^2 + c4*T^3 + c5*T^4 + c6*T^5 + c7*ln(T)*T - d*T
do
{
T1 = T;
T = T1 - f(c1, c2, c3, c4, c5, c6, c7, d, T1) / f1(c2, c3, c4, c5, c6, c7, d, T1);
} while (fabs(T-T1) >= eps);
printf("T: %lf\n", T);
double f(double c1, double c2, double c3, double c4, double c5, double c6, double c7, double d, double T)
{
return (c1 + c2*T + c3*pow(T,2) + c4*pow(T,3) + c5*pow(T,4) + c6*pow(T,5) + c7*log(T)*T - d*T);
}
double f1(double c2, double c3, double c4, double c5, double c6, double c7, double d, double T)
{
return (c2 + 2*c3*T + 3*c4*pow(T,2) + 4*c5*pow(T,3) + 5*c6*pow(T,4) + c7*log(T) - d);
}
double newton_ddf()
{
double T;
doubel eps;
T = (double)473.15; // 初值设定很重要
eps = 1E-5;
//初始化c1,c2,c3,c4,c5,c6,c7,d
// 原始表达式 : d= c1/T + c2 + c3*T + c4*T^2 + c5*T^3 + c6*T^4 + c7*ln(T)
// 转换表达式1 : 0 = c1/T + c2 + c3*T + c4*T^2 + c5*T^3 + c6*T^4 + c7*ln(T) - d
// 转换表达式2 : 0 = c1 + c2*T + c3*T^2 + c4*T^3 + c5*T^4 + c6*T^5 + c7*ln(T)*T - d*T
do
{
T1 = T;
T = T1 - f(c1, c2, c3, c4, c5, c6, c7, d, T1) / f1(c2, c3, c4, c5, c6, c7, d, T1);
} while (fabs(T-T1) >= eps);
printf("T: %lf\n", T);
-
- 帖子: 23
- 注册时间: 2013-04-17 0:03
- 系统: ubuntu和windows8和rhel
- b33e
- 帖子: 3864
- 注册时间: 2011-06-07 14:20
- 系统: Mint18
- 月下叹逍遥
- 论坛版主
- 帖子: 33994
- 注册时间: 2010-10-07 14:23
- 系统: Archdows10
- 来自: 某系某星某洲某国某省某市
- 联系: