77范文网 - 专业文章范例文档资料分享平台

西电计算方法上机实习题(2)

来源:网络收集 时间:2019-02-17 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

结果分析:不同顺序计算所得结果是一样的。

四、总结

通过这次上机,学习了解了舍入误差在不同算法时对结果的影响不同,稳定的算法才能获得正确的结果。

2 方程求根

一、实验目的

(1)通过对二分法与牛顿迭代法做编程练习和上机运算,进一步体会二分法和牛顿法的不同。

(2)编写割线迭代法的程序,求非线性方程的解,并与牛顿迭代法作比较。

二、实验内容

1、用牛顿法求下列方程的根 (1)x?e?0 (2)xe?1?0 (3)lgx?x?2?0

2、编写割线法程序求解第一问的方程

x2x三、实验步骤、程序设计、实验结果及分析

1、牛顿法

(1)实验步骤

通过定义牛顿法求方程的子函数,用main函数调用子函数求根 (2)程序设计 #include #include

typedef float (*p)(float );

float ff1(float x) {

return x*x-exp(x); }

float ff2(float x) {

return x*exp(x)-1; }

float ff3(float x) {

return log(x)+x-2; }

float answer(float(*p)(float)) {

int k=2;

float m=1,n=-1,x2,a,b,c; if (p==ff3)n=2;

printf(\ while (1) {

if (fabs(m-n)<1e-4) break; a=p(n)*(n-m); b=p(n)-p(m); c=a/b; x2=n-c; m = n; n = x2;

printf(\ k++;

if (k%3==0) printf(\ }

if (k%3!=0) printf(\

printf(\ return 0; }

main() { printf(\ answer(ff1); printf(\ answer(ff2); printf(\ answer(ff3); return 0; }

(3)实验结果及分析

2、割线法

(1)程序设计 #include #include

float gexian(float,float); float f(float); main() {

int i,j;

float x1=2.2; float x2=2,x3; scanf(\

if(i==1) printf(\ else if(i==2) printf(\ else {

for(j=3;j<=i;j++) {

x3=gexian(x1,x2); x1=x2; x2=x3; }

printf(\ } }

float f(float x) {

return (x*x-exp(x)); }

float gexian(float x1,float x2)

{

return (x2-(f(x2)/(f(x2)-f(x1)))*(x2-x1)); }

(3)实验结果及分析

四、总结

了解和学习了二分法和牛顿迭代法的思想以及程序设计的方法,比较了迭代法和牛顿法的特点:牛顿法收敛速度较快,但对初值选取要求较高;割线法计算量少。

3 线性方程组数值解法

一、实验目的

(1)熟悉求解线性方程组的有关理论和方法;

(2)会编制列主元消去法,LU分解法,雅可比及高斯-赛德尔迭代法的程序; (3)通过实际计算,进一步了解各种方法的优缺点,选择合适的数值方法。

二、实验内容

1、用列主元消去法解方程组 2、用LU分解法解方程组

三、实验步骤、程序设计、实验结果及分析

1、用列主元消去法解方程组 (1)程序设计 #include #include

void ColPivot(float*,int,float[]); void ColPivot(float*c,int n,float x[]) { int i,j,t,k;

float p; for(i=0;i<=n-2;i++) { k=i; for(j=i+1;j<=n-1;j++) if(fabs(*(c+j*(n+1)+i))>(fabs(*(c+k*(n+1)+i)))) k=j; if(k!=i) for(j=i;j<=n;j++) { p=*(c+i*(n+1)+j); *(c+i*(n+1)+j)=*(c+k*(n+1)+j); *(c+k*(n+1)+j)=p; } for(j=i+1;j<=n-1;j++) { p=(*(c+j*(n+1)+i))/(*(c+i*(n+1)+i)); for(t=i;t<=n;t++) *(c+j*(n+1)+t)-=p*(*(c+i*(n+1)+t)); } } for(i=n-1;i>=0;i--) { for(j=n-1;j>=i+1;j--) (*(c+i*(n+1)+n))-=x[j]*(*(c+i*(n+1)+j)); x[i]=*(c+i*(n+1)+n)/(*(c+i*(n+1)+i)); } }

void main() { int i; float x[4]; float c[4][5]={1,1,0,3,4,2,1,-1,1,1,3,-1,-1,3,-3,-1,2,3,-1,4}; ColPivot(c[0],4,x); for(i=0;i<=3;i++) printf(\}

(2)实验结果及分析 (1)题

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库西电计算方法上机实习题(2)在线全文阅读。

西电计算方法上机实习题(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/478403.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: