algorytm.org

Implementacja w C/C++



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Metoda połowienia - Implementacja w C/C++
Ocena użytkownikóww: *****  / 12
SłabyŚwietny
Nadesłany przez Tomasz Lubiński, 08 sierpnia 2005 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.

polowienie_c.c:
//www.algorytm.org
//Tomasz Lubinski (c)2001
//metoda polowienia - obliczanie zer funkcji nieliniowyh na przykladzie wielomianow

#include <stdio.h>
#include <conio.h>


int n,m;
float a[100];
float p,k,s;


float w(int k, float x)  //algorytm Hornera do obliczania wartosci wielomianu
{
if (k==n)
{return a[n];}
else
{return w(k+1,x)*x+a[k];}
}


main()
{
int i;
clrscr();
printf("Metoda polowienia - obliczanie miejsc zerowych funkcji nieliniowych \nna przykladzie wielomianow\n\nPodaj stopien wielomianu\n");
scanf("%d", &n);
if (n>100)
{printf("Za duzy stopien wielomianu"); getche(); return(1); }
printf("\nPodaj teraz kolejne wspolczynniki wielomianu.\nZaczynij od tego z najwieksza potega.\n");
for(i=n; i>=0; i--)
 {printf("a%d ", i);
  scanf("%e", &a[i]);}

printf("Podaj poczatek przedzialu\n");
scanf("%e", &p);
printf("Podaj koniec przedzialu\n");
scanf("%e", &k);
printf("Podaj liczbe iteracji\n");
scanf("%d", &m);

for(i=1; i<m; i++)
 {s=(p+k)/2;
  if ((w(0,p)*w(0,s)<0)&&(w(0,s)*w(0,k)>0)) {k=s; continue;}
   else if ((w(0,p)*w(0,s)>0)&&(w(0,s)*w(0,k)<0)) {p=s; continue;}
    else if (w(0,s)==0) {break;}
     else {printf("Przedzial nie spelnia zalozen"); getche(); return(1);}
 }
if (w(0,s)==0) {printf("Dokladny pierwiastek wynosi %f",s);}
else {printf("Przyblizony pierwiastek wynosi %f",s);}
getche();
return(0);
}















Dodaj komentarz