C++ 编程,迭代法解方程,急求

用迭代法解方程63x^3-114x^2-95x+42=0在-1.0,0.4和1.2三值附近的三个实根。急求,三小时内完成有大量额外悬赏,求高手,跪谢... 用迭代法解方程 63x^3-114x^2-95x+42=0
在-1.0, 0.4和1.2三值附近的三个实根。

急求,三小时内完成有大量额外悬赏,求高手,跪谢
展开
 我来答
sxczwww
2012-07-08 · TA获得超过1.1万个赞
知道大有可为答主
回答量:2562
采纳率:87%
帮助的人:1010万
展开全部
第一个办法比较简单,就是利用一元三次方程的求根公式,具体算法请参看关于一元三次方程的卡尔丹方法;

第二个办法是利用高斯-塞德尔迭代法把方程变形为:
x=(63x³-114x²+42)/95
把初始迭代值(即-1.0, 0.4和1.2三值)分别代入上述方程,得到一个近似x值,然后再把这个值回代入这个方程继续求解,重复进行这个运算,直至前后两次运算的差小于规定的误差值,就能得到近似值。

其它办法包括牛顿-拉夫逊法等等,不过我觉得上面的两个方法就足够了。
追问
求程序谢谢
追答
好久没接触C++编程了,我用C来写吧,函数库定义之类的我就省略了,第二个办法编程比较容易,我只写第二个办法的主程序哈!(假设要求误差小于0.0001)

main()
{
float x,k,m,d;
int i;
scanf("%f",&x); /*这一步表示输入要求的x近似值*/
for(i=0;i0.0001) continue;
else break;
}
printf("方程的解为%f\n",k);
}

我这里没有调试环境,不知道这个程序有没有错,也不知道这个方法是不是收敛,只是给你的参考,其实最可靠的办法还是用牛顿法,编程一定要耐心调试,毕竟知道算法后需要大量的实际运算才能得到正确的结果!
porker2008
2012-07-08 · TA获得超过1.4万个赞
知道大有可为答主
回答量:7066
采纳率:62%
帮助的人:1.1亿
展开全部
我只会牛顿法或者二分法。
不知道你想要的是哪个
追问
牛顿法
追答
#include 
#include

double f(double x)
{
return ((63*x-114)*x-95)*x+42;
}

double fp(double x)
{
double k = (63*3*x-114*2)*x-95;
double y = f(x);
return x - y/k;
}

int main()
{
int i;
double temp;
double base[3] = {-1, 0.4, 1.2};
for(i=0;i1e-7)
{
temp = fp(temp);
}
printf("%g 附近的根是 %g\n",base[i],temp);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式