急,高手帮忙

[复制链接]
2704|2
 楼主| undeadzhen 发表于 2007-6-11 16:35 | 显示全部楼层 |阅读模式
这段程序没有编错,可是算不出结果,请指点,屏幕上没有结果。<br />float&nbsp;f(float&nbsp;x)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;float&nbsp;y;<br />//&nbsp;&nbsp;&nbsp;&nbsp;y=(((0.54525/1e7-1.2103722/1e10*273.16)*x&nbsp;+&nbsp;1.4307/1e7*273.16&nbsp;-&nbsp;0.75/1e4)*x&nbsp;+&nbsp;0.57/1e4*273.16)*x-0.7;<br />&nbsp;&nbsp;&nbsp;&nbsp;y=(0.54525/1e7-1.2103722/1e10*273.16)*x*x*x&nbsp;+&nbsp;(1.4307/1e7*273.16&nbsp;-&nbsp;0.75/1e4)*x*x&nbsp;+&nbsp;(0.57/1e4*273.16)*x;//-0.7;<br />&nbsp;&nbsp;&nbsp;&nbsp;return(y);<br />}<br />float&nbsp;xpoint(float&nbsp;x1,float&nbsp;x2)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;float&nbsp;y;<br />&nbsp;&nbsp;&nbsp;&nbsp;y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));<br />&nbsp;&nbsp;&nbsp;&nbsp;return(y);<br />}<br />float&nbsp;root(float&nbsp;x1,float&nbsp;x2)<br />{<br />//&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;float&nbsp;x,y,y1;<br />&nbsp;&nbsp;&nbsp;&nbsp;y1=f(x1);<br />&nbsp;&nbsp;&nbsp;&nbsp;do<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x=xpoint(x1,x2);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y=f(x);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(y*y1&gt0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y1=y;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x1=x;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x2=x;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;while(fabs(y)&gt=0.0001);<br />&nbsp;&nbsp;&nbsp;&nbsp;return(x);<br />}<br />main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;float&nbsp;x1=0,x2=70,f1,f2,x;<br />&nbsp;&nbsp;&nbsp;&nbsp;do<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f1=f(x1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f2=f(x2);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;while(f1*f2&gt=0);<br />&nbsp;&nbsp;&nbsp;&nbsp;x=root(x1,x2);<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;A&nbsp;root&nbsp;of&nbsp;equation&nbsp;is%f&quot;,x);<br />&nbsp;&nbsp;&nbsp;&nbsp;while(1);<br />}
 楼主| undeadzhen 发表于 2007-6-11 16:37 | 显示全部楼层

补:

为什么按照这个方法求解1元3次方程就是解不出来
lbx_00 发表于 2007-6-13 21:57 | 显示全部楼层

这个

do<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f1=f(x1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f2=f(x2);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;while(f1*f2&gt=0);<br /><br />看看你的子程序,对于许多x1和x2,你的循环里又不改变x1和x2的值,那么循环条件就永远满足,初步来了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

66

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部