dingyufan 发表于 2007-4-3 20:13

请求高手指点迷津

f(a)=11.05-0.0167*(2+398*a^2)^(1/2)+1.499*a^2-0.0042*(994+9010*a^2)^(1/2)-0.0119*(730+1770*a^2)^(1/2)-0.04896*(214+186*a^2)^(1/2)-0.208*(77+23*a^2)^(1/2)-0.0808*(9390+612*a^2)^(1/2)
请问,我想求这个函数达最小值时,a的值应该为多少,我应该怎么编程实现啊?
请高手指点,非常感谢!

[ 本帖最后由 xinyuxf 于 2007-7-22 12:09 编辑 ]

w89986581 发表于 2007-4-3 20:42

最简单的方法就是指定搜索区间,一定步长搜索。或者解f'(a)的零点,从中选择最小值点。。

xjzuo 发表于 2007-4-4 09:18

提示:
先画图,可发现两个解;
然后用fminunc求解,可得解为:-0.7253和0.7253.

dingyufan 发表于 2007-4-4 10:55

我知道应该对它求导,可是这么麻烦的式子,我用matlab编程,编出来的程序运行不了,请问您能不能帮我解一下啊。我为了简化计算机的工作,手工给它化简了一下,化简完之后的式子为
(3.8405+0.2495*a^2)(-0.5)+(3.3639+1.0048*a^2)(-0.5)+(2.5808+2.2431*a^2)(-0.5)+(1.6507+4.0023*a^2)(-0.5)+(0.6861+6.2439*a^2)+(-0.5)(0.0454+9.029*a^2)(-0.5)-2.9975=0'
上边这个式子是已经求完导数了,现在只需要解这个方程,可是我不会解,请大家指教,不胜感激!!!!

笑石头 发表于 2007-4-7 15:16

回复 #1 dingyufan 的帖子

给你来个简单的求解方法:
x = fminunc(inline('11.05-0.0167*(2+398*a^2)^(1/2)+1.499*a^2-0.0042*(994+9010*a^2)^(1/2)-0.0119*(730+1770*a^2)^(1/2)-0.04896*(214+186*a^2)^(1/2)-0.208*(77+23*a^2)^(1/2)-0.0808*(9390+612*a^2)^(1/2)'),1)

解得
x =

    0.7250
页: [1]
查看完整版本: 请求高手指点迷津