计算数值方法实验报告文档格式.docx
- 文档编号:15766873
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:21
- 大小:237.48KB
计算数值方法实验报告文档格式.docx
《计算数值方法实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《计算数值方法实验报告文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
方程求根
1、实验目的和要求
(1)了解非线性方程求根的常见方法,如二分法、牛顿法、割线法。
(2)加深对方程求根方法的认识,掌握算法。
二、实验内容和原理
熟悉使用二分法、迭代法、牛顿法、割线法等方法对给定的方程进行根的求解。
选择上述方法中的两种方法求方程:
f(x)=x3+4x2-10=0在[1,2]内的一个实根,且要求满足精度|x*-xn|<
0.5×
10-5
3、主要仪器设备
HP笔记本,VC++6.0
4、操作方法与实验步骤
1.二分法:
#include<
stdio.h>
math.h>
doublef(doublex)
{
doubley;
y=pow(x,3)+4*pow(x,2)-10;
return(y);
}
main()
doublea,b,yl,yr,ym,x1,xr,xm;
a=1;
b=2;
yl=f(a);
yr=f(b);
while(yl*yr>
0)
{
}
xr=a;
x1=b;
while(fabs(xr-x1)>
0.000001)
xm=(x1+xr)/2;
ym=f(xm);
yl=f(x1);
yr=f(xr);
if(yl*ym<
0&
&
yr*ym>
xr=xm;
else
x1=xm;
printf("
%f\t%f\t%f\n"
x1,xr,xm);
printf("
\n所求根为x=%f\n"
xm);
return0;
2.牛顿法:
doublef(doublex)
return(pow(x,3)+4*pow(x,2)-10);
doublef1(doublex)
return(3*pow(x,2)+10*x);
intmain()
doublex,x1,y1,y2;
请输入一个任意实数:
X="
);
scanf("
%lf"
&
x);
方程的解为:
\n"
do{
x1=x;
y1=f(x);
y2=f1(x1);
x=x1-y1/y2;
while(fabs(x-x1)>
=5e-6);
%lf\n"
x1);
3.追赶法
5、实验数据记录和处理
1.二分法
2..牛顿法
6、实验结果与分析
通过这个两个程序可看出,二分法的计算量更大一些。
7、讨论、心得
通过这个实验,我了解了线性方程的一些求根方法,对于方程近似值的求解有了更多的理解。
实验地点
指导教师
于亚男
求解线性方程组
一、实验目的和要求
(1)了解直接法解线性方程组
(2)对Gauss消元法、LU分解法、追赶法有更深刻的理解
合理利用Gauss消元法、LU分解法、追赶法求解下列方程组:
①
②
③
④
(n=5,10,100,…)
三.主要仪器设备
四.操作方法与实验步骤
1.高斯:
#include<
voidmain()
{
inti,j,f,n;
floata[5][5],b[5],x[5],l,k;
Inputn:
"
%d"
n);
Inputa[][]:
for(i=0;
i<
n;
i++)
for(f=0;
f<
f++)
scanf("
%f"
a[i][f]);
printf("
Inputb[]:
for(i=0;
b[i]);
n-1;
{
for(j=i+1;
j<
j++)
{
l=-a[j][i]/a[i][i];
b[j]=b[j]+b[i]*l;
for(f=i;
a[j][f]=a[j][f]+a[i][f]*l;
}
}
x[n-1]=b[n-1]/a[n-1][n-1];
for(i=n-2;
i>
=0;
i--)
x[i]=b[i];
k=0;
for(f=i+1;
k=k-a[i][f]*x[f];
x[i]=(k+b[i])/a[i][i];
Theansweris"
printf("
%.4f"
x[i]);
2.LU分解:
#defineL30
doublea[L][L],b[L],l[L][L],u[L][L],x[L],y[L];
intmain()
intn,i,j,k,r;
n=\n"
a[n][n]=\n"
for(i=1;
=n;
++i)
{
for(j=1;
++j)
a[i][j]);
b[n]=\n"
}for(i=1;
{for(j=1;
l[i][j]=0;
u[i][j]=0.0;
}
for(k=1;
k<
++k)
for(j=k;
u[k][j]=a[k][j];
for(r=1;
r<
k;
++r)
u[k][j]-=l[k][r]*u[r][j];
for(i=k+1;
l[i][k]=a[i][k];
l[i][k]-=l[i][r]*u[r][k];
l[i][k]/=u[k][k];
}l[k][k]=1.0;
y[i]=b[i];
for(j=1;
i;
y[i]-=l[i][j]*y[j];
for(i=n;
0;
--i)
x[i]=y[i];
for(j=i+1;
x[i]-=u[i][j]*x[j];
x[i]/=u[i][i];
%0.2lf\n"
五.实验数据记录和处理
1.高斯
2.LU分解
六、实验结果与分析
本次实验数据较多,在输入上要多费点功夫,一不小心就全部都错了。
在今后编程过程中,一定要小心谨慎。
七、讨论、心得
通过本次实验,我深刻理解了直接法在计算机上解线性方程组的有效性,对于Gauss消元法、LU分解法也有了深刻的理解。
逸夫楼402
线性方程组的迭代解法
掌握雅可比迭代法和高斯-赛德尔迭代法对方程组进行求解
使用雅可比迭代法或高斯-赛德尔迭代法对下列方程组进行求解。
三、主要仪器设备
四、操作方法与实验步骤
雅可比迭代法:
#include<
intmain()
doublea[3][3]={{10,-1,-2},{-1,10,-2},{-1,-1,5}},b[3]={7.2,8.3,4.2};
//定义方程组
floatx[3]={0,0,0},sum;
inti,j,k,n=3;
\t\tX[1]\t\tX[2]\t\tX[3]\n"
for(k=0;
8;
k++)
3;
i++)
sum=0;
for(j=0;
j++)
if(i==j)continue;
sum=sum+a[i][j]*x[j];
x[i]=(b[i]-sum)/a[i][i];
第%d次迭代:
\t"
k+1);
%f\t"
五、实验数据记录和处理
在本次实验中,编程不太容易,对c/c++的学习应该更进一步。
通过这次实验,我明白了雅克比迭代的一般性解法,对于编程的应用也有了更深刻的理解。
代数插值
掌握拉格朗日插值法和牛顿插值法求近似解
使用拉格朗日插值法或牛顿插值法求解:
已知f(x)在6个点的函数值如下表所示,运用插值方法,求f(0.596)的近似值。
X
0.40
0.55
0.65
0.80
0.90
1.05
f(x)
0.41075
0.57815
0.69675
0.88811
1.02652
1.25386
#include"
stdaf
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算 数值 方法 实验 报告