|
>ニュートン・ラフソン法を拡張して(x^2+2x+1)などの重解を求めたいのですが、分かる方教えていただけませんか??
#include <stdio.h>
#include <math.h>
#define EPS 1e-8
#define LIMIT 100
typedef struct{
double axx;
double bx;
double c_;
}abc__;
abc__ abcx;
void set(double *x){
puts("ax^2+bx+c:a,b,c,x : >>");
scanf("%lf%lf%lf%lf",&abcx.axx,&abcx.bx,&abcx.c_,x);
}
double f_(double xx_){
return (abcx.axx*(xx_)*(xx_)+abcx.bx*(xx_)+abcx.c_);
}
double g_(double xx_){
return (2*abcx.axx*xx_+abcx.bx);
}
int main(void){
double x, dx;
int k;
set(&x);
for(k=0;k<=LIMIT;k++){
dx=x;
x=x-f_(x)/g_(x);
if(fabs(x-dx)<fabs(dx)*EPS){
printf("x=%f\n",x);break;
}
}
if(k>LIMIT)
puts("non limit");
return 0;
}
|