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

📄 rootsimp.cpp

📁 计算方法程序常微分方程的数值解法课堂讲义
💻 CPP
字号:
////////////////////////////////////////
//	程序5.2  简单迭代

//////////////////////////////////////////////////////////////////////////////////
//简单迭代
//
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>

#define PRECISION	0.000001 // 精度
#define MAX_Number	10000    // 迭代最大次数

#include "expressi.cpp"      // 表达式计算函数

// 简单迭代
// phe(x) = 符合C语言语法的算术表达式字符串FxString
//
void SimpleIterative(char FxString[] )
{
	int k;
	float x0,x;

	if( CreateFx( FxString ) ) exit(0); // 建立表达式内部格式

	printf("\n\nInput Initial Value:\nx0 = ");
	scanf( "%f", &x );

	// 开始迭代
	k=1;
	do{
		x0 = x;
		x = f( x0 );
		printf( "\nx%d=%f", k, x );
		++k;
	}while( fabs( x-x0 ) > PRECISION && k < MAX_Number );

	if( k >= MAX_Number )
	{
		// 迭代到最大次数还不收敛
		printf("\nSimple Iterative failed(k=%d)",k);
	}
	else
	{
		// 收敛, 输出结果
		printf( "\n\nIterative times k = %d", k );
		printf( "\nRoot x = %f", x );
	}
}

void main()
{
	char FxString[200];

	// 输入phe(x)的表达式字符串
	printf("\nInput function:  ");
	scanf( "%s", FxString );

	// 迭代
	SimpleIterative( FxString );

	printf("\n\n\007Press any key to quit!\n");
	getch();
}

/*
	运行实例

Input function: pow(x+1,1/3.)

Input Initial Value:
x0=0.0

x1=1.000000
x2=1.259921
x3=1.312294
x4=1.322354
x5=1.324269
x6=1.324633
x7=1.324702
x8=1.324715
x9=1.324717
x10=1.324718

Iterative times k=11
Root x=1.324718

Press any key to quit!
*/

⌨️ 快捷键说明

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