数值分析源代码文档格式.docx
- 文档编号:19289015
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:13
- 大小:17.16KB
数值分析源代码文档格式.docx
《数值分析源代码文档格式.docx》由会员分享,可在线阅读,更多相关《数值分析源代码文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
a[0]=-A[0]/2;
b[0]=B[0]/2;
=n;
{a[i]=-A[i]/(2+(1-A[i])*a[i-1]);
b[i]=(B[i]-(1-A[i])*b[i-1])/(2+(1-A[i])*a[i-1]);
voidcalculate2(double*&
m,double*a,double*b,intn)
{m=newdouble[n+1];
m[n+1]=0;
for(inti=n;
i>
=0;
i--)m[i]=m[i+1]*a[i]+b[i];
voidmain()
{inte,t,w,v;
out:
cout<
<
"
求三次样条插值函数:
endl<
请输入函数表中x,y的对数:
endl;
cin>
>
e;
double*x,*y,*h,*A,*B,*a,*b,*m,s0,sn,u,s;
cout<
请输入x的一系列值:
x=newdouble[e];
for(inti=0;
i++)cin>
x[i];
请输入y的一系列值:
y=newdouble[e];
for(intf=0;
f<
f++)cin>
y[f];
h=newdouble[e];
for(intd=0;
d<
d++)h[d]=x[d+1]-x[d];
loop:
边界条件选择:
1.提供了s\"
(x1)=0,s\"
(x2)=0;
2.提供了s'
(x0)=m0,s'
(xn)=mn(m0,mn!
=0)"
<
t;
if(t!
=1&
&
t!
=2){cout<
输入信息错误!
请重新输入!
gotoloop;
if(t==1)ready(A,B,h,y,t,e);
else{cout<
请输入s'
(x0),s'
(xn)的值:
cin>
s0>
sn;
ready(A,B,h,y,t,e,s0,sn);
calculate1(a,b,A,B,e);
calculate2(m,a,b,e);
in:
请输入所需要计算的x的值:
("
x[0]<
x<
x[e-1]<
)"
u;
if(u<
x[0]||u>
x[e-1]){cout<
输入数据错误!
gotoin;
for(intc=0;
c<
c++)
{if(u>
x[c]&
u<
x[c+1])w=c;
s=(1+2*(u-x[w])/(x[w+1]-x[w]))*((u-x[w+1])*(u-x[w+1])/((x[w]-x[w+1])*(x[w]-x[w+1])))*y[w]+
(1+2*(u-x[w+1])/(x[w]-x[w+1]))*((u-x[w])*(u-x[w])/((x[w+1]-x[w])*(x[w+1]-x[w])))*y[w+1]+
(u-x[w])*((u-x[w+1])*(u-x[w+1])/((x[w]-x[w+1])*(x[w]-x[w+1])))*m[w]+
(u-x[w+1])*((u-x[w])*(u-x[w])/((x[w+1]-x[w])*(x[w+1]-x[w])))*m[w+1];
f("
)的近似值为:
"
s<
In:
请选择:
1,继续进行新的操作计算2,退出不计算"
v;
if(v!
v!
输入错误!
gotoIn;
if(v==1){system("
cls"
);
gotoout;
运行结果:
根据课本52页的数据输入,得:
第9题:
f(78.3)=3.00304
第10题:
f(0.35)=0.591591
二,自动选取步长梯形法
math.h>
doublef(doublex)
{return2/(1+x*x);
{doublea,b,e,h,T0,T1,S;
请输入区间上下界:
a和b"
a>
b;
请输入给定的精度e:
h=(b-a)/2;
T1=(f(a)+f(b))*h;
intn=1,t,v;
do
{T0=T1;
S=0;
for(intk=1;
k<
k++)
S=S+f(a+(2*k-1)*h/n);
T1=T0/2+S*h/n;
t=n;
if(fabs(T1-T0)>
=3*e)n=2*n;
}while(t==n);
该积分的近似值为:
T1<
根据课本97页第7题的数据输入,得结果为:
0.75
三,Romberg求积分法
iostream>
usingnamespacestd;
{returnsqrt(x);
{doublea,b,e,T[20][20],S=0,s;
intk=1,v;
T[0][0]=(b-a)*(f(a)+f(b))/2;
{for(inti=1;
double(i)<
=pow(2,double(k))-1;
{S=S+f(a+(2*i-1)*(b-a)/pow(2,double(k)));
T[0][k]=0.5*(T[0][k-1]+(b-a)*S/pow(2,double(k)-1));
for(intm=1;
m<
=k;
m++)
{T[m][k-m]=(T[m-1][k-m+1]*pow(4,double(m))-T[m-1][k-m])/(pow(4,double(m))-1);
s=k;
if(fabs(T[k][0]-T[k-1][0])>
=e)k=k+1;
}while(s!
=k);
T[k][0]<
根据课本97页第8题的数据输入(输入a=1,b=9,e=0.000001),得结果为:
92.121
四,列主元高斯消去法
stdio.h>
{intn,v;
请输入系数矩阵A的行列数n:
doubleA[10][10],*b=newdouble[n],*x=newdouble[n],e,T;
inti1;
请输入系数矩阵A的值:
for(inti=1;
{
for(intj=1;
j<
j++)
cin>
A[i][j];
系数矩阵A为:
cout<
A[i][j]<
;
请输入方程组的右端项b:
b[i];
右端项b为:
i++)cout<
b[i]<
请输入精度值e:
{doublemax=fabs(A[k][k]);
for(inti=k;
{
if(fabs(A[i][k])>
max){max=fabs(A[i][k]);
i1=i;
T=max;
if(T<
e){cout<
求解失败!
gotostop;
if(i1!
=k)
{doubletemp1;
for(intk1=1;
k1<
k1++)
{doubletemp;
temp=A[i1][k1];
A[i1][k1]=A[k][k1];
A[k][k1]=temp;
}
temp1=b[i1];
b[i1]=b[k];
b[k]=temp1;
for(inti=k+1;
T=A[i][k]/A[k][k];
b[i]=b[i]-T*b[k];
for(intj=k+1;
A[i][j]=A[i][j]-T*A[k][j];
if(fabs(A[n][n])<
=e){cout<
x[n]=b[n]/A[n][n];
for(inti=n-1;
=1;
i--)
{doublesum=0;
for(intj=i+1;
j++)sum+=A[i][j]*x[j];
x[i]=(b[i]-sum)/A[i][i];
x[i]<
stop:
}}
根据课本126页第1题的数据输入,
系数矩阵为235右端项为5精度为0.00001;
3476
1335
结果为-4
1
2
五,迭代法--Jacobi迭代与Seidel迭代
voidJacobi();
voidSeidel();
{intw,v;
loop:
请选择所要的迭代方式:
1,Jacobi迭代2,Seidel迭代"
w;
switch(w)
case1:
Jacobi();
break;
case2:
default:
{cout<
}
In:
voidJacobi()
{intn,k;
请输入系数矩阵A的行数n:
doubleA[10][10],*b=newdouble[n],*x=newdouble[n],*y=newdouble[n],*g=newdouble[n],e,T;
intM;
请输入容许误差e:
请输入容许最大迭代次数M:
M;
请输入初始向量Y:
y[i];
k=1;
//--------形成迭代矩阵-------
if(fabs(A[i][i])<
T=A[i][i];
j++)A[i][j]=-A[i][j]/T;
A[i][i]=0;
g[i]=b[i]/T;
}
//--------迭代--------
doublesum=0;
=n&
j!
=i;
j++)sum+=(A[i][j]*y[j]);
x[i]=g[i]+sum;
doublefanshu=0;
fanshu+=fabs(x[i]-y[i]);
if(fanshu<
e)
{for(inti=1;
elseif(k<
M){k=k+1;
i++)y[i]=x[i];
elsecout<
voidSeidel()
intn,k;
i++)x[i]=y[i];
j++)sum+=(A[i][j]*x[j]);
根据课本139页第1题的数据输入,
简单迭代:
x1=1.2,x2=1.4,x3=1.6,x4=0.79999
Seidel迭代:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值 分析 源代码