作业帮 > 综合 > 作业

用C++来解答一个复杂的方程

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/16 17:17:40
用C++来解答一个复杂的方程
方程在最下面
其中t=15.4,R=99.2,q=270,C=8434000.求r,要求用C++编写代码,我用循环递增求差的方法和二分法均算不出正确答案,求高手给出正确的代码,最好能把我的代码给我纠正一下,正确答案是272
我自己写的代码如下
#include<iostream>
#include<cmath>
int main(void)
{
 using namespace std;
 float a , b , c , d , l1 , l2 , l3 , l4 , l5 , l6 , l7 , k;
 b=0;
 c=32547342;
 while(fabs(c-b) >= 0.00001)
 {
  a = ( c + b ) / 2;
  l1 = log10(a);
  l2 = log10(2.718);
  l3 = l1 / l2;
  l4 = 99.2 * 99.2 + a * a ;
  l5 = pow( l4 , 1.5 );
  l6 = 270 * ( 1 - 0.058 * l3 ) * 99.2 * 99.2 * a / l5;
  l7 = pow( l6 , 1.3333 );
  d = l7 * 15.4;
  k = 8434000 - d;
  if( fabs( k ) <= 0.001 )
   break;
  if ( k >= 0 )
   c = a;
  else
   b = a;
 }
 cout << a << endl
   << k << endl;
 system("pause");
 return 0;
}
#include
#include
int main(void)
{
using namespace std;
float a ,b ,c ,d ,l1 ,l2 ,l3 ,l4 ,l5 ,l6 ,l7 ,k;
b=0;
c=32547342;
while(fabs(c-b) >= 0.00001)
{
a = ( c + d ) / 2; //d 没赋初始值
l1 = log10(a);
l2 = log10(2.718); //这一句最好拿到while 语句上面 ,这样代码速度会快一点
l3 = l1 / l2;
l4 = 99.2 * 99.2 + a * a ; //最好先将99.2算出来,这样代码执行速度会快一点
l5 = pow( l4 ,1.5 );
l6 = 270 * ( 1 - l3 ) * 99.2 * 99.2 * a / l5; //l3这里少*0.058
l7 = pow( l6 ,1.3333 );
d = l7 * 15.4;
k = 8434000 - d;
if( fabs( k ) = 0 )
c = a;
else
b = a;
}
cout
再问: 不好意思啊,那个是b,我打错了
再答: 你把我说的改动一下看看能不能得到答案
再问: 还是不行啊,算出来的值是-7点多
再答: 这个值是满足你的公式的啊。还有,你认为公式里面的值在什么范围内? 我追踪运算了一下,发现你的公式左边的式子最大不超过6000 分别在 0.005——0.007之间和在73-75之间有极大值5000+ 没有一个能达到C=8434000值的,建议你使用求导算算极值,看看你的C值是不是给错了