文档介绍:程序设计应用
#include <>
void main()
{
long i,n,sum=0,t=1;
printf(“Input n:");
scanf("%ld",&n);
for(i=1;i<=n;i++)
{ t=t*i;
sum=sum+t;
}
printf("%ld",sum);
}
例:求1+2!+3!+...+20!的和。
P129
迭代法
迭代法是一种不断用变量的旧值递推新值的过程。迭代算法是用计算机解决问题的一种基本方法。
例: 用迭代法求x= 。求平方根的迭代公式为: ,要求前后两次求出的x的差的绝对值小于。
P129
确定迭代变量x,并赋初值x=a/2。
确定迭代终止条件:
建立迭代公式。
#include <>
#include <>
void main()
{ float x,x1,a;
printf("Input a:");
scanf("%f",&a);
x=a/2;
x1=(x+a/x)/2;
while(fabs(x1-x)>1e-5)
{ x=x1;
x1=(x+a/x)/2;
}
printf("root=%f\n",x1) ;
}
牛顿迭代法
牛顿迭代法(Newton's method)是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。对于大部分非线性方程的求根公式是不存在,因此求精确根非常困难,甚至不可能,牛顿迭代法是求非线性方程根的重要方法之一。
P130
用牛顿迭代法求非线性方程的根
设f(x)=0是非线性方程,f(x)在某一区间内为单调函数(f’(x)>0或f’(x)<0),则方程f(x)=0在某一区间只有一个实根。
由牛顿迭代公式:
逐次逼近求解的过程。
f(x)
x
牛顿迭代法:
选一个接近x的真实根x1
x1
由x1求出f(x1)
f(x1)
在f(x1)点作f(x)的切线,交x轴于x2
x2
通过x2,求f(x2)
再过f(x2)点作f(x) 的切线,交x轴于x3,用上述公式求出x3.
一直求下去,当两次求出的根之差小于给定的数时,就认为xn+1足够接近真实的根。
假设,x0 代表初始值,x 代表新求出的值,f 代表,f1 代表
用牛顿迭代法求下列方程的根
循环结束条件:|x-x0|<10-6
#include <>
void main()
{ float x0,x,f,f1;
scanf("%f",&x);
do
{ x0=x;
f=*x0*x0*x0-*x0*x0+3*x0-6;
f1=*x0*x0-*x0+3;
x=x0-f/f1;
}
while(fabs(x-x0)>=1e-5);
printf("root= is%f\n",x);
}