gpt4 book ai didi

c - Fitzhugh-Nagumo 模型的 C 实现有什么错误?

转载 作者:行者123 更新时间:2023-11-30 19:15:36 24 4
gpt4 key购买 nike

我已经为 Fitzhugh-Nagumo 模型实现了 MATLAB 代码并获得了绘图,但是当我将其转换为如下所示的 C 代码时,它没有给我正确的输出。具体来说,神经元没有尖峰。谁能指出其中的错误吗?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
double rand2(void);
int main()
{
int n,i;
double dt,r[120000],g[120000],rr ;// 20min = 20*60/dt = 120000
double a=0.08,b=0.7,c=0.8,gg;
//FILE * temp = fopen("fhn.dat", "w");
srand(time(NULL));
//T=200*60;
dt=0.01;
r[0]=-0.212002413260425;//initial values
g[0]=-0.869601930608358;

for(n=1;n<=120000;n++)
{
r[n]=(dt)*((a*g[n-1])+b-(c*r[n-1]))+r[n-1];
rr=rand2(); //uniform random number between 0 and 1
gg=pow(g[n-1],3); // g[n-1]^3
g[n]=(dt)*(g[n-1]-gg-r[n-1]+rr)+g[n-1];
//printf("rr %f\n",rr);
}

FILE *gnuplot = popen("gnuplot -persistent", "w");
fprintf(gnuplot, "set title \"Fitzhugh-Nagumo\" \n");
fprintf(gnuplot, "plot '-' with lines \n");
for (i=0;i<=120000-1;i++)
{
fprintf(gnuplot, "%g %g\n", r[i],g[i]);
//fprintf(temp, "%lf %lf \n",r[i], g[i]); //Write the data to a temporary file

}
fprintf(gnuplot, "e\n");
fflush(gnuplot);
pclose(gnuplot);
//fclose(temp);
return 0;
}

double rand2()
{
return (double)rand() / (double)RAND_MAX ;
}
<小时/>

注意:我期望输出如下图所示:

enter image description here

更新:链接到 MATLAB Code .

但是我得到的是这样的:

enter image description here

最佳答案

r[n] 括号错误。替换

r[n]=(dt)*((a*g[n-1])+b-(c*r[n-1]))+r[n-1];

r[n]=(dt)*(a*(g[n-1]+b-c*r[n-1]))+r[n-1];

结果看起来像预期的那样。

关于c - Fitzhugh-Nagumo 模型的 C 实现有什么错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32294772/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com