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.


Anmelden zum Antworten