c语言牛顿迭代法
2个回答
展开全部
把两个子函数都写主函数里头吧!你这样写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);
}
#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);
}
TableDI
2024-07-18 广告
2024-07-18 广告
仅需3步!不写公式自动完成Excel vlookup表格匹配!Excel在线免,vlookup工具,点击16步自动完成表格匹配,无需手写公式,免费使用!...
点击进入详情页
本回答由TableDI提供
展开全部
#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),它是一种在实数域和复数域上近似求解方程的方法。方法使用函数的泰勒级数的前面几项来寻找方程的根。
#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),它是一种在实数域和复数域上近似求解方程的方法。方法使用函数的泰勒级数的前面几项来寻找方程的根。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询