📄 euler.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 + -