Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Polinom preko Hornerove sheme

[es] :: C/C++ programiranje :: C/C++ za početnike :: Polinom preko Hornerove sheme

[ Pregleda: 2259 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

0Mashinac0

Član broj: 255958
Poruke: 9



Profil

icon Polinom preko Hornerove sheme28.03.2010. u 10:13 - pre 171 meseci
naime treba da ispishem program za reshavanje polinoma preko hornerove sheme, gde su koeficijenti realni a x se krece od 0 do 1 sa nekim korakom 0.0001 shto i nije mnogo bitno
E sad ja sam uradio to onako seljacki, ali to nije to jer nije upotrebljivo, jer se odnosi samo na polinom 10og stepena shto mi je i zadato u zadatku, ali treba ga napraviti univerzalnim
Drugi problem je shto sve treba da odradim najprostije preko funkcija, ne smem da koristim nizove niti bilo shta drugo
Da bi znali o cemu pricam evo ta "seljacka" varijanta koja moze se reci radi
Code:

#include <stdio.h>


float polinom( float a0,float a1, float a2, float a3, float a4, float a5, float a6, float a7, float a8, float a9, float x );


main()
     {

     float a0,a1,a2,a3,a4,a5,a6,a7,a8,a9;
     float pol,x;

     printf("\n Unesite koeficijente: \n");
     scanf("%f %f %f %f %f %f %f %f %f %f ",&a0,&a1,&a2,&a3,&a4,&a5,&a6,&a7,&a8,&a9);

     for(x=0;x<1;x=x+0.0001)
       {
                            
       pol = polinom(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,x);

       printf("x=%f P(x)0 %f\n",x,pol);
       }
     system("PAUSE");

     }


float polinom( float a0,float a1, float a2, float a3, float a4, float a5, float a6, float a7, float a8, float a9, float x )
     {

     return  (a0+x*(a1+x*(a2+x*(a3+x*(a4+x*(a5+x*(a6+x*(a7+x*(a8+x*(a9+x))))))))));

     }


E sad sam zaglavio kod opshteg reshenja, jer ne znam kako da povezem stepene n sa koeficijentima a kojih ima n+a, i da mi vrti unosjenje za svaki koeficijent u zavisnosti kojeg mi je stepena polinom
konkretnije sa nizovima bi ishlo ovako neshto
Code:

...nesho...

 printf("Unesite stepen polinoma:");
 scanf("%d",&n);
 for(i=0;i<=n;i++)
   {
    printf("Unesite koeficijent uz %d stepen:",i);
    scanf("%f",&a[i]);
   }
for(x=0;x<=1;x=x+0.0001)
  {
  p=a[0];
 xp=x;
 for(i=1;i<=n;i++)
    {
     p=p+a[i]*xp;
     xp=xp*x;

....neshto...

A sad ovaj treci kod nemojte zameriti sigurno je pun greshaka i nebuloza ali tu sam samo nabacao kako sam mislio da to uklopim, ali sam jednostavno zakucao, a moguce da nishta ne valja pa da ne moze ni da se ispravi...
Code:

#include<stdio.h>

float polinom(float y,float x,int a, int n, int i);

main()

     {
      
     float pol,x,y,a,n;

     printf("Unesite stepen polinoma:");
     scanf("%d",&n);
     for(i=0;i<=n;i++)

  
     y = a(0);  

     for(i=0;i<=n;i++)
       {
       printf("Unesite koeficijent uz %d stepen:",i);
       scanf("%f",&a(i));
       }

     for(x=0;x<=1;x=x+0.00001)
       {
                         
         pol=polinom(y,x,a,n,i);

         printf("x=%f P(x)0 %f\n",x,pol);
       }
     system("PAUSE");
     }


     float polinom(float y,float x,int a, int n, int i)
       {
         return y=x*y + a(i);    
       }

Eto to bi bila moja muka, pa ako je neko raspolozen :)
Unapred zahvalan
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Polinom preko Hornerove sheme28.03.2010. u 10:46 - pre 171 meseci
U funkciji polinom parametar a treba da bude niz, int* a, a parametar i je suvišan, jer u samoj funkciji treba da imaš for petlju koja ide od n do 0 i računa y = a[i ] + x * y, gde je početno y=1. Parametar y je suvišan (i ta promenljiva treba da bude lokalna, kao i i), jer je to povratna vrednost funkcije.

Uzgred, preporučujem zamenu float sa double u celom kodu (i zamena %f sa %lf). Čisto za svaki slučaj.
 
Odgovor na temu

0Mashinac0

Član broj: 255958
Poruke: 9



Profil

icon Re: Polinom preko Hornerove sheme28.03.2010. u 10:54 - pre 171 meseci
Pa naveo sam gore primer to je drugi kod kako to preko nizova radi, samo je drugacije obelezeno
Code:

 for(i=1;i<=n;i++)
    {
     p=p+a[i]*xp;

pitanje je moze li se nako drugacije uraditi, menjati ovo a u zavisnosti od n, bez niza, da se napravi funkcija koja povezuje a i n?
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Polinom preko Hornerove sheme28.03.2010. u 11:03 - pre 171 meseci
Moraš da imaš petlju, a sa funkcionalne strane svejedno je da li će da stoji u funkciji ili van nje. Sa estetske strane bolje je da stoji u funkciji.

U drugom kodu nemaš petlju.
 
Odgovor na temu

0Mashinac0

Član broj: 255958
Poruke: 9



Profil

icon Re: Polinom preko Hornerove sheme28.03.2010. u 11:18 - pre 171 meseci
Pa i ja bih ubacio u funkciju, ali nije mi jasno kako bi ta for petlja izgledala? Granice ishle od 0 do n i sa njom bih menjao vrednost a?
Ako moze nekoliko linija koda, ne znam ovo da ispishem :(
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Polinom preko Hornerove sheme28.03.2010. u 11:38 - pre 171 meseci
Objasnio sam, ali dobro, evo koda. Umesto

Code:
float polinom( float a0,float a1, float a2, float a3, float a4, float a5, float a6, float a7, float a8, float a9, float x )
{
     return  (a0+x*(a1+x*(a2+x*(a3+x*(a4+x*(a5+x*(a6+x*(a7+x*(a8+x*(a9+x))))))))));
}

treba

Code:
double polinom(double *a, int n, double x)
{
     double y = 1.0;

     for (int i = n - 1; i >= 0; --i)
          y = a[i] + y * x;

     return y;
}
 
Odgovor na temu

0Mashinac0

Član broj: 255958
Poruke: 9



Profil

icon Re: Polinom preko Hornerove sheme28.03.2010. u 12:25 - pre 171 meseci
shvatio sam ovo, ali u prvom postu sam napisao da ne smem da koristim nizove, tako da mi ovo ne pomaze, ovosa a
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Polinom preko Hornerove sheme28.03.2010. u 12:33 - pre 171 meseci
Pazi stvarno... E pa onda dok učitavaš trenutni koeficijent računaš i y. Tu isto imaš petlju. Kad se završi učitavanje koeficijenata automatski imaš gotovo y.
 
Odgovor na temu

0Mashinac0

Član broj: 255958
Poruke: 9



Profil

icon Re: Polinom preko Hornerove sheme28.03.2010. u 12:47 - pre 171 meseci
Ovako neshto?

Code:

double polinom(double a, int n, double x)
{
     double y = 1.0;

     for(a=0;a<=n;a=a+1)
       {
       printf("Unesite koeficijent uz %d stepen:",n);
       scanf("%lf",&a);

       y = a + y * x;
       
       return y;
      }
}
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Polinom preko Hornerove sheme28.03.2010. u 15:58 - pre 171 meseci
Mislio sam da sam rešio problem, ali zapravo nisam. Trenutno mi izgleda nemoguće da vrtiš x i računaš y(x), a da ne držiš koeficijente negde, u nekom nizu. Mislim da je zadatak pogrešno sročen, ili da si ti pogrešno shvatio to "bez nizova".
 
Odgovor na temu

0Mashinac0

Član broj: 255958
Poruke: 9



Profil

icon Re: Polinom preko Hornerove sheme28.03.2010. u 16:04 - pre 171 meseci
Pa veruj mi nisam pogreshno shvatio, zadaci sa nizovima su vraceni i trazen drugi nacin, tako da ja nisam ni slao svoj odgovor koji ukljucuje nizove jer sam se udarao sa ovim, ne znam kako bih drugacije izveo, bash kako kazesh na koju foru bih povezao koeficijente sa brojem stepena i unosio svaki i racunao... Verovatno je moguce cim je trazen drugi nacin..
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Polinom preko Hornerove sheme28.03.2010. u 16:31 - pre 171 meseci
Možda je uslov da nema nizova na steku, ali da su dozvoljeni nizovi u hipu (malloc).
 
Odgovor na temu

0Mashinac0

Član broj: 255958
Poruke: 9



Profil

icon Re: Polinom preko Hornerove sheme28.03.2010. u 16:34 - pre 171 meseci
To prevazilazi moje moucnosti, na kraju su poslati onu seljacku varijantu i ovaj pokushajni kod pa shta bude, nije greh ne znati...
Hvala na trudu
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Polinom preko Hornerove sheme

[ Pregleda: 2259 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.