资源简介
欧拉法求解微分方程组,编程软件是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\li
文件 2524 2018-05-16 11:53 Euler\Euler\Euler\Debug\Euler.tlog\li
文件 628 2018-05-16 11:53 Euler\Euler\Euler\Debug\Euler.tlog\li
文件 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个文件信息
- 上一篇:Sniffer网络抓包程序
- 下一篇:LeetCode题解高清完整c++版
评论
共有 条评论