Bus Error
-
Hallo zusammen,
ich bin gerade dabei ein physikalisch Problem numerisch mit c zu lösen. Nun bekomme ich aber beim Ausführen des Programms einen "Bus Error". Da ich mit C nicht ganz so gut vertraut bin, würde ich mich auf Hinweise und Hilfen freuen. Ich vermute das Problem ist auf die Arrays zurückzuführen....
Der Code wurde hierfür etwas vereinfacht/gekürzt
#include <stdio.h> #include <stdlib.h> #include <math.h> double S1, S2, S13, S23; double k1[4], k2[4], k3[4], k4[4]; double yy[10] = {0}; double y2[10] = {0}; double y3[10] = {0}; double y4[10] = {0}; double t[10] = {0}; double DGLsys(int l, double Y1, double Y2, double Y3, double Y4) { switch(l){ case 0: return Y1*Y1; break; case 1: return Y2*Y2; break; case 2: return Y3*Y3; break; case 3: return Y4*Y4; break; } } int main() { yy[0] = 0.0; y2[0] = 0.0; y3[0] = 0.0; y4[0] = 0.0; for (int i = 0; i <= 2; i++) { t[i+1] = (i+1)*h; for (int j = 0; i <= 3; j++) { k1[j] = DGLsys(j, yy[i], y2[i], y3[i], y4[i]); } for (int j = 0; i <= 3; j++) { k2[j] = DGLsys(j, yy[i]+h/2*k1[0], y2[i]+h/2*k1[1], y3[i]+h/2*k1[2], y4[i]+h/2*k1[3]); } for (int j = 0; i <= 3; j++) { k3[j] = DGLsys(j, yy[i]+h/2*k2[0], y2[i]+h/2*k1[1], y3[i]+h/2*k1[2], y4[i]+h/2*k1[3]); } for (int j = 0; i <= 3; j++) { k4[j] = DGLsys(j, yy[i]+h*k3[0], y2[i]+h*k3[1], y3[i]+h*k3[2], y4[i]+h*k3[3]); } yy[i+1] = yy[i] + h/6*(k1[0]+2*k2[0]+2*k3[0]+k4[0]); y2[i+1] = y2[i] + h/6*(k1[1]+2*k2[1]+2*k3[1]+k4[1]); y3[i+1] = y3[i] + h/6*(k1[2]+2*k2[2]+2*k3[2]+k4[2]); y4[i+1] = y4[i] + h/6*(k1[3]+2*k2[3]+2*k3[3]+k4[3]); } return 0; }
-
Schau dir mal die Abbruchbedingung der inneren Schleifen an.