- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
您好:) 我尝试用四阶龙格-库塔方法求解 C++ 中常微分函数的方程组(一阶微分方程)。它们是两个耦合的 FitzHugh-Nagumo 模型神经元的 ODE,它描述了跨神经元细胞膜的静电势。通过运行此代码,我遇到了段错误。大家能帮帮我吗,我应该改什么代码?
float f1(float x1, float y1, float gamma1, float x2){
float xx1;
xx1 = pow(x1,3);
return x1-(xx1/3)-y1+gamma1*x2;
}
float f2(float eps1, float x1, float a1) {
return eps1 * (x1 +a1);
}
float f3(float x2, float y2, float gamma2, float x1) {
return x2-(x2/3)-y2+gamma2*x1;
}
float f4(float eps2, float x2, float a2) {
return eps2 * (x2 +a2);
}
int main(){
// Set the parameters for the FitzHugh-Nagumo model
// Either read them from the parameter.dat
// or simply hard code them here.
float eps1 = 0.1;
float gamma1 = 2.0;
float eps2 = 0.1;
float gamma2 = -1.5;
float a1[3] = {1.3, 1.3, 1.3};
float a2[3] = {1.3, 0.5, 0.25};
float LO = -2;
float HI = 2;
vector<float> fx1;
vector<float> fx2;
vector<float> fy1;
vector<float> fy2;
fx1[0] = LO + static_cast <float> (rand()) /( static_cast <float> (RAND_MAX/(HI-LO)));
fx2[0] = LO + static_cast <float> (rand()) /( static_cast <float> (RAND_MAX/(HI-LO)));
fy1[0] = LO + static_cast <float> (rand()) /( static_cast <float> (RAND_MAX/(HI-LO)));
fy2[0] = LO + static_cast <float> (rand()) /( static_cast <float> (RAND_MAX/(HI-LO)));
const int number_steps = 5000;
const float step_size = 0.05;
for(int i=0; i <= number_steps; ++i){
float x1_1 = f1(fx1[i],fy1[i],gamma1,fx2[i]);
float y1_1 = f2(eps1, fx1[i], a1[0]);
float x2_1 = f3(fx2[i],fy2[i],gamma2,fx1[i]);
float y2_1 = f4(eps2,fx2[i],a2[0]);
float x1_2 = f1(fx1[i]+((step_size/2)*x1_1),fy1[i]+((step_size/2)*y1_1),gamma1,fx2[i]+((step_size/2)*x2_1));
float y1_2 = f2(eps1, fx1[i]+((step_size/2)*x1_1), a1[0]);
float x2_2 = f3(fx2[i]+((step_size/2)*x2_1),fy2[i]+((step_size/2)*y2_1),gamma2,fx1[i]+((step_size/2)*x1_1));
float y2_2 = f4(eps2,fx2[i]+((step_size/2)*x2_1),a2[0]);
float x1_3 = f1(fx1[i]+((step_size/2)*x1_2),fy1[i]+((step_size/2)*y1_2),gamma1,fx2[i]+((step_size/2)*x2_2));
float y1_3 = f2(eps1, fx1[i]+((step_size/2)*x1_2), a1[0]);
float x2_3 = f3(fx2[i]+((step_size/2)*x2_2),fy2[i]+((step_size/2)*y2_2),gamma2,fx1[i]+((step_size/2)*x1_2));
float y2_3 = f4(eps2,fx2[i]+((step_size/2)*x2_2),a2[0]);
float x1_4 = f1(fx1[i]+(step_size*x1_3),fy1[i]+(step_size*y1_3),gamma1,fx2[i]+(step_size*x2_3));
float y1_4 = f2(eps1, fx1[i]+(step_size*x1_3), a1[0]);
float x2_4 = f3(fx2[i]+(step_size*x2_3),fy2[i]+(step_size*y2_3),gamma2,fx1[i]+(step_size*x1_3));
float y2_4 = f4(eps2,fx2[i]+(step_size*x2_3),a2[0]);
fx1[i+1] = fx1[i] +(step_size/6)*(x1_1 + 2*x1_2 + 2*x1_3 + x1_4);
fy1[i+1] = fy1[i] +(step_size/6)*(y1_1 + 2*y1_2 + 2*y1_3 + y1_4);
fx2[i+1] = fx2[i] +(step_size/6)*(x2_1 + 2*x2_2 + 2*x2_3 + x2_4);
fy2[i+1] = fy2[i] +(step_size/6)*(y2_1 + 2*y2_2 + 2*y2_3 + y2_4);
}
最佳答案
分配您的数据。
vector<float> fx1;
vector<float> fx2;
vector<float> fy1;
vector<float> fy2;
考虑到数据已经可用,创建您随后尝试访问的空 vector 。它不是。
使用:
vector<float> fx1(number_steps+2);
vector<float> fx2(number_steps+2);
vector<float> fy1(number_steps+2);
vector<float> fy2(number_steps+2);
关于c++常微分方程组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53497512/
#include using namespace std; class C{ private: int value; public: C(){ value = 0;
这个问题已经有答案了: What is the difference between char a[] = ?string?; and char *p = ?string?;? (8 个回答) 已关闭
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 此帖子已于 8 个月
除了调试之外,是否有任何针对 c、c++ 或 c# 的测试工具,其工作原理类似于将独立函数复制粘贴到某个文本框,然后在其他文本框中输入参数? 最佳答案 也许您会考虑单元测试。我推荐你谷歌测试和谷歌模拟
我想在第二台显示器中移动一个窗口 (HWND)。问题是我尝试了很多方法,例如将分辨率加倍或输入负值,但它永远无法将窗口放在我的第二台显示器上。 关于如何在 C/C++/c# 中执行此操作的任何线索 最
我正在寻找 C/C++/C## 中不同类型 DES 的现有实现。我的运行平台是Windows XP/Vista/7。 我正在尝试编写一个 C# 程序,它将使用 DES 算法进行加密和解密。我需要一些实
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
有没有办法强制将另一个 窗口置于顶部? 不是应用程序的窗口,而是另一个已经在系统上运行的窗口。 (Windows, C/C++/C#) 最佳答案 SetWindowPos(that_window_ha
假设您可以在 C/C++ 或 Csharp 之间做出选择,并且您打算在 Windows 和 Linux 服务器上运行同一服务器的多个实例,那么构建套接字服务器应用程序的最明智选择是什么? 最佳答案 如
你们能告诉我它们之间的区别吗? 顺便问一下,有什么叫C++库或C库的吗? 最佳答案 C++ 标准库 和 C 标准库 是 C++ 和 C 标准定义的库,提供给 C++ 和 C 程序使用。那是那些词的共同
下面的测试代码,我将输出信息放在注释中。我使用的是 gcc 4.8.5 和 Centos 7.2。 #include #include class C { public:
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我的客户将使用名为 annoucement 的结构/类与客户通信。我想我会用 C++ 编写服务器。会有很多不同的类继承annoucement。我的问题是通过网络将这些类发送给客户端 我想也许我应该使用
我在 C# 中有以下函数: public Matrix ConcatDescriptors(IList> descriptors) { int cols = descriptors[0].Co
我有一个项目要编写一个函数来对某些数据执行某些操作。我可以用 C/C++ 编写代码,但我不想与雇主共享该函数的代码。相反,我只想让他有权在他自己的代码中调用该函数。是否可以?我想到了这两种方法 - 在
我使用的是编写糟糕的第 3 方 (C/C++) Api。我从托管代码(C++/CLI)中使用它。有时会出现“访问冲突错误”。这使整个应用程序崩溃。我知道我无法处理这些错误[如果指针访问非法内存位置等,
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我有一些 C 代码,将使用 P/Invoke 从 C# 调用。我正在尝试为这个 C 函数定义一个 C# 等效项。 SomeData* DoSomething(); struct SomeData {
这个问题已经有答案了: Why are these constructs using pre and post-increment undefined behavior? (14 个回答) 已关闭 6
我是一名优秀的程序员,十分优秀!