栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

数值分析实验二 方程求根

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数值分析实验二 方程求根

本实验代码均在Turbo C 2.0下实现。 

一、目的与要求:

1、通过对二分法和牛顿迭代法作编程练习和上机运算,进一步体会它们在方程求根中的不同特点;

2、比较二者的计算速度和计算精度。

二、实验内容

1、二分法

  • 算法

给定区间[a,b],并设与符号相反,取为根的容许误差。

  1. 令c=(a+b)/2
  2. 如果f(c)=0,则输出,结束;否则执行(3),
  3. 如果,则令;否则则令,重复(1),(2),(3)。

2、牛顿迭代法

  • 算法

给定初值,为根的容许误差,为的容许误差,N为迭代次数的容许值。

  1. 如果=0或迭代次数大于N,则算法失败,结束;否则执行(2)。
  2. 计算=
  3. 若或,则输出,程序结束;否则执行(4)。
  4. 令,转向(1)。  

三、程序代码

#include 
#include
float f(float c) {
	return c * c * c + c*c - 3*c -3;
}
float f1(float c) {
	return 3 * c * c + 2*c - 3;
}
void func1(float a, float b, float e) {
	int epoch;
	epoch = 1;
	while (1) {
		float c = (a + b) / 2;
		printf("step %d  , x=%.8fn",epoch, c);
		if (f(c) == 0 || (((b - a) / (pow(2, epoch + 1)) <= e)))
			break;
		else if ((f(c) < 0 && f(a) < 0) || (f(c) > 0 && f(a) > 0))
		{
			a = c;
		}
		else {
			b = c;
		}
		epoch++;
	}
	
}

void func2(float x, int epoch, float e, float H) {
	
	int i;
float x1;
	float x0;
	i = 1;
	x0 = x;
	
	while (1) {
		
		if (i > epoch || f1(x0) == 0) {
			printf("failed!");
			break;
		}
		x1 = x0 - f(x0) / f1(x0);
		printf("epoch = %d, x = %.8fn", i,x1);
		if (fabs(x1 - x0) < e || fabs(f(x1)) < H) {
			if (fabs(x1 - x0) < e) {
				printf("x = %.6f,on condition e", x1);
			}
			else {
				printf("x = %.6f,on condition H", x1);
			}
			break;
		}
		x0 = x1;
		i++;
	}
}
int main()
{
	float a, b, e, H, x0;
	int epoch;
	clrscr(); 
	printf("Please enter the interval of Bisection a,b   x tolerance error e, f(x) tolerance error H  AND newtown epoch, Initial solution x0:n");
	scanf("%f%f%f%f%d%f", &a, &b, &e, &H, &epoch, &x0);
	printf("Bisection :n");
	func1(a, b, e);
	printf("Newtown:n");
	func2(x0,epoch, e, H);
	getch();
	return 0;
}

四、实验结果

 

五、分析思考

    本次实验通过C语言编程实现了二分法和牛顿法的求解过程,求解的目标函数为 ,可以发现牛顿法求解的速度要更快,仅用两次迭代就完成了求解。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/690361.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号