DKA法
をテンプレートにして作成
[
トップ
|
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
#ref(rf_dka.eq3.gif,nolink,70%)
#ref(rf_dka.eq5.gif,nolink,70%)
#ref(rf_dka.eq6.gif,nolink,70%)
#ref(rf_dka.eq12.gif,nolink,70%)
#ref(rf_dka.eq15.gif,nolink,70%)
((http://en.wikipedia.org/wiki/Durand%E2%80%93Kerner_meth...
#ref(rf_dka.eq17.gif,nolink,70%)
#ref(rf_dka.eq24.gif,nolink,70%)
#ref(rf_dka.eq28.gif,nolink,70%)
#code(C){{
/*!
*/
int aberth(vector<complexf> &z, const vector<complexf> &c...
{
double c1n = -c[1].real()/n;
cd[0] = c[0];
for(int i = 0; i <= n; ++i) a[i] = c[i].real();
for(int i = n; i > 1; --i){
horner(a, c1n, tmp, rm, i);
cd[i] = rm;
a = tmp;
}
cd[1] = a[1]+c1n;
vector<double> b(cd.size());
b[0] = abs(cd[0]);
for(int i = 1; i <= n; ++i){
b[i] = -abs(cd[i]);
}
for(int i = 0; i <= n; ++i) m += (fabs(c[i].real()) >...
for(int i = 1; i <= n; ++i){
double ri = pow(m*fabs(c[i].real())/fabs(c[0].rea...
if(ri > rmax) rmax = ri;
}
double r = rmax;
newton(b, n, r, max_iter, eps);
complexf zc = -c[1]/(c[0]*(double)n);
for(int j = 0; j < n; ++j){
double theta = (2*RX_PI/(double)n)*j+RX_PI/(2.0*n);
z[j] = zc+r*complexf(cos(theta), sin(theta));
}
return 1;
}
}}
typedef complex<double> complexf;
#code(C){{
/*!
- P(x) = a0 x^n + a1 x^(n-1) + ... + a_(n-1) x + a_n ...
*/
inline void horner(const vector<double> &a, double b, vec...
{
if(n <= 1) return;
c.resize(n);
for(int i = 1; i < n+1; ++i){
c[i-1] = rm;
rm *= b;
rm += a[i];
}
}
}}
#code(C){{
/*!
*/
int weierstrass(vector<complexf> &z, const vector<complex...
{
double e = 0.0, ej;
vector<complexf> zp;
complexf f, df;
int k;
for(k = 0; k < max_iter; ++k){
zp = z;
for(int j = 0; j < n; ++j){
f = func(z[j], c, n);
df = c[0];
for(int i = 0; i < n; ++i){
if(i != j){
df *= zp[j]-zp[i];
}
}
z[j] = zp[j]-f/df;
}
e = 0.0;
for(int j = 0; j < n; ++j){
if((ej = abs(func(z[j], c, n))) > e){
e = ej;
}
}
if(e < eps){
max_iter = k; eps = e;
return 1;
}
}
eps = e;
return 0;
}
}}
#ref(rf_dka.eq34.gif,nolink,70%)
#ref(rf_dka.eq36.gif,nolink,70%)
#ref(rf_dka.eq37.gif,nolink,70%)
#ref(rf_dka.eq38.gif,nolink,70%)
#ref(rf_dka.eq39.gif,nolink,70%)
#ref(rf_dka.eq42.gif,nolink,70%)
#ref(rf_dka.eq44.gif,nolink,70%)
#ref(rf_dka.eq46.gif,nolink,70%)
#ref(rf_dka.eq47.gif,nolink,70%)
#ref(rf_dka.eq49.gif,nolink,70%)
終了行:
#ref(rf_dka.eq3.gif,nolink,70%)
#ref(rf_dka.eq5.gif,nolink,70%)
#ref(rf_dka.eq6.gif,nolink,70%)
#ref(rf_dka.eq12.gif,nolink,70%)
#ref(rf_dka.eq15.gif,nolink,70%)
((http://en.wikipedia.org/wiki/Durand%E2%80%93Kerner_meth...
#ref(rf_dka.eq17.gif,nolink,70%)
#ref(rf_dka.eq24.gif,nolink,70%)
#ref(rf_dka.eq28.gif,nolink,70%)
#code(C){{
/*!
*/
int aberth(vector<complexf> &z, const vector<complexf> &c...
{
double c1n = -c[1].real()/n;
cd[0] = c[0];
for(int i = 0; i <= n; ++i) a[i] = c[i].real();
for(int i = n; i > 1; --i){
horner(a, c1n, tmp, rm, i);
cd[i] = rm;
a = tmp;
}
cd[1] = a[1]+c1n;
vector<double> b(cd.size());
b[0] = abs(cd[0]);
for(int i = 1; i <= n; ++i){
b[i] = -abs(cd[i]);
}
for(int i = 0; i <= n; ++i) m += (fabs(c[i].real()) >...
for(int i = 1; i <= n; ++i){
double ri = pow(m*fabs(c[i].real())/fabs(c[0].rea...
if(ri > rmax) rmax = ri;
}
double r = rmax;
newton(b, n, r, max_iter, eps);
complexf zc = -c[1]/(c[0]*(double)n);
for(int j = 0; j < n; ++j){
double theta = (2*RX_PI/(double)n)*j+RX_PI/(2.0*n);
z[j] = zc+r*complexf(cos(theta), sin(theta));
}
return 1;
}
}}
typedef complex<double> complexf;
#code(C){{
/*!
- P(x) = a0 x^n + a1 x^(n-1) + ... + a_(n-1) x + a_n ...
*/
inline void horner(const vector<double> &a, double b, vec...
{
if(n <= 1) return;
c.resize(n);
for(int i = 1; i < n+1; ++i){
c[i-1] = rm;
rm *= b;
rm += a[i];
}
}
}}
#code(C){{
/*!
*/
int weierstrass(vector<complexf> &z, const vector<complex...
{
double e = 0.0, ej;
vector<complexf> zp;
complexf f, df;
int k;
for(k = 0; k < max_iter; ++k){
zp = z;
for(int j = 0; j < n; ++j){
f = func(z[j], c, n);
df = c[0];
for(int i = 0; i < n; ++i){
if(i != j){
df *= zp[j]-zp[i];
}
}
z[j] = zp[j]-f/df;
}
e = 0.0;
for(int j = 0; j < n; ++j){
if((ej = abs(func(z[j], c, n))) > e){
e = ej;
}
}
if(e < eps){
max_iter = k; eps = e;
return 1;
}
}
eps = e;
return 0;
}
}}
#ref(rf_dka.eq34.gif,nolink,70%)
#ref(rf_dka.eq36.gif,nolink,70%)
#ref(rf_dka.eq37.gif,nolink,70%)
#ref(rf_dka.eq38.gif,nolink,70%)
#ref(rf_dka.eq39.gif,nolink,70%)
#ref(rf_dka.eq42.gif,nolink,70%)
#ref(rf_dka.eq44.gif,nolink,70%)
#ref(rf_dka.eq46.gif,nolink,70%)
#ref(rf_dka.eq47.gif,nolink,70%)
#ref(rf_dka.eq49.gif,nolink,70%)
ページ名: