数值计算方法作业

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数值计算方法作业

姓名:李琦 学号:062410124 求 013=--x x 在x=1.5附近的一个根。

一.牛顿下山法:

#include

#include

float f(float x) /* 定义函数f(x) */

{ return x*x*x-x-1; }

void main()

{ float x0,x1=1.5;

x0=1;

for(;;)

{

printf (" x0=%f",x0);

printf (" x1=%f\n",x1);

x0=x1;

x1=x0-((x0*x0*x0-x0-1)/(3*x0*x0-1));

if(x0==x1)

break;

}

printf(" x=%f\n",x1);

}

二.加权法

#include

#include

float f(float x) /* 定义函数f(x) */

{ return x*x*x-1; }

float f1(float x) /* 定义函数f(x)的导数*/ { return 3*x*x; }

void main()

{ float x0,x1=1.5,c;

c=f1(x1);x0=1;

printf("c=%f\n",c);

for(;;)

{

printf (" x0=%f",x0);

printf (" x1=%f\n",x1);

x0=x1;

x1=(f(x0)-c*x0)/(1-c);

if(x0==x1)

break;

}

printf("x=%f\n",x1);

}

三.单点弦法:

#include

#include

float f(float x) /* 定义函数f(x) */ { return x*x*x-x-1; }

void main()

{ float x1,x0=1.5,a;

a=f(x0);

x1=1;

for(;;)

{

printf (" x0=%f",x0);

printf (" x1=%f\n",x1);

x0=x1;

x1=x0-(f(x0)*(x0-1.5)/(f(x0)-a));

if(x0==x1)

break;

}

printf(" x=%f\n",x1);

}

四.双点弦法:

#include

#include

float f(float x) /* 定义函数f(x) */

{

return x*x*x-x-1;

}

void main()

{

float x1=1,x0=1.5,x2;

for(;;)

{

printf (" x0=%f",x0);

printf (" x1=%f\n",x1);

x2=x1-(f(x1)*(x1-x0))/(f(x1)-f(x0));

if(x1==x2)

break;

else

{

x0=x1;

x1=x2;

}

}

printf(" x=%f\n",x2);

}

相关文档
最新文档