#include <stdio.h> #include<math.h> #include <stdlib.h> #define N 1000 #define epsilon 0.0000005 double norma(double *x1, double *x0, int n); int main(){ int i,n,maxiter,itcount; double w; double a[N],b[N],c[N],d[N],x0[N],x1[N]; printf("dwse diastasi N\n"); scanf("%d",&n); printf("dwse maxiter\n"); scanf("%d",&maxiter); for(i=0;i<n;i++){ if(i!=0 && i!=n-1){ a[i]=-1 c[i]=-2 } else if(i==0){ a[i]=0 c[i]=-2 } else{ a[i]=-1 c[i]=0 } b[i]=4 d[i]=a[i]+b[i]+c[i]; x0[i]=d[i]; } for(w=0.1;w<=1.9;w+=0.1){ itcount=0; while (itcount<=maxiter){ for(i=0;i<n;i++){ /*4.1*/ /*homework*/ x1[i]=(1-w)*d[i]+w*..... /*homework*/ } itcount++; /*4.3*/ if(norm(x0,x1,n)<epsilon){ printf("Brethike lusi gia w=%lf se itcount=%d!\n Auti einai:\n",w,itcount); for(i=0;i<n;i++){ printf("x1[%d]=%lf",i,x1[i]); } break; } for (i=0;i<n;i++){ x0[i]=x1[i]; } if(itcount==maxiter+1) printf("Oxi sugklisi meta apo %d epanalipseis",maxiter); } } system("PAUSE"); } double norma(double *x1, double *x0,int n){ double norm=0.0; int i; for(i=0;i<n;i++) /*code to be done*/ ....... /*code to be done*/ norm = .............. return norm; }