利用vector編寫多項式類,實現多項式的加減乘除等功能以及函式值,導數值等。
#pragma once
#include #include #includeusing namespace std;
class poly
;//建構函式
poly::poly()
; poly_exp = {};
}//建構函式
poly::poly(double constant)
; poly_exp = ;
}//建構函式
poly::poly(double &coeffs, size_t numbercoeffs)
//建構函式
poly::poly(double * coeffs, size_t numbercoeffs)
}//建構函式--傳遞vector的位址進行構造
poly::poly(vector& coeffs)
//建構函式--vector直接傳參構造
poly::poly(std::initializer_listcoeffs)
//建構函式
poly::poly(std::vector&& coeffs)
// 析構函式,清除元素**記憶體
poly::~poly()
//建構函式的子函式
vectorpoly::same_exponent(int length)
return v_exp;
}//建構函式的子函式
vectorpoly::same_coefficient(double & coeffs, int length)
return v_coef;
}//建構函式的子函式
vectorpoly::power_coefficient(vector& coeffs, int length)
return v_coef;
}vectorpoly::power_exponent(int length)
return v_exp;
}// 原函式在"param"處的取值,f(param)
double poly::eval(double param) const
return _result;
}// 原函式的一階導 f'(x)
poly poly::der() const
poly new_poly;
new_poly.poly_coe = new_coeff;
new_poly.poly_exp = new_exp;
return new_poly;
}// 返回一對數,分別是原函式在"param"的取值f(param)=a和原函式的一階導在"param"處的取值f'(x)=b;-->std::pairpoly::operator()(double param) const
// "="的過載
poly& poly::operator=(const poly & poly)
//poly& poly::operator=(poly && poly)
//// "-"的過載, -p1
poly poly::operator-() const
return tmp;
}// "+"的過載
poly operator+(const poly& p1, const poly& p2)
return m_p;
} else if (p2_length > p1_length)
return m_p;
} else
return m_p; }}
// "-"的過載,p1-p2
poly operator -(const poly& p1, const poly& p2)
return m_p;
} else if (p1_length < p2_length)
for (i; i < p2_length; i++)
return m_p;
} else
return m_p; }}
//int poly::_check_exist(poly &p,double elem)
//// else
//
// }
//}// 結果的後處理--merge
poly poly::_mergesame()
} }poly new_poly;
new_poly.poly_coe = new_coef;
new_poly.poly_exp = re_exp;
return new_poly;
}void poly::_insertpoly(double coef, double exp)
}// "*"的過載 p1*p2
poly operator *(const poly& p1, const poly& p2)
else if(p2_length==1 && p1_length!=1)
else
}return p_tmp._mergesame();
//return p_tmp; }
}// "*"的過載 k*p2
poly operator *(double k, const poly& p2)
else
}poly _add(poly &p1, poly &p2)
else if(p1.poly_exp[p1]=p2.poly_exp[0])
return r;
}// "/"的過載,計算多項式的除法
poly operator /( poly& p1, poly& p2)
poly r2p(double x)
else
}poly pow(const poly& p, double n)
return q;
}// 多項式的復合
poly poly::comp(const poly& p)const
return q._reshape();
}// 多項式的冪函式
poly poly::pow(const poly& p, double n)
poly poly::_reshape()
new_coef.push_back(coef_trial);
new_expo.push_back(expo_trial);
this->poly_coe = new_coef;
this->poly_exp = new_expo;
return *this;
} else }
//多項式除法取餘
poly _mod(const poly& p1, const poly& p2)
//void poly::exact_division(const poly& p1, const poly& p2, poly * p3, poly* p4)
//// 精確的多項式除法
void exact_division(const poly & p1, const poly & p2, poly *p3, poly *p4)
double eval(poly *a,double param)
return _result;
}
c 多項式擬合
基本原理 冪函式可逼近任意函式。上式中,n表示多項式階數,實際應用中一般取3或5 假設n 5,則 共有6個未知數,僅需6個點即可求解 可表示為矩陣方程 y的維數為 r 1 u的維數 r 6 k的維數 6 1 r 6時,超定方程求解 下面是使用c 實現的多項式擬合的程式,程式中使用opencv進行矩陣...
利用鍊錶完成多項式操作
include stdafx.h include include include using namespace std typedef struct lnodedata typedef struct newlink ptr 節點包括資料和乙個指標,指標指向自身型別 typedef struct n...
利用單鏈表進行多項式運算
1.什麼是運算子過載函式?2.什麼是友元函式 3.const函式的使用與作用 4.單鏈錶能為大家做些什麼 總所周知資料結構由某一資料元素的集合和該集合中資料元素之間的關係組成,在資料儲存上我們將物理記憶體單元連續的儲存方式稱之為線性結構,例如陣列。物理記憶體單元不連續的稱之為離散結構,資料之間的鏈結...