예제 #1
0
    Polynomial& operator*=(const Polynomial &q)
    {
        Polynomial u;
        int k=(deg()+q.deg());
        u.setA(k,0);

        double w=0;
        int i=0;
        int j=0;
         for(i=0; i<=deg(); i++)
        {
            for( j=0; j<=q.deg(); j++) {

            u.setA(i+j,u.getA(i+j)+getA(i)*q.getA(j)) ;

            }
            j=0;

        }

         for(i=0; i<=k; i++)
            {
                setA(i,u.getA(i));
            }
    }
예제 #2
0
void div(const Polynomial &W, const Polynomial &P, Polynomial &Q, Polynomial &R){
    R = W;                                                                                                                                                                                                              
    for(int i=R.deg();i>=0 && R.deg()>=P.deg();i--){
        Q.setA(i-P.deg(), R.getA(i)/P.getA(P.deg()));
        for(int a=P.deg();a>=0;a--){
            R.setA((i-P.deg())+a, R.getA((i-P.deg())+a)-( P.getA(a) * Q.getA(i-P.deg()) ) ); 
        }
    }                                                                                                                                                                                                                                                                                                                                                                                                                           
}
예제 #3
0
    const Polynomial differential() const {
        Polynomial w;
        int k=deg();
        w.setA(k,0);

        for(int i=0;i<=k-1;i++){
           w.setA(i, getA(i+1)*(i+1));
            }
        return w;
    }
예제 #4
0
    const Polynomial operator+(const Polynomial &q) const
    {
        Polynomial w;
        int k=max(deg(), q.deg());
        w.setA(k,0);

        for(int i=0; i<=k; i++)
            {
                w.setA(i,getA(i)+q.getA(i));
            }
        return w;

    }
예제 #5
0
Polynomial mult2(Polynomial p, double x) //mnozy wielomian przez liczbe
{
    Polynomial v;
    for(int i = 0; i <= p.deg(); i++)
        v.setA(i, p.getA(i)*x);
    return v;
}
예제 #6
0
int main()
{

	Polynomial p;

	p.setA(0,1);
	p.setA(1,5);
	p.setA(2,0);
	p.setA(3,3);
	/*p.setA(4,2);
	p.setA(5,2);
	p.setA(6,0);
	p.setA(7,0);*/

	p.print();
	cout<<endl<<p.deg()<<endl;

	Polynomial q;

	q.setA(0,0);
	q.setA(1,0);
	q.setA(2,0);
	q.setA(3,0);
	/*q.setA(4,0);
	q.setA(5,0);
	q.setA(6,0);
	q.setA(7,0);*/

	q.print();
	cout<<endl<<q.deg()<<endl;


	/*
	cout<<endl<<"dodawanie; ";
	add(p, q).print();
    cout<<endl<<"mnozenie: ";
    mult(p, q).print();
    cout<<endl<<"wartosc p dla 2; ";
    cout<<value(p, 2);
    Polynomial wynik;
    Polynomial reszta;
    div(p, q, wynik, reszta);
    cout<<endl<<"DZIELENIE: "<<"wynik: ";
    wynik.print();
    cout<<"  reszta: ";
    reszta.print();*/
}
예제 #7
0
Polynomial add(Polynomial q, Polynomial p)
{
	int stW;
	stW = max(q.deg(), p.deg());
	Polynomial w;
	for(int i=0; i <= stW; i++)
	w.setA(i, p.getA(i)+q.getA(i));

	return w;
}
예제 #8
0
    const Polynomial operator*(const Polynomial &q) const
    {
        Polynomial u;
        int k=(deg()+q.deg());
        u.setA(k,0);

        double w=0;
        int i=0;
        int j=0;
         for(i=0; i<=deg(); i++)
        {
            for( j=0; j<=q.deg(); j++) {

            u.setA(i+j,u.getA(i+j)+getA(i)*q.getA(j)) ;

            }
            j=0;

        }
       return u;
    }
예제 #9
0
void div(Polynomial p, Polynomial q, Polynomial &wynik, Polynomial &reszta)
{
    int b = p.deg();
    Polynomial l;
    Polynomial prev_wynik;
    for(int i = b-q.deg(); p.deg() >= q.deg(); i--)
    {
        wynik.setA(i, p.getA(p.deg())/q.getA(q.deg()));
        l = mult(q, add(wynik, mult2(prev_wynik, -1)));
        p = add(p, mult2(l, -1));
        prev_wynik = wynik;
    }
    reszta = p;
}
예제 #10
0
Polynomial mult(Polynomial q, Polynomial p)
{
	Polynomial w;
    int h=0; //chwilowa wartoϾ w[i]
	for(int i = (q.deg()+p.deg()); i >= 0; i--)
    {
		for(int j = max(p.deg(), q.deg()); j >= 0; j--)
        {
            h=h+(wiekszy(p, q).getA(j)*mniejszy(p,q).getA(i-j));
        }
        w.setA(i, h);
        h=0;
    }
    return w;
}