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

📄 exp5.cpp

📁 Newton弦截法求根 初值设为x为&#143 0.1,0.2,0.9,9.0.可在程序中更改
💻 CPP
字号:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define MAXREPT 200
#define epsilon 0.000001

double f(double x)
{
	return(x*x*x/3-x);
}
double m(double x)
{
	return(x*x-1);
}
double g(double x) 
{
	return(x-f(x)/m(x));
}

void Newton(double x)
{       
	int i;
	double xnow,xnext,error;
	xnow=x;
	printf("\nx0=%lf\n",x);
	printf("叠代次数\t数值结果\t  数值误差\n");
	for (i=1; i<MAXREPT ;i++)
	{
		xnext = g(xnow);		
		error = fabs(xnext - xnow);         
		printf("%4d\t%18.12f\t%14.12f\n",i,xnext,error);          
		if (error<epsilon) 
			return;          
		else xnow = xnext;      
	}     
	printf("%lf附近x无根\n\n",x);      
	return;       
}
       
void XianJie(double x,double y)
{      
	int i;      
	double xk0,xk1,xk2,error;       
	xk0=x;      
	xk1=xk2=y;       
	printf("\nx0=%lf\t\nx1=%lf\n",x,y);       
	printf("叠代次数\t数值结果\t  数值误差\n");      
	for (i=1; i<MAXREPT ;i++)
	{           
		xk2=xk1-(f(xk1)*(xk1-xk0))/(f(xk1)-f(xk0));          
		error = fabs(xk2-xk1);           
		printf("%4d\t%18.12f\t%14.12f\n",i,xk2,error);           
		if (error<epsilon)
			return;           
		else 
		{                
			xk0=xk1;               
			xk1=xk2;               
		}          
	}       
	printf("无根\n\n",x);       
	return;       
}

       
       
int main()
{      
    printf("牛顿叠代\n");
    Newton(0.1);
    Newton(0.2);
    Newton(0.9);
    Newton(9.0);
	printf("\n弦截法\n");
    XianJie(0.1,0.2);
    XianJie(0.2,0.9);
    XianJie(0.9,9.0); 
                     
    system("pause");
}     

⌨️ 快捷键说明

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