`
he91_com
  • 浏览: 376929 次
文章分类
社区版块
存档分类
最新评论

计算方法之改进的欧拉法计算常微分方程

 
阅读更多
/***********************
*   
*改进的欧拉法计算常微分方程
* y'=(1/x)*y-(1/x)*y^2,  1<=x<=1.5
*{
* y(1) = 0.5
*
* 取步长h=0.1即n=5
*************************/
#include<stdio.h>
#include<math.h>
#include<conio.h>

float f(float x, float y) {
	return (y / x - y * y / x);
}

float Euler(float x0, float xn, float y0, int n) {
	int i;
	float yp, yc, x = x0, y = y0, h;
	h = (xn - x0) / n;
	for (i = 1; i <= n; i++) {
		yp = y + h * f(x, y);
		x = x0 + i * h;
		yc = y + h * f(x, yp);
		y = (yp + yc) / 2.0;
		printf("x[%d]=%f	y[%d]=%f\n", i, x, i, y);
	}
	return y;
}

int main() {
	int i;
	float x0, xn, y0, h, S, n;
	printf("\nInput the x0 value:");
	scanf("%f", &x0);
	printf("\nInput the xn value:");
	scanf("%f", &xn);
	printf("\nInput the y0 value at %f:", x0);
	scanf("%f", &y0);
	printf("\n input value[divide(%f,%f)]:", x0, xn);
	scanf("%f", &n);
	printf("\n x[0]=%8f \t y[0]=%8f \n", x0, y0);
	Euler(x0, xn, y0, n);
	//getch();
	return 0;
}

分享到:
评论

相关推荐

    常微分方程求解 初值问题 欧拉法 改进欧拉法 龙格库塔法 经典RK法 数值计算方法作业

    采用欧拉法、改进欧拉法、龙格库塔法(经典RK法)求解常微分方程初值问题的自编MATLAB代码。所有函数均独立成文件便于移植。代码的使用结合一个具体题目说明,题目来源为浙江大学数值计算方法作业。

    计算方法实验实 常微分方程 欧拉法、改进欧拉法、四阶龙格库塔法

    通过本次实验,熟悉求解常微分方程初值问题的有关方法和理论,主要是欧拉法、改进欧拉法、四阶龙格库塔法,学会编制这两种方法的计算程序。体会这两种解法的功能、优缺点及适用场合。 解初值问题,并在屏幕上按适当...

    常微分方程初值问题--改进欧拉法

    1. 熟悉求解常微分方程初值问题的有关方法和理论,主要是改进欧拉法; 2. 会编制上述方法的计算程序,包括求解微分方程组的计算程序; 3. 针对实习编制程序,并上机计算其所需要的结果; 4. 通过对各种求解方法的...

    计算方法实验实+常微分方程+欧拉法、改进欧拉法、四阶龙格库塔法

    计算方法实验实+常微分方程+欧拉法、改进欧拉法、四阶龙格库塔法

    欧拉法解常微分方程.docx

    分别用欧拉公式和改进的欧拉公式方法解决RC回路问题,虽然改进的欧拉公式迭代关系更加地复杂,但是稳定性高于欧拉公式。欧拉法解常微分方程 分析报告

    前向欧拉法、后向欧拉法、梯形方法、改进欧拉方法MATLAB

    采用下述方法,求解常微分方程初值问题 y’=y-2x/y,y(0)=1,计算区间为[0, 1], 步 长为 0.1。 (1)前向欧拉法。 (2)后向欧拉法。 (3)梯形方法。 (4)改进欧拉方法。

    常微分方程数值解法源代码

    利用改进欧拉方法 龙格-库塔法 阿当母斯法求解形如y'=f(x,y)的常微分方程,原创代码,含规范注释。

    求常微分方程初值问题的数值方法.docx

    求常微分方程初值问题的数值方法.docx

    计算方法课程总结.docx

    在每个难题面前,总会有几个伟大的数学家站出来解决这个问题,而这个问题的解决者就是欧拉,他提出了向前欧拉法以及向后欧拉法,后人在他的基础上不断完善,就出现了梯形法,改进的欧拉法,直到此类方法的终结者龙格...

    解方程软件组合(多元方程组、非线性方程和常微分方程)

    本资源涵盖解多元方程组、非线性方程和常微分方程的软件组合,介绍如下: 线性方程组的数值解法: 线性方程组亦即多元一次方程组。在自然科学与工程技术中,很多问题的解决常常归结为解线性方程组,如电学中的网络...

    数值分析课程相关MATLAB源程序代码

    本资源包内部含有8个MATLAB源程序,分别是改进的欧拉法求解常微分方程组、牛顿迭代法求解非线性方程组、偏微分方程(扩散方程)的有限差分求解法、四阶龙格库塔法求解常微分方程组、自定义的拉格朗日插值、自定义的...

    用于数值分析技术的 MATLAB /Octave 代码_牛顿 插值 常微分方程 数值分析 割线

    牛顿法 Newton 方法(也称为 Newton-Raphson 方法)是一种用于逐次找到实值函数的根(或零点)...Euler 方法(也称为正向 Euler 方法)是用于求解具有给定初始值的常微分方程 (ODE) 的一阶数值过程。它是常微分方程数值

    数值计算方法程序代码

    数值计算方法:最小二乘法的曲线拟合、四阶龙格库塔法求解常微分方程、牛顿法求解非线性方程、列主元素消去法求解线性方程组、拉格朗日插值、改进欧拉方法求解常微分方程、变步长梯形积分、LU分解法求解线性方程组

    数值计算方法编程作业(C语言版)

    真正好用的数值计算编程源码,本人亲自试验,c语言版,经典,吐血编制。 1二分法求解非线性方程 牛顿法求解非线性方程 列主元素消去法求解线性方程 ...改进欧拉法求解常微分方程的初值问题 四阶龙格—库塔法 绝对超值

    SIMULINK中常用算法浅析.zip

    在SIMULINK 的仿真过程中选择合适的算法是很重要的,仿真算法是求常微分方程、传递函数、状态方程解的数值计算方法,这些方法主要有欧拉法( Euler) 、阿达姆斯法(Adams) 、龙格·库塔法(Rung-Kutta) ,这些算法都...

    matlab的欧拉方法代码-rODE:使用S4类在R中编写的常微分方程(ODE)求解器

    rODE的目标是探索R及其S4类以及与Java和Python类的差异,同时通过求解常微分方程( ODE )探索物理模拟。 动机 这不是您典型的黑盒ODE求解器。 您确实必须使用软件包中提供的任何ODE求解器来开发ODE算法。 目的是在...

    计算方法实验 插值 求积 求根等 vc++

    计算方法实验 包括插值法(牛顿、拉格朗日、样条) 数值积分(龙贝格、変步梯形)、常微分方程(欧拉法等)、线性方程组的解法(高斯赛德尔迭代法等)vc++实现 这事自己用mfc参照计算方法算法写的,有不足的地方望各位...

    计算方法c语言代码

    1、二分法求根 2、切线法求根 3、列主元消去法 4、全主元消去法 5、雅克比迭代法 6、高斯-赛德尔迭代法 7、拉格朗日插值法 8、牛顿插值法 9、复合梯形 10、复合抛物线 11、变长梯形 ...13、欧拉常微分方程

    c++实现数值代数所有运算

    常微分方程组的求解399 7.1 定步长欧拉方法399 7.2 变步长欧拉方法404 7.3 维梯方法409 7.4 定步长龙格-库塔方法414 7.5 变步长龙格-库塔方法419 7.6 变步长基尔方法424 7.7 变步长默森方法430 7.8 连分式法436 7.9 ...

Global site tag (gtag.js) - Google Analytics