声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2076|回复: 2

[应用数学] 求助:三等分法程序

[复制链接]
发表于 2006-6-10 00:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
最近在写最优化论文遇到这样一个问题,本人想用三等分代替0.618法去解方程的最值点,然后作比较(虽然最终肯定还是0.618法要好点)但三等分法程序无法写出,那位大侠有想过这样的问题,有没有写过这方面 的程序,能否发给小弟,<a href="mailtx0416@163.com" target="_blank" >x0416@163.com</A>.

[ 本帖最后由 xinyuxf 于 2006-12-26 11:50 编辑 ]
回复
分享到:

使用道具 举报

发表于 2006-6-11 07:06 | 显示全部楼层

回复:(x0416)[原创]求救,谁能帮我。

三等分法程序吗?
 楼主| 发表于 2006-6-13 15:19 | 显示全部楼层
<P>是呀,我自已写了一个,但有一个错误不知道怎么改,各位大侠请赐教。<BR>#include&lt;math.h&gt;<BR>#include&lt;stdio.h&gt;<BR>//全局变量<BR>double a[100],b[100];<BR>double L,X;<BR>double R[100],U[100];<BR>int k=1;<BR>//要计算的函数<BR>double function(double x){<BR>       double y=(x+1)*(x-2)*(x-2);<BR>       return y;<BR>}<BR>//初始化区间<BR>void Initalize(){<BR>     printf("Input the a[1] and b[1]:\n");<BR>     scanf("%lf %lf",&amp;a[1],&amp;b[1]);<BR>     if(a[1]&gt;b[1]){<BR>            printf("error,the a[1] must be small than the b[1],please input again.\n");<BR>     exit(0);<BR>}<BR>     printf("Input the L\n");<BR>     scanf("%lf",&amp;L);<BR>     if(L&lt;0){<BR>             printf("error,the L must be biger than zero.\n");<BR>     exit(0);<BR>     }<BR>}<BR>//step 3<BR>void Step3(){<BR>        a[k+1]=R[k];<BR>        b[k+1]=b[k];<BR>        R[k+1]=U[k];<BR>        U[k+1]=a[k+1]+2/3*(b[k+1]-a[k+1]);<BR>}<BR>//step4<BR>void Step4(){<BR>        a[k+1]=a[k];<BR>        b[k+1]=U[k];<BR>        U[k+1]=R[k];<BR>        R[k+1]=a[k+1]+1/3*(b[k+1]-a[k+1]);<BR>}<BR>//处理过程<BR>void process(){<BR>        R[1]=a[1]+1/3*(b[1]-a[1]);<BR>        U[1]=a[1]+2/3*(b[1]-a[1]);<BR>        while((b[k]-a[k])&gt;=L){<BR>                if(function(R[k])&gt;function(U[k])){<BR>                            Step3();<BR>                }<BR>                else {<BR>                            Step4();<BR>                }<BR>                k=k+1;<BR>        }<BR>        printf("the min area is :[%lf %lf]\n",a[k],b[k]);<BR>        double X=(a[k]+b[k])/2;<BR>        printf("the min point is:%lf\n",X);<BR>}<BR>//主函数<BR>void main(){<BR>         Initalize();<BR>         process();<BR>}<BR>getch();</P>
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-16 00:52 , Processed in 0.055109 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表