x1 为1
迭代公式: Xn+1=Xn-f(Xn)/f'(Xn)
当|Xn+1-Xn|<=1e-5时输出。
迭代公式: Xn+1=Xn-f(Xn)/f'(Xn)
当|Xn+1-Xn|<=1e-5时输出。
函数方程为:ax^3+bx^2+c^x+d=0
输入1 3 5 2 的正确结果: -0.546602
#include<stdio.h>
#include<stdlib.h>
#include <math.h>
void main()
{
double a,b,c,d,x,xn,f,df;
printf("请输入4个系数: ");
scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
xn=1;
do
{
x=xn;
f=a*pow(x,3)+b*pow(x,2)+c*x+d;
df=3*a*pow(x,2)+2*b*x+c;
xn=x-f/df;
}while(fabs(xn-x)>=(1e-5));
printf("x=%lf\n",xn);
system("pause");
}
任意阶次一元方程:
#include<stdio.h>
#include<stdlib.h>
#include <math.h>
void main()
{
int n,i;
double x0,x,f,df;
printf("输入方程阶次n:");
scanf("%d",&n);
double *a=new double[n+1];
printf("输入降幂排列的系数:");
for(i=n; i>=0; i--)
{
scanf("%lf",a+i);
}
printf("输入初始值:");
scanf("%lf",&x0);
do
{
x=x0;
f=0;
df=0;
for(i=n;i>=0;i--)
{
f+=a[i]*pow(x,i);
if(i!=0) df+=a[i]*i*pow(x,i-1);
}
x0=x-f/df;
}while(fabs(x0-x)>=(1e-5));
printf("x=%lf\n",x0);
delete []a;
system("pause");
}