计算的方程解法有别于数学
数学能对点的计算,而计算机只能列举后判断
常用的求方程解的方法
- 在某范围内用二分法
如
#include<stdio.h>
#include<limits.h>
#include<math.h>
#define MIN 1e-9
int main()
{
double temp,high=100,low=0,mid;
int y;
scanf("%d",&y);
while(high > low)
{
mid=(high + low)*1.0/2;
temp=8*mid*mid*mid*mid+7*mid*mid*mid+2*mid*mid+3*mid+6;
if(temp == y)
{
printf("x = %.4lf",mid);
return 0;
}
else if(temp > y)
high=mid;
else low=mid;
}
printf("No solution!");
return 0;
}
在二分法中通常要用到high low mid 这三个变量
- 牛顿-拉夫逊方法
如 参考见 https://blog.csdn.net/sinat_42424364/article/details/82381039
#include<stdio.h>
#include<math.h>
#define MIN 1e-6
int main()
{
double x=50,result=-100;
int y;
scanf("%d",&y);
while(fabs(result-y) > MIN)
{
x=x-(8*x*x*x*x+7*x*x*x+2*x*x+3*x+6-y)/(32*x*x*x+21*x*x+4*x+3);
result=8*x*x*x*x+7*x*x*x+2*x*x+3*x+6;
}
if(x >= 0 && x <= 100) printf("x = %.4lf",x);
else printf("No solution!");
return 0;
}
结果证明:牛顿-拉夫逊方法比二分法的逼近速度更快
标签:include,temp,int,mid,high,low,解方程,一点,心得 From: https://www.cnblogs.com/zzxs-blog/p/16818130.html