解方程的一点心得

计算的方程解法有别于数学

数学能对点的计算,而计算机只能列举后判断

常用的求方程解的方法

  • 在某范围内用二分法

#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;
}

结果证明:牛顿-拉夫逊方法比二分法的逼近速度更快

posted @   MITE's_BKY  阅读(42)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示