欧拉法求解微分方程组


欧拉法求解微分方程组,编程软件是VS2013,编程语言是C语言
资源截图
代码片段和文件信息
#include “stdio.h“   
#include “stdlib.h“   
#include    

int Func(double y[] double d[])
{
d[0] = - y[1] - y[2] ;      /*y0‘=y1*/
d[1] = y[0] + 0.2 * y[1];     /*y1‘=y0*/
d[2] = 0.2 + (y[1] - 5.7) * y[2];     /*y2‘=y2*/
return(1);
}

void Euler1(double t double y[] int n double h int k double z[3][11])
/*int n;      /*整型变量,微分方程组中方程的个数,也是未知函数的个数
int k;      /*整型变量。积分步数(包括起始点这一步)
double t;       /*双精度实型变量对微分方程进行积分的起始点t0
double h;       /*双精度实型变量。积分步长
double y[]; /*双精度实型一维数组,长度为n。存放n个未知函数yi在起始点t0处的函数值
double z[]; /*双精度实型二维数组,体积为nxk。返回k个积分点(包括起始点)上的未知函数值
*/
{
int i j;
double *d;
d = (double *)malloc(n*sizeof(double));
if (d == NULL)
{
printf(“内存分配失败
“);
exit(1);
}
/*将方程组的初值赋给数组z[i*k]*/
for (i = 0; i <= n - 1; i++)
z[i][0] = y[i];
for (j = 1; j <= k - 1; j++)
{
Func(y d);          /*求出f(x)*/
for (i = 0; i <= n - 1; i++)
y[i] = z[i][j - 1] + h*d[i];

Func(y d);
for (i = 0; i <= n - 1; i++)
d[i] = z[i][j - 1] + h*d[i];
for (i = 0; i <= n - 1; i++)
{
y[i] = (y[i] + d[i]) / 2.0;
z[i][j] = y[i];
}
}
free(d);
return;
}
int Savedata(double xx[11] double Ynnn[3][11])
{
FILE *fp;//文件指针  
int i j;

/*文件的打开*/
fp = fopen(“Euler_data.txt“ “w“);//fopen打开文件,这个文件可以是当前不存在的。“w”以写入的形式打开,“r”以读的形式打开  
if (fp == NULL) //判断如果文件指针为空  
{
printf(“File cannot open! “);
exit(0);//在以0的形式退出,必须在文件开头有#include stdlib 头文件即standard library标准库头文件  
}

//写入东西  
for (j = 0; j <= 9; j++)
fprintf(fp “%f “ xx[j]);//写入指针fp,写入的东西就是刚才的用户输入的d注意这里的fp和d没有引号  
fprintf(fp “%f
“ xx[10]);
for (i = 0; i <= 2; i++)
{
for (j = 0; j <= 9; j++)
fprintf(fp “%f “ Ynnn[i][j]);//写入指针fp,写入的东西就是刚才的用户输入的d注意这里的fp和d没有引号  
fprintf(fp “%f
“ Ynnn[i][10]);
}
//关闭文件  
fclose(fp);
return 0;
}

int main()
{
int i j;
double y[3] z[3][11] t h x[11];
y[0] = 0;          /*初值y0(0)=0*/
y[1] = 2;           /*初值y1(0)=2*/
y[2] = 2;           /*初值y2(0)=2*/
t = 0.0;              /*起始点t=0*/
h = 0.1;             /*步长为0.01*/
Euler1(t y 3 h 11 z);
printf(“定步长欧拉法结果:
“);
for (i = 0; i <= 10; i++)
{
x[i] = i*h;
printf(“t=%f    “ x[i]);
for (j = 0; j <= 2; j++)
printf(“y(%d)=%f   “ j z[j][i]);
printf(“
“);
}
Savedata(x z);
getchar();
return 0;

}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-06-11 11:09  EulerEuler
     目录           0  2018-06-11 11:08  EulerEulerDebug
     文件       33280  2018-05-16 11:53  EulerEulerDebugEuler.exe
     文件      244784  2018-05-16 11:53  EulerEulerDebugEuler.ilk
     文件      593920  2018-05-16 11:53  EulerEulerDebugEuler.pdb
     文件     3473408  2018-05-16 12:07  EulerEulerEuler.sdf
     文件         961  2018-05-15 15:04  EulerEulerEuler.sln
     文件       24064  2018-05-16 12:07  EulerEulerEuler.v12.suo
     目录           0  2018-06-11 11:09  EulerEulerEuler
     目录           0  2018-06-11 11:09  EulerEulerEulerDebug
     文件        1765  2018-05-16 11:53  EulerEulerEulerDebugEuler.log
     文件       12784  2018-05-16 11:53  EulerEulerEulerDebugEuler.obj
     目录           0  2018-06-11 11:09  EulerEulerEulerDebugEuler.tlog
     文件        2586  2018-05-16 11:53  EulerEulerEulerDebugEuler.tlogcl.command.1.tlog
     文件        1900  2018-05-16 11:53  EulerEulerEulerDebugEuler.tlogCL.read.1.tlog
     文件        1548  2018-05-16 11:53  EulerEulerEulerDebugEuler.tlogCL.write.1.tlog
     文件         188  2018-05-16 11:53  EulerEulerEulerDebugEuler.tlogEuler.lastbuildstate
     文件        2626  2018-05-16 11:53  EulerEulerEulerDebugEuler.tloglink.command.1.tlog
     文件        2524  2018-05-16 11:53  EulerEulerEulerDebugEuler.tloglink.read.1.tlog
     文件         628  2018-05-16 11:53  EulerEulerEulerDebugEuler.tloglink.write.1.tlog
     文件        3459  2018-05-16 11:30  EulerEulerEulerDebugstdafx.obj
     文件      109568  2018-05-16 11:53  EulerEulerEulerDebugvc120.idb
     文件       86016  2018-05-16 11:53  EulerEulerEulerDebugvc120.pdb
     文件        2692  2018-05-16 11:53  EulerEulerEulerEuler.cpp
     文件        4233  2018-05-15 15:04  EulerEulerEulerEuler.vcxproj
     文件        1312  2018-05-15 15:04  EulerEulerEulerEuler.vcxproj.filters
     文件         410  2018-05-16 12:04  EulerEulerEulerEuler_data.txt
     文件        1496  2018-05-15 15:04  EulerEulerEulerReadMe.txt
     文件         211  2018-05-15 15:04  EulerEulerEulerstdafx.cpp
     文件         234  2018-05-15 15:04  EulerEulerEulerstdafx.h
     文件         236  2018-05-15 15:04  EulerEulerEuler argetver.h
............此处省略0个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)