Newton迭代法解非线性方程组的C语言实现

#include<stdio.h>
#include<math.h>
 
#define tol -3   /*精度*/
/*--------------------
*方程组及一阶导数
--------------------*/
double f1(double x, double y){
	return x*x + y*y -1;
}
 
double f2(double x, double y){
	return x*x*x -y;
}
 
double f1_x(double x, double y){
	return 2*x;
}

double f1_y(double x, double y){
	return 2*y;
}

double f2_x(double x, double y){
	return 3*x*x;
}

double f2_y(double x, double y){
	return -1;
}
 
int main(void){
	unsigned int c_times = 1;
	double x_1,y_1,x_0,y_0;
	double n_tol=1;
	x_0 = 0.8;
	y_0 = 0.6;
	n_tol = pow((double)10,tol);  /*误差界限*/
 
	/*牛顿迭代*/
	while(1){
		x_1 = x_0 + (-f1(x_0,y_0)*f2_y(x_0,y_0) + f2(x_0,y_0)*f1_y(x_0,y_0))/(f1_x(x_0,y_0)*f2_y(x_0,y_0) - f2_x(x_0,y_0)*f1_y(x_0,y_0));
		y_1 = y_0 + (-f1(x_0,y_0)*f2_x(x_0,y_0) + f2(x_0,y_0)*f1_x(x_0,y_0))/(f1_y(x_0,y_0)*f2_x(x_0,y_0) - f2_y(x_0,y_0)*f1_x(x_0,y_0));
		printf("迭代次数:%d\t X的值:%-.20
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

作业不能白做

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

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

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

打赏作者

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

抵扣说明:

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

余额充值