用C++来解答一个复杂的方程
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/09/25 06:26:37
用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;
}
方程在最下面
其中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值是不是给错了
#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值是不是给错了