C //习题 7.12 用牛顿迭代法求根。方程为ax^3+bx^2+cx+d=0,系数a,b,c,d的值依次为1,2,3,4,由主函数输入。求x在1附近的一个实根。求出根后由主函数输出。

C程序设计 (第四版) 谭浩强 习题7.12

习题 7.12 用牛顿迭代法求根。方程为 a x 3 + b x 2 + c x + d = 0 ax^3+bx^2+cx+d=0 ax3+bx2+cx+d=0,系数a,b,c,d的值依次为1, 2, 3, 4,由主函数输入。求x在1附近的一个实根。求出根后由主函数输出。

根据牛顿迭代法的公式:

x n + 1 = x n − f ( x n ) f ′ ( x n ) x_{n+1}=x_n-\frac{f(x_n)}{f'(x_n)} xn+1=xnf(xn)f(xn)

得到

f ( x n ) = a x 3 + b x 2 + c x + d f(x_n)=ax^3+bx^2+cx+d f(xn)=ax3+bx2+cx+d
f ′ ( x n ) = 3 a x 2 + 2 b x + c f'(x_n)=3ax^2+2bx+c f(xn)=3ax2+2bx+c

IDE工具:VS2010
Note: 使用不同的IDE工具可能有部分差异。

 

代码块
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

//初始化系数
void initialCoefficient(double **a, double **b, double **c, double **d, double **x){
	*a = (double*)malloc(sizeof(double));
	*b = (double*)malloc(sizeof(double));
	*c = (double*)malloc(sizeof(double));
	*d = (double*)malloc(sizeof(double));
	*x = (double*)malloc(sizeof(double));
}

//输入系数和x值
void inputCoefficient(double *a, double *b, double *c, double *d, double *x){
	printf("Enter the coefficient of equation a, b, c, d and x: ");
	scanf("%lf %lf %lf %lf %lf", a, b, c, d, x);
}

//牛顿迭代法
double newtonIteration(double *a, double *b, double *c, double *d, double *x){
	double formula1 = (*a) * pow(*x, 3) + (*b) * pow(*x, 2) + (*c) * (*x) + (*d);
	double formula2 = 3.0 * (*a) * pow(*x, 2) + 2.0 * (*b) * (*x) + (*c);;
	for(int i = 0; fabs(formula1/formula2) > 1e-5; i++){
		*x -= formula1 / formula2;
		formula1 = (*a) * pow(*x, 3) + (*b) * pow(*x, 2) + (*c) * (*x) + (*d);
		formula2 = 3.0 * (*a) * pow(*x, 2) + 2.0 * (*b) * (*x) + (*c);
	}
	return *x;
}

//释放内存
void freeCoefficient(double **a, double **b, double **c, double **d, double **x){
	free(*a);
	free(*b);
	free(*c);
	free(*d);
	free(*x);
}

int main(){
	double *a = NULL;
	double *b = NULL;
	double *c = NULL;
	double *d = NULL;
	double *x = NULL;

	initialCoefficient(&a, &b, &c, &d, &x);
	inputCoefficient(a, b, c, d, x);
	printf("Real Root: %.2lf\n", newtonIteration(a, b, c, d, x));
	freeCoefficient(&a, &b, &c, &d, &x);
	
	system("pause");
    return 0;
}
elasticsearch-7.12.0-py2.py3-none-any.whl 是 Elasticsearch 的 Python 客户端库的一个安装文件。Elasticsearch 是一个开源的实时分布式搜索和分析引擎,用于处理大规模数据集。它提供了一个简单可扩展的 RESTful API 接口,允许用户进行高效的数据搜索、分析以及存储。 这个安装文件的命名规则是根据 Python 的支持版本以及可运行平台来命名的。-py2.py3 表示可以同时兼容 Python 2 和 Python 3 版本的代码。-none-any 表示它是一个纯 Python 代码的库,不依赖于特定的操作系统或平台。 通过安装 elasticsearch-7.12.0-py2.py3-none-any.whl,您可以轻松地在您的 Python 环境中使用 Elasticsearch。这个库提供了许多功能,包括连接到 Elasticsearch 实例、执行索引、搜索和分析操作,以及管理和维护 Elasticsearch 的集群和节点。您可以使用这个库来构建各种应用,如全文搜索引擎、实时日志分析等。 要安装 elasticsearch-7.12.0-py2.py3-none-any.whl,您可以使用 pip 工具,在命令行中运行以下命令: ``` pip install elasticsearch-7.12.0-py2.py3-none-any.whl ``` 安装成功后,您就可以在您的 Python 代码中导入 elasticsearch 模块,并开始使用 Elasticsearch 的功能了。 总结:elasticsearch-7.12.0-py2.py3-none-any.whl 是 Elasticsearch 的 Python 客户端库的安装文件,用于连接、操作和管理 Elasticsearch 实例。通过安装这个库,您可以在您的 Python 项目中轻松使用 Elasticsearch 的功能。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Navigator_Z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值