⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 diedai.cpp

📁 数值分析中的几种迭代法解方程
💻 CPP
字号:
#include"stdio.h"
#include "math.h"
#define PI 3.141592
double fun1(double x)
{
	double f1=pow((sin(x)-x/2.0), 2);
	return f1;
}
double fun2(double x)
{
	double f2 = 2*(sin(x)-x/2.0)*(cos(x)-0.5);
	return f2;
}
double fun3(double x)
{
	double f3=((cos(x)-0.5)*(2*cos(x)-1)+(sin(x)-x/2.0)*(2.0*sin(x)))/pow((2.0*cos(x)-1),2);
	return f3;
}
double fun4(double x)
{
	double f4=(sin(x)-x/2.0)/(2*cos(x)-1);
    return f4;
}
double fun5(double x)
{
	double f5=x*x-6.0;
    return f5;
}
double fun6(double x)
{
	double f6=x * x * x / 3 -x;
    return f6;
}
double fun7(double x)
{
	double f7=x * x - 1;
    return f7;
}

void main()
{
//	double x = PI / 2;	
	double Tol=0.0001;
//牛顿重根迭代
	double x = 0.5;
	while(fabs(fun6(x))>=Tol)
	{
		int k = 0;
		double a = 1.0 / (pow(2,k));
		printf("x0=%f\t",x);
		x=x-a*fun6(x)/fun7(x);
		printf("x1=%f\t e=%f\n",x,fun6(x));
		k++;
	}
/* 	
	while(fabs(fun4(x))>=Tol)
	{
		printf("x0=%f\t",x);
		x=x-fun4(x)/fun3(x);
		printf("x1=%f\t e=%f\n",x,fun4(x));
	}
*/
	/*
	//双点弦割法
	double x0 = 1.0;
	double x1 = 2.5;
	double x2 = 0.0;

	while(fabs(fun5(x2))>=Tol)
	{
		printf("x0=%f\t",x0);
		printf("x1=%f\t",x1);
		x2=x1-fun5(x1)*(x0-x1)/(fun5(x0)-fun5(x1));
		x0 = x1;
		x1 = x2;
		printf("x2=%f\t e=%f\n",x2,fun5(x2));
	}
*/  
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -