数值计算大作业C语言版,数值计算方法编程作业(C语言版)汇总.docx

1:第二章

(1)二分法求解非线性方程:

#include

#include #define f(x) ((x*x-1)*x-1) void main()

{ float a,b,x,eps;

int k=0;

printf("intput eps\n");/* 容许误差 */ scanf("%f",&eps);

printf("a,b=\n");

for(;;)

{scanf("%f, %f",&a ,&b);

if(f(a)*f(b)>=0) /* 判断是否符合二分法使用的条件 */ printf(" 二分法不可使用 ,请重新输入 :\n");

else break;

} do

x=(a+b)/2;

k++;

*/if(f(a)*f(x)<0) /* 如果 f(a)*f(x)<0 ,则根在区间的左半部分

*/

b=x;

else if(f(a)*f(x)>0) /* 否则根在区间的右半部分 */

a=x;

else break;

}while(fabs(b-a)>eps);/* 判断是否达到精度要求 ,若没有达到 ,继续循环 */ x=(a+b)/2; /* 取最后的小区间中点作为根的近似值 */ printf("\n The root is x=%f, k=%d\n",x,k);

}

运行结果:

intput eps

0.00001 a,b=

2,-5

The root is x=1.324721, k=20

Press any key to continue 总结:本题关键在于两个端点的取值和误差的判断,此程序较容易。二分法收敛速度较快, 但缺点是只能求解单根。

(2)牛顿法求解非线性方程:

#include

#include

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

{ return((-3*x+4)*x-5)*x+6; }

float f1(float x) /* 定义函数 f(x) 的导数 */

{ return (-9*x+8)*x-5; }

void main()

{ float eps,x0,x1=1.0;

printf("input eps:\n");

scanf("%f",&eps); /* 输入容许误差 */

do

{ x0=x1; /* 准备下一次迭代的初值 */ x1=x0-f(x0)/f1(x0); /* 牛顿迭代 */

}while(fabs(x1-x0)>eps); /* 当满足精度 ,输出近似根 */ printf("x=%f\n",x1);

} 程序运行结果: x=1.265328 总结:关键是牛顿迭代的应用, 程序中最大缺点是函数及其导数已唯一给出确定不可求的随 意函数的根,牛顿法比二分法收敛快,可以求重根。

2:第三章

(1)列主元素消去法求解线性方程: #include #include #define N 20 using namespace std; void load(); float a[N][N];

int m;

int main(){ int i,j; int c,k,n,p,r; float x[N],l[N][N],s,d; cout<>m;

cout<

/* 找列最大元素 */for(i=0;i

/* 找列最大元素 */

/* 将列最大数防在对角线上 */

/* 将列最大数防在对角线上 */

cout<=0;i--){

cout<

for(k=i+1;k

{

l[k][i]=a[k][i]/a[i][i];

for(r=i;r

a[k][r]=a[k][r]-l[k][i]*a[i][r];

}

/* 化成三角阵 */

}

x[m-1]=a[m-1][m]/a[m-1][m-1];

for(i=m-2;i>=0;i--)

{

d=0;

for(j=i+1;j

d=d+a[i][j]*x[j];

x[i]=(a[i][m]-d)/a[i][i];

/*求解 */

}

cout<

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值