• 大小: 1.14MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-08-28
  • 语言: C/C++
  • 标签: Euler  

资源简介

欧拉法求解微分方程组,编程软件是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(“内存分配失败\n“);
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\t“ xx[j]);//写入指针fp,写入的东西就是刚才的用户输入的d注意这里的fp和d没有引号  
fprintf(fp “%f\n“ xx[10]);
for (i = 0; i <= 2; i++)
{
for (j = 0; j <= 9; j++)
fprintf(fp “%f\t“ Ynnn[i][j]);//写入指针fp,写入的东西就是刚才的用户输入的d注意这里的fp和d没有引号  
fprintf(fp “%f\n“ 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(“定步长欧拉法结果:\n“);
for (i = 0; i <= 10; i++)
{
x[i] = i*h;
printf(“t=%f\t   “ x[i]);
for (j = 0; j <= 2; j++)
printf(“y(%d)=%f\t  “ j z[j][i]);
printf(“\n“);
}
Savedata(x z);
getchar();
return 0;

}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-06-11 11:09  Euler\Euler\
     目录           0  2018-06-11 11:08  Euler\Euler\Debug\
     文件       33280  2018-05-16 11:53  Euler\Euler\Debug\Euler.exe
     文件      244784  2018-05-16 11:53  Euler\Euler\Debug\Euler.ilk
     文件      593920  2018-05-16 11:53  Euler\Euler\Debug\Euler.pdb
     文件     3473408  2018-05-16 12:07  Euler\Euler\Euler.sdf
     文件         961  2018-05-15 15:04  Euler\Euler\Euler.sln
     文件       24064  2018-05-16 12:07  Euler\Euler\Euler.v12.suo
     目录           0  2018-06-11 11:09  Euler\Euler\Euler\
     目录           0  2018-06-11 11:09  Euler\Euler\Euler\Debug\
     文件        1765  2018-05-16 11:53  Euler\Euler\Euler\Debug\Euler.log
     文件       12784  2018-05-16 11:53  Euler\Euler\Euler\Debug\Euler.obj
     目录           0  2018-06-11 11:09  Euler\Euler\Euler\Debug\Euler.tlog\
     文件        2586  2018-05-16 11:53  Euler\Euler\Euler\Debug\Euler.tlog\cl.command.1.tlog
     文件        1900  2018-05-16 11:53  Euler\Euler\Euler\Debug\Euler.tlog\CL.read.1.tlog
     文件        1548  2018-05-16 11:53  Euler\Euler\Euler\Debug\Euler.tlog\CL.write.1.tlog
     文件         188  2018-05-16 11:53  Euler\Euler\Euler\Debug\Euler.tlog\Euler.lastbuildstate
     文件        2626  2018-05-16 11:53  Euler\Euler\Euler\Debug\Euler.tlog\link.command.1.tlog
     文件        2524  2018-05-16 11:53  Euler\Euler\Euler\Debug\Euler.tlog\link.read.1.tlog
     文件         628  2018-05-16 11:53  Euler\Euler\Euler\Debug\Euler.tlog\link.write.1.tlog
     文件        3459  2018-05-16 11:30  Euler\Euler\Euler\Debug\stdafx.obj
     文件      109568  2018-05-16 11:53  Euler\Euler\Euler\Debug\vc120.idb
     文件       86016  2018-05-16 11:53  Euler\Euler\Euler\Debug\vc120.pdb
     文件        2692  2018-05-16 11:53  Euler\Euler\Euler\Euler.cpp
     文件        4233  2018-05-15 15:04  Euler\Euler\Euler\Euler.vcxproj
     文件        1312  2018-05-15 15:04  Euler\Euler\Euler\Euler.vcxproj.filters
     文件         410  2018-05-16 12:04  Euler\Euler\Euler\Euler_data.txt
     文件        1496  2018-05-15 15:04  Euler\Euler\Euler\ReadMe.txt
     文件         211  2018-05-15 15:04  Euler\Euler\Euler\stdafx.cpp
     文件         234  2018-05-15 15:04  Euler\Euler\Euler\stdafx.h
     文件         236  2018-05-15 15:04  Euler\Euler\Euler\targetver.h
............此处省略0个文件信息

评论

共有 条评论