数值稳定性c语言实验报告,《数值分析》上机实验报告.doc

《数值分析》上机实验报告

数值分析上机实验报告

《数值分析》上机实验报告

1.用Newton法求方程

X7-X4+14=0

在(0.1,1.9)中的近似根(初始近似值取为区间端点,迭代6次或误差小于0.00001)。

1 理论依据:

设函数在有限区间[a,b]上二阶导数存在,且满足条件

故以1.9为起点

1.2 C语言程序原代码#include

#include

main()

{double x2,f,f1;

double x1=1.9; //取初值为 1.9

do

{x2=x1;

f=pow(x2,7)-28*pow(x2,4)+14;

f1=7*pow(x2,6)-4*28*pow(x2,3);

x1=x2-f/f1;}

while(fabs(x1-x2)>=0.00001||x1<0.1); //限制循环次数

printf("计算结果:x=%f\n",x1);}

1.3 运行结果:

1.4 MATLAB上机程序

function y=Newton(f,df,x0,eps,M)

d=0;

for k=1:M

if feval(df,x0)==0

d=2;break

else

x1=x0-feval(f,x0)/feval(df,x0);

end

e=abs(x1-x0);

x0=x1;

if e<=eps&&abs(feval(f,x1))<=eps

d=1;break

end

end

if d==1

y=x1;

elseif d==0

y='迭代M次失败';

else

y= '奇异'

end

function y=df(x)

y=7*x^6-28*4*x^3;

End

function y=f(x)

y=x^7-28*x^4+14;

End

>> x0=1.9;

>> eps=0.00001;

>> M=100;

>> x=Newton('f','df',x0,eps,M);

>> vpa(x,7)

1.使用此方法求方解,用误差来控制循环迭代次数,可以在误差允许的范围内得到比较理想的计算结果。此程序的不足之处是,所要求解的方程必须满足上述定理的四个条件,但是第二和第四个条件在计算机上比较难以实现。

2.Newton迭代法是一个二阶收敛迭代式,他的几何意义Xi+1是Xi的切线与x轴的交点,故也称为切线法。它是平方收敛的,但它是局部收敛的,即要求初始值与方程的根充分接近,所以在计算过程中需要先确定初始值。

3.本题在理论依据部分,讨论了区间(0.1,1.9)两端点是否能作为Newton迭代的初值,结果发现0.1不满足条件,而1.9满足,能作为初值。另外,该程序简单,只有一个循环,且为顺序结构,故采用do-while循环。当然也可以选择for和while循环。

2.已知函数值如下表:

x12345f(x)001.09861231.38629441.6094378x678910f(x)1.79175951.94591012.0794452.19722462.3025851f’(x)f’(1)=1f’(10)=0.1试用三次样条插值求f(4.563)及f’(4.563)的近似值。

2.1 理论依据

这里 ,所以只要求出,就能得出插值函数S(x)。

求的方法为:

这里

最终归结为求解一个三对角阵的解。

用追赶法解三对角阵的方法如下:

综上可得求解方程Ax=d的算法:

#include

#include

void main()

{int i,j,m,n,k,p;

double q10,p10,s4,g4,x0,x1,g0=1,g9=0.1;;

double s[10][10];

double a[10],b[10],c[10],d[10],e[10],x[10],h[9],u[9],r[9];

double f[10]={0,01.0986123,1.3862944,1.6094378,

1.7917595,1.9459101,2.079445,2.1972246,2.3025851};

printf("请依次输入xi:\n");

for(i=0;i<=9;i++)

scanf("%lf",&e[i]); //求h矩阵

for(n=0;n<=8;n++)

h[n]=e[n+1]-e[n];

d[0]=6*((f[1]-f[0])/h[0]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值