Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 12 odgovora
  • 3.259 pregleda

Najnovija ↓

Polinom preko Hornerove sheme 28.03.2010. u 11:13 · pre 202 meseca #1
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
Re: Polinom preko Hornerove sheme 28.03.2010. u 11:46 · pre 202 meseca #2
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.
Re: Polinom preko Hornerove sheme 28.03.2010. u 11:54 · pre 202 meseca #3
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?
Re: Polinom preko Hornerove sheme 28.03.2010. u 12:03 · pre 202 meseca #4
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.
Re: Polinom preko Hornerove sheme 28.03.2010. u 12:18 · pre 202 meseca #5
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 :(
Re: Polinom preko Hornerove sheme 28.03.2010. u 12:38 · pre 202 meseca #6
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;
}
Re: Polinom preko Hornerove sheme 28.03.2010. u 13:33 · pre 202 meseca #8
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.
Re: Polinom preko Hornerove sheme 28.03.2010. u 13:47 · pre 202 meseca #9
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;
      }
}
Re: Polinom preko Hornerove sheme 28.03.2010. u 16:58 · pre 202 meseca #10
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".
Re: Polinom preko Hornerove sheme 28.03.2010. u 17:04 · pre 202 meseca #11
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..
Re: Polinom preko Hornerove sheme 28.03.2010. u 17:34 · pre 202 meseca #13
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
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme