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

📄 euler.cpp

📁 计算方法程序常微分方程的数值解法课堂讲义
💻 CPP
字号:
/////////////////////////////////////////////////////////////////////////////
//	§4  常微分方程的差分方法
//
//	程序4.1 — 欧拉方法
/////////////////////////////////////////////////////////////////////////////

#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <math.h>

#include "expressi.cpp" //用于函数计算

/////////////////////////////////////////////////////////////////////////////
//输入:
//     FxyString[] : 字符串中放二元函数f(x,y),格式要符合C语言算术表达式语法.
//     x0,y0 :       准确解 y=y(x)在x0点初值为y0,
//     h : 步长 
//     n : 步数
//输出: 在x0+h,x0+2h,...,x0+nh各点的近似值
//     y1 = ...
//     y2 = ...
//     ...
//     yn = ...
void Euler(char FxyString[],float x0,float y0,float h,int n)
{
	int i;
	float yi;

	//建立f(x,y), 如果FxyString是非法的C算术表达式,则返回。
	if(CreateFxy(FxyString)) return; 

	yi=y0; //赋初值             
	for(i=1;i<n;++i)
	{
		yi=yi+h*f(x0+(i-1)*h,yi); //Euler公式
		printf("\ny%d=%f",i,yi);  //打印结果
	}

}

void main()
{
	float x0,y0,h; //x0:自变量初值,y0: y(x0), h:步长
	int n;         //步数
	char FxyString[200]; //存放C算术表达式格式的f(x,y)

	printf("\nInput function,x0,y0,h,n: ");
	scanf("%s %f %f %f %d",FxyString,&x0,&y0,&h,&n);

	Euler(FxyString,x0,y0,h,n);

	getch(); 
}

/*
	运行实例

Input function,x0,y0,h,n: y-2*x/y 0 1 0.1 11

y1=1.100000
y2=1.191818
y3=1.277438
y4=1.358213
y5=1.435133
y6=1.508966
y7=1.580338
y8=1.649784
y9=1.717780
y10=1.784771
*/

⌨️ 快捷键说明

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