Metode Numerice probleme

Embed Size (px)

Citation preview

MET BISEC POL #include #include #include double valpol(int n,double A[10],double x) { int i; double b; b=A[n]; for(i=n-1;i>=0;i--) b=A[i]+x*b; return b; } main() { int n; double A[10]; double i,ls,ld,er,xm,*r; printf("\neroarea:"); scanf("%lf",&er); printf("\ngrad:"); scanf("%d",&n); printf("\nlim st:"); scanf("%lf",&ls); printf("\nlim dr:"); scanf("%lf",&ld); for(i=0;i0) { printf("err"); getche(); return 0; } if(valpol(n,A,ls)==0) { *r=ls; return 1; } if(valpol(n,A,ld)==0) { *r=ld; return 1; } xm=(ls+ld)/2; while((fabs(ld-ls)>er)&&(valpol(n,A,xm)! =0)) { xm=(ls+ld)/2; if(valpol(n,A,xm)*valpol(n,A,ls)0) return 0; if(f(ls)==0) { *sol=ls; return 1; } if(f(ld)==0) { *sol=ld; return 1; } xm=(ls+ld)/2; while((fabs(ld-ls)>err)&&(f(xm)!=0)) { xm=(ls+ld)/2; if(f(ls)*f(xm)=1) sem=0; else pct+=pas; } while ((sem==1)&&(pcterr)&&(iter=0;i--) aux=coef[i] +point*aux; return aux;} /*Functia intoarce valoarea polinomului intr-un punct dat. */ double DerPol ( int grad,double coef[],double point) {int i; double aux; static double B[NMax]; B[grad]=aux=coef[grad]; for (i=grad-1;i>=0;i--) {B[i]=coef[i]+point*B[i+1]; aux=B[i]+point*aux;} return aux;} /*Functia intoarce :2 cind derivata este nula 1 cand nu pot afla solutia cu precizia dorita 0 in caz de succes*/ int NewtonRaphsonP (int grad,double coef[],double x0,double niter,double err, double *sol) {double xn,xn_1,aux; int cont=1; xn=x0; do { xn_1=xn; if ((aux=DerPol(grad,coef,xn_1))==0) return 2; xn=xn_1-ValPol(grad,coef,xn_1)/aux; cont++;} while ((fabs(xnxn_1)>err)&&(cont=niter) return 1; *sol=xn; return 0;} main() {int i,NrMax,grad; double coef[NMax],err,x0; clrscr(); printf("Calul radacinii unui polinom, cu metoda Newton-Raphson\n\n"); printf("\n\nIntroduceti gradul polinomului\ngrad= "); scanf("%d",&grad); printf("Introduceti coeficientii polinomului:\n"); for(i=0;i