小女子无知啦!请各位有识之士的大哥帮帮忙啦!!!

nikerme 2001-06-07 01:44:00
我想解一个一元高次方程(实际只有三次~!~),不会啦!系数极其复杂!因此想编一个程序,用什么算法啊?我想用C++编,主要是解方程,各位高人帮帮忙啊!如果我能把方程解出来的话,一定送分!!!!!本店承诺如假陪百!!!
...全文
101 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
nikerme 2001-06-07
  • 打赏
  • 举报
回复
运行结果正确!
送分!!
duz 2001-06-07
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <math.h>

#define A 0.0163
#define B 1.0
#define C 35.023
#define D 306.957
#define X0 -100.0
#define MIN_ERR 1E-8

void main()
{
double x,x1;
double f0,f1,f2;
x1=X0;
do
{
x=x1;
x1-=(((A*x+B)*x+C)*x+D)/((3*A*x+2*B)*x+C);
}while(fabs(x1-x)>MIN_ERR);
printf("Find a root :x1=%f\n",x1);
f0=A;
f1=B+f0*x1;
f2=C+f1*x1;
x1=f1*f1-4*f0*f2;
if(x1<0.0)
{
double u=sqrt(-x1)/2.0;
printf("Another two roots are %f+i%f and %f-i%f\n",-f1/2,u,-f1/2,u);
}
else
{
double u=sqrt(x1)/2.0;
printf("Another two roots are %f and %f\n",-f1/2+u,-f1/2-u);
}
}

The result is:
Find a root :x1=-12.139644
Another two roots are -0.401062+i0.501301 and -0.401062-i0.501301
Press any key to continue

使用的是牛顿跌代法
duz 2001-06-07
  • 打赏
  • 举报
回复
x(n)=
x(n-1) - (0.0163*x(n-1)**3+x(n-1)**2+35.023*x(n-1)+306.957)/(3*0.0163*x(n-1)**2+2*x(n-1)+35.023*x(n-1)).
任取x(1),一般来说,不超过10轮跌代,结果就非常好了。
newsoftboy 2001-06-07
  • 打赏
  • 举报
回复
对了, 你要源程序的话就说一下,一天之内发给你^_^

我的emial : newsoftboy@263.net
newsoftboy 2001-06-07
  • 打赏
  • 举报
回复
找《高等数学》看看把 二分法,切线法 都能很快解决

在程序实现上也没什么好说的,就看你的c语言学的怎么样了
tom255 2001-06-07
  • 打赏
  • 举报
回复
这个问题我认为是如此解:
y=0.0163*x**3+x*x+35.023*x+306.957
找一个x1,代入方程,为负数,如 -100
找一个x2,代入方程,为正数,如 1000
采用二分法,逐步逼近,算法效率很高,根据你的x的精度,得到x的值,只要几行代码!
nikerme 2001-06-07
  • 打赏
  • 举报
回复
好吧!
求下面方程的解:
0.0163*x**3+x*x+35.023*x+306.957=0
青润 2001-06-07
  • 打赏
  • 举报
回复
解方程到是不难,呵呵,不过,如果是假的陪一百个也是假的,还不如不陪。^&^
把问题摆出来,给大家看看,应该会有帮助的。

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧