如何用牛顿迭代法解方程X乘以e的x次方等于1不好意思 忘了说附初值0.5呢
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/27 09:00:22
![如何用牛顿迭代法解方程X乘以e的x次方等于1不好意思 忘了说附初值0.5呢](/uploads/image/z/8299009-1-9.jpg?t=%E5%A6%82%E4%BD%95%E7%94%A8%E7%89%9B%E9%A1%BF%E8%BF%AD%E4%BB%A3%E6%B3%95%E8%A7%A3%E6%96%B9%E7%A8%8BX%E4%B9%98%E4%BB%A5e%E7%9A%84x%E6%AC%A1%E6%96%B9%E7%AD%89%E4%BA%8E1%E4%B8%8D%E5%A5%BD%E6%84%8F%E6%80%9D+%E5%BF%98%E4%BA%86%E8%AF%B4%E9%99%84%E5%88%9D%E5%80%BC0.5%E5%91%A2)
如何用牛顿迭代法解方程X乘以e的x次方等于1不好意思 忘了说附初值0.5呢
如何用牛顿迭代法解方程X乘以e的x次方等于1
不好意思 忘了说附初值0.5呢
如何用牛顿迭代法解方程X乘以e的x次方等于1不好意思 忘了说附初值0.5呢
牛顿迭代法要计算
(1) y1=f(x) 在 x 的函数值
(2) d1=f'(x) 在x 的值
你可以写两个函数,分别计算y1,d1
如果一阶导数有解析解,则可用赋值语句,否则要写数值解子程序.
步骤:
设解的精度,例 float eps=0.000001;
设x初值,x1;
迭代循环开始
算y1 = f(x1);
算d1 = f'(x1)
用牛顿公式 算出 x2; [x2 = x1 - y1 / d1]
如果 fabs(x2-x1) > eps 则重新迭代 -- 用新的函数值和一阶导数值推下一个 新x.
牛顿迭代法:
#include
#include
#include
#define MAXREPT 1000
float f(float x)
{return(x*exp(x)-1);
}
float df(float x)
{return((x+1)*exp(x));
}
float iterate(float x)
{float x1;
x1=x-f(x)/df(x);
return(x1);
}
void main()
{
float x0,x1,eps,d;int k=0;
printf("\n please input x0,eps:");
scanf("%f,%f",&x0,&eps);
printf("\n k xk\n");
printf(" %d %f\n",k,x0);
do
{k++;
x1=iterate(x0);
printf(" %d %f\n",k,x1);
d=fabs(x1-x0);
x0=x1;
}
while((d>=eps)&(k