关于牛顿迭代法求方程解:高分!
用牛顿迭代法求方程ax^2+sinx=0,在x=b附近的一实根,a,b由键盘输入。
求原代码+算法。
给分按正确和效率分配
问题点数:80、回复次数:8Top
1 楼mathe()回复于 2002-01-12 15:33:28 得分 10
x[0]=b;
x[i+1]=x[i] - (a*x[i]*x[i]+sin(x[i]))/(2*a*x[i]+cos(x[i]));
Top
2 楼zzz3265(zzz)回复于 2002-01-12 21:24:56 得分 50
#include "math.h"
main()
{
float f,d,x1,x,a,b;
int i=0;
/* ax^2+sinx=0,在x=b附近的一实根,a,b由键盘输入。 */
printf("input 2 numbers please:");
scanf("%f%f",&a,&b);
x=b; /* guess a answer */
while(i++<100)
{
f=a*x*x+sin(x); /* f(x) */
d=2*a*x+cos(x); /* f'(x) */
x1=x-f/d;
printf("\t i=%2d %20.16f \n",i,x1);
if( (fabs(x1-x))==0) {printf("\n ok!\n"); getch(); exit(0);
}
x=x1;
}
}
/* Notice:
sample: input 0.5,-1
or a=0.5 b=-1; */
我已用过,OK
if you have some probrom Email me :zzz3265@263.netTop
3 楼Soft21(雾昕小子)回复于 2002-01-13 06:10:20 得分 5
大家好啊,不错,同意楼上的。Top
4 楼ddszhan(高等数学)回复于 2002-01-13 12:55:10 得分 5
Xn'=Xn-f(Xn)/f'(Xn)Top
5 楼zhangyan_qd(doggyzone)回复于 2002-01-13 13:32:10 得分 10
考虑通用性,恐怕得用下山法迭代一下,免得不收敛。Top
6 楼kangxiang0923(沙皮)回复于 2002-01-13 21:08:40 得分 0
你是工大的?Top
7 楼kai_crab(阿凯)回复于 2002-01-15 14:11:20 得分 0
谢谢: zzz3265(zzz) 分我会加给你的。
大家还有更好的方法吗?Top
8 楼kai_crab(阿凯)回复于 2002-01-15 14:12:04 得分 0
TO :kangxiang0923(沙皮)
我是交大的。Top




