c6.cpp

来自「数值分析最常用的四十种算法」· C++ 代码 · 共 37 行

CPP
37
字号
//C6.cpp
//Adanved Euler's Methom

#include<iostream.h>

const N=20;

double f(double x,double y)
{
	return x*y*y*(-1);
}

//n为[0,5]之间欲求离散点个数,将会设为20
void EulerMethom(double x0,double y0,int n)
{
	double y1,h;
	int i;
	h=5/(double)n;
	for (i=0;i<n;i++)
	{
		y1=y0+h*f(x0+i*h,y0);
		y1=y0+h*(f(x0+(i+1)*h,y1)+f(x0+i*h,y0))/2;
		cout<<"The vaule at "<<(i+1)*h<<"is: "<<y1<<endl;
		y0=y1;
	}
}

void main()
{
	double x0=0,y0=2;   
	EulerMethom(x0,y0,N);
}

//N=500时,y(2.5)=0.275871
//N=20时,y(2.5)=0.282357,距精确值0.275862相当远
//迭代次数对结果精确性影响非常大,N=500时,程序耗时2秒多
//且有相当的误差,Euler法确实不敢恭维

⌨️ 快捷键说明

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