最新数值分析作业C语言编程实现.docx

上传人:b****6 文档编号:3079925 上传时间:2022-11-17 格式:DOCX 页数:15 大小:349.58KB
下载 相关 举报
最新数值分析作业C语言编程实现.docx_第1页
第1页 / 共15页
最新数值分析作业C语言编程实现.docx_第2页
第2页 / 共15页
最新数值分析作业C语言编程实现.docx_第3页
第3页 / 共15页
最新数值分析作业C语言编程实现.docx_第4页
第4页 / 共15页
最新数值分析作业C语言编程实现.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

最新数值分析作业C语言编程实现.docx

《最新数值分析作业C语言编程实现.docx》由会员分享,可在线阅读,更多相关《最新数值分析作业C语言编程实现.docx(15页珍藏版)》请在冰豆网上搜索。

最新数值分析作业C语言编程实现.docx

最新数值分析作业C语言编程实现

#include

#include

doublef(doublex)

{

doubleans;

ans=exp(x);

returnans;

}

voidmain()

{

doublea=1,b=3,error=0.0001,t[20][20],h,c;

inti,j,k,m,n;

h=b-a;

t[0][0]=h*(f(a)+f(b))/2;

k=1;

while

(1)

{

t[0][k]=0;

m=1;

for(j=0;j

m=m*2;

for(i=1;i<=m;i++)

t[0][k]=t[0][k]+h*f(a+(i-0.5)*h);

t[0][k]=(t[0][k]+t[0][k-1])/2;

for(j=1;j<=k;j++)

{c=1;

for(n=0;n

c=c*4;

t[j][k-j]=(c*t[j-1][k-j+1]-t[j-1][k-j])/(c-1);

}

if(fabs(t[k][0]-t[k-1][0])

{printf("\n积分结果I≈%lf\n",t[k][0]);

break;

}

else

{h=h/2;

k++;

}

}

}

#include

#include

doublef(doublet)

{

doubleans;

ans=pow(cos(t),1.0/3);

returnans;

}

voidmain()

{

doublex=0,eslong=0.000001,x0;

intN=20,i;

printf("\n近似初值x0=%lf\n",x);

for(i=0;i

{

x0=x;

x=f(x);

printf("x%d=%lf\n",i+1,x);

if(fabs(x-x0)

break;

}

if(fabs(x-x0)

printf("得到近似结果为x≈%lf\n\n",x,i);

else

printf("迭代失败\n");

}

 

#include

#include

doublea=0,b=1,x,y=0,h=0.1,k1,k2,k3,k4;

inti,N;

doublef(doublet,doubles)

{

doubleans;

ans=1+t*t;

returnans;

}

voidmain()

{

N=(b-a)/h;

x=a;

printf("\n初值为(x0,y0)=(%.8f,%.8f)\n",x,y);

for(i=0;i

{

k1=f(x,y);

k2=f(x+h/2,y+h*k1/2);

k3=f(x+h/2,y+h*k2/2);

k4=f(x+h,y+h*k3);

y=y+h*(k1+2*(k2+k3)+k4)/6;

x=x+h;

printf("第%d次输出结果为(x%d,y%d)=(%.8f,%.8f)\n",i+1,i+1,i+1,x,y);

}

}

 

#include

voidmain()

{

doubledatax[4]={1.2,2.9,4.6,5.8},datay[10]={14.84,33.71,58.36,79.24},l[3],x=1.5,y;

inti,j;

y=0;

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

{

l[i]=1;

for(j=0;j

l[i]=(x-datax[j])/(datax[i]-datax[j])*l[i];

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

l[i]=(x-datax[j])/(datax[i]-datax[j])*l[i];

y=y+datay[i]*l[i];

}

printf("\nf(x)在x=%f处的近似值为:

y=%f\n",x,y);

}

 

#include

voidmain()

{

doubledatay[9]={11.7,14.87,21.44,31.39,44.73,61.46,81.57,105.11,131.91};

intm=2,i,j,k;

doublep,data[9][4],a[3][4],datax[9]={1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,10.0};

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

for(j=1;j<2*m+1;j++)

{

data[i][j]=1;

for(k=0;k

data[i][j]=data[i][j]*datax[i];

}

for(i=0;i

{

for(j=0;j

{

a[i][j]=0;

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

a[i][j]=a[i][j]+data[k][i+j];

}

}

a[0][0]=9;

a[0][m+1]=0;

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

a[0][m+1]=a[0][m+1]+datay[i];

for(i=1;i

{a[i][m+1]=0;

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

{

p=datay[j];

for(k=0;k

p=p*datax[j];

a[i][m+1]=a[i][m+1]+p;

}

}//生成m+1行,m+2列增广矩阵//

for(i=0;i

for(j=0;j

{

if(j!

=m+1)

{printf("(%f)a%d",a[i][j],j);

if(j!

=m)

printf("+");

}

else

printf("=%f\n",a[i][j]);

}

for(i=0;i

{

if(a[i][i]!

=0)

{for(j=i+1;j

{a[j][i]=a[j][i]/a[i][i];

for(k=i+1;k

a[j][k]=a[j][k]-a[i][k]*a[j][i];

}

}

else

break;

}

if(a[m][m]!

=0&&i==m)

{a[m][m+1]=a[m][m+1]/a[m][m];

for(i=2;i<=m+1;i++)

{for(j=1;j

a[m+1-i][m+1]=a[m+1-i][m+1]-a[m+1-i][m+1-j]*a[m+1-j][m+1];

a[m+1-i][m+1]=a[m+1-i][m+1]/a[m+1-i][m+1-i];

}

printf("方程组的解为:

\n");

for(j=0;j

printf("a%d=%f\n",j,a[j][m+1]);

printf("拟合多项式为:

\n");

printf("P%d(x)=(%f)+(%f)x+(%f)x^2\n",m,a[0][m+1],a[1][m+1],a[2][m+1]);

}

else

printf("数据有误!

\n");

}}

列主元素法

#include

#include

voidmain()

{

doublea[3][4]={1,-2,-1,3,-2,10,-3,15,-1,-2,5,10},mov,comp;

inti,j,k,nrow;

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

{

comp=fabs(a[i][i]);

for(k=i;k<3;k++)//比较绝对值大小并进行主元列交换//

if(fabs(a[k][i])>=comp)

{

nrow=k;

comp=fabs(a[k][i]);

}

for(j=0;j<=3;j++)

{

mov=a[i][j];

a[i][j]=a[nrow][j];

a[nrow][j]=mov;

}

printf("方程第%d行互换位置后如下\n",i+1);

for(j=0;j<3;j++)

printf("(%f)x1+(%f)x2+(%f)x3=%f\n",a[j][0],a[j][1],a[j][2],a[j][3]);

if(a[i][i]!

=0)

{

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

{

a[j][i]=a[j][i]/a[i][i];

for(k=i+1;k<=3;k++)

a[j][k]=a[j][k]-a[i][k]*a[j][i];

a[j][i]=0;

}

printf("方程经%d次消元如下\n",i+1);

for(j=0;j<3;j++)

printf("(%f)x1+(%f)x2+(%f)x3=%f\n",a[j][0],a[j][1],a[j][2],a[j][3]);

}

else

break;

}

if(a[2][2]!

=0&&i==2)

{

printf("方程化简得\n");

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

printf("(%f)x1+(%f)x2+(%f)x3=%f\n",a[i][0],a[i][1],a[i][2],a[i][3]);

a[2][3]=a[2][3]/a[2][2];

for(i=2;i<=3;i++)

{

for(j=1;j

a[3-i][3]=a[3-i][3]-a[3-i][3-j]*a[3-j][3];

a[3-i][3]=a[3-i][3]/a[3-i][3-i];

}

printf("方程组的解为:

\n");

for(j=0;j<3;j++)

printf("x%d=%f\n",j+1,a[j][3]);

}

else

printf("数据有误!

\n");

}

Jacobi迭代法

#include

#include

voidmain()

{

doublea[3][7]={{1,-2,-1,3},{-2,10,-3,15},{-1,-2,5,10

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1