c语言牛顿迭代法

发布网友 发布时间:2022-04-22 07:36

我来回答

3个回答

热心网友 时间:2022-06-17 20:30

#include<stdio.h> 

#include<math.h> 

int a,b,c,d; 

float f(float x) 

{ float y; 

y=((a*x+b)*x+c)*x+d;

return(y); 

float f1(float x) 

{ float y; 

y=(3*a*x+2*b)*x+c; 

return(y); 

void main() 

{ float x0=1.0,x1; 

printf("请输入a,b,c,d的值:\n"); 

scanf("%d,%d,%d,%d",&a,&b,&c,&d);

x1=1;

do 

{

x0=x1; 

x1=x0-f(x0)/f1(x0); 

while(fabs(x1-x0) >=0.00001); 

printf("%f",x1); 

}

牛顿迭代法:

牛顿迭代法(Newton's method)又称为牛顿-拉弗森方法(Newton-Raphson method),它是一种在实数域和复数域上近似求解方程的方法。方法使用函数的泰勒级数的前面几项来寻找方程的根。

热心网友 时间:2022-06-17 20:31

把两个子函数都写主函数里头吧!你这样写a、b、c、d都没有传参,害我找了半天。
#include<stdio.h>
#include<math.h>
int a,b,c,d; //a、b、c、d为系数
void main()
{
int k=0; //计数变量
float X0,X1,f,f1;
int a,b,c,d;
printf("提示:函数f(x)=a*x^3+b*x^2+c*x+d\n");
printf("请输入系数:a,b,c,d的值:\n");
scanf("%d%d%d%d",&a,&b,&c,&d);
printf("请输入初始近似值X0:\n");
scanf("%f",&X1);

printf("---------------\n");
printf("敛散情况:\n");
printf("k:\tXk:\n");
printf("k=%d\tX%d=%f\n",k,k,X1);
do
{
k++;
X0=X1;
f=((a*X0+b)*X0+c)*X0+d;
f1=(3*a*X0+2*b)*X0+c;
X1=X0-f/f1;
printf("k=%d\tX%d=%f\n",k,k,X1);
}
while(fabs(X1-X0) >=0.00001);
printf("--------------------------\n");
printf("迭代的次数为:%d\n",k);

}

热心网友 时间:2022-06-17 20:31

#include<stdio.h>
#include<math.h>
int a,b,c,d;
float f(float x)
{ float y;
y=((a*x+b)*x+c)*x+d;
return(y);
}
float f1(float x)
{ float y;
y=(3*a*x+2*b)*x+c;
return(y);
}

void main()
{ float x0=1.0,x1;
printf("请输入a,b,c,d的值:\n");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
x1=1;
do
{
x0=x1;
x1=x0-f(x0)/f1(x0);
}
while(fabs(x1-x0) >=0.00001);
printf("%f",x1);
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com