All pastes #442683 Raw Edit

Miscellany

public c v1 · immutable
·published 2007-04-16 12:24 UTC
rendered paste body
/*********************************************************************//* V programskem jeziku C napisite program za izracun nicle polinoma *//* p(x) = a0xn + a1xn-1 + ... + an-1x + an po tangentni metodi.      */ /* Stopnjo polinoma, koeficiente polinoma, zacetni priblizek         *//* in natancnost iskanja vpisemo na zacetku programa.                *//*********************************************************************/   #include <stdio.h>#include <math.h> float funkcija(int polje[], int stopnja, float x)  //funkcija racuna vrednost za dan x       {           int i = 0;           float REZULTAT = 0;           while(stopnja >= 0)            {                float a = pow(x, stopnja);         //potenciramo                float funk = a * polje[i];         //mnozimo potenco s koeficientom                 stopnja--;                                         i++;                REZULTAT = REZULTAT + funk;        //dobljeno pristejemo k rezultatu           }            return(REZULTAT);                       //funkcija vrne koncen rezultat pri podanem x-u        } main() {    int koef;    int stopnja;     printf("\n Vnesi stopnjo polinoma: ");    scanf("%d",&stopnja);                       //shranimo stopnjo     int polje[stopnja + 1];                       ///koeficientov je eden vec kot je stopnja, ker je  zadnji lahko brez x (5x^2+3x+6)    int i=0;     while(i <= stopnja)                               {        printf("\n Vnesi koeficient: ");        scanf("%d",&koef);                      //shranimo koeficient        polje[i] = koef;          i++;                }     int ST = stopnja;    int odvod[stopnja];                         //ustvarimo novo polje, v katerega bomo shranili koeficiente odvoda    int k = 0;     while(k < ST)                                //koeficientov odvoda bo tocno toliko kot je stopnja polinoma (3x^3+3x^2+3x+2 --> 9x^2+6x+3)    {                odvod[k] = polje[k] * stopnja;                k++;                stopnja--;    }     float natancnost;    printf("\n Vnesi natancnost: ");    scanf("%f",&natancnost);                    //shranimo natancnost     float priblizek;                                printf("\n Vnesi priblizek: ");    scanf("%f",&priblizek);                     //shranimo priblizek (to je zacetni x ?!??)     float X = priblizek;    float a = 10 + natancnost;     while(fabs(a) > natancnost)                 //ponavljamo tako dolgo dokler absolutna vrednost funkcije ni manjsa od natancnosti    {                  a = funkcija(polje, ST, X);             //racunamo vrednost polinoma pri X                  float b = funkcija(odvod, ST - 1, X);           //racunamo vrednost odvoda pri X --> stopnja (ST-1) je pri                                                                 //odvodu za ena manjsa kot pri polinomu                   X = X - (a / b);                                //dolocimo nov X    }      printf("\n Nicla polinoma je: %f\n",X);                     //izpisemo tisti x, pri katerem je absolutna vredno polinoma < natancnosti    return 0;}