計(jì)算方法及程序?qū)崿F(xiàn)_第1頁(yè)
計(jì)算方法及程序?qū)崿F(xiàn)_第2頁(yè)
計(jì)算方法及程序?qū)崿F(xiàn)_第3頁(yè)
計(jì)算方法及程序?qū)崿F(xiàn)_第4頁(yè)
計(jì)算方法及程序?qū)崿F(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

計(jì)算方法及程序?qū)崿F(xiàn)計(jì)算方法及程序?qū)崿F(xiàn)計(jì)算方法及程序?qū)崿F(xiàn)資料僅供參考文件編號(hào):2022年4月計(jì)算方法及程序?qū)崿F(xiàn)版本號(hào):A修改號(hào):1頁(yè)次:1.0審核:批準(zhǔn):發(fā)布日期:一、對(duì)分法

1、#include""

main()

{

float

a[3]={,,},b[3]={-2,0,1},c[3];

float

f(float

x);

int

i;

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

{do{

c[i]=(a[i]+b[i])/;

if(f(c[i])==0)

exit(0);

else

if(f(c[i])*f(a[i])<0)

b[i]=c[i];

else

a[i]=c[i];

}

while((b[i]-a[i])>1e-5);

}c[i]=a[i];

printf("the

roots

are:");

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

printf("%f",c[i]);printf("");

}

float

f(float

x)

{

float

y;

y=x*x*x-2*x*x-4*x-7;

return(y);

}3、對(duì)分部分函數(shù)調(diào)用(題目要求如2)

#include

""

float

f(float

x)

{

float

y;

y=x*x*x-2*x*x-4*x-7;

return(y);}

float

f1(float

a

,float

b)

{

float

c;

do{

c=(a+b)/2;

if(f(c)==0)

exit(0);

else

if(f(a)*f(c)<0)

b=c;

else

a=c;}

while((b-a)>1e-5);

return(a);}

main()

{

float

a=,b=,s;

s=f1(a,b);

printf("the

root

is

%f",s);}

2、用對(duì)分法求出方程x3-2x2-4x-7=0在區(qū)間【3,4】?jī)?nèi)的根,精度要求為105。

#include""

main()

{

float

a=,b=,c;

float

f(float

x);

do{

c=(a+b)/;

if(f(c)==0){printf("the

root

is

%f",c);

exit(0);/*找到方程的根*/

}

else

if(f(c)*f(a)<0)

b=c;

else

a=c;

}

while((b-a)>1e-5);

printf("the

root

is

%f",a);

}

float

f(float

x)

{

float

y;

y=x*x*x-2*x*x-4*x-7;

return(y);

}對(duì)分法的算法:

掃描法的算法:4、對(duì)分法和掃描結(jié)合

求方程x4-5x2+x+2=0的實(shí)根的上、下界,實(shí)現(xiàn)根的隔離,并用對(duì)分法求出所有的實(shí)根,精度要求為105。此方程的4個(gè)實(shí)根分別為:root=

root=

root=

root=

#include

""

float

f(float

x)

{

float

y;

y=x*x*x*x-5*x*x+x+2;

return

y;

}

main()

{float

a,b,c;

int

i=0;

float

x,h=,p[5],q[5],n;

scanf("%f%f",&a,&b)

x=a;

while(x<b)

{

if(f(x)*f(x+h)<=0)

{p[i]=x;q[i]=x+h;i=i+1;

printf("[%f,%f]\n",

p[i],

q[i]);

}

x=x+h;

n=i;

}

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

{a=p[i];b=q[i];

while(b-a>1e-5)

{

c=(a+b)/2;

if(f(c)==0)

{printf("%f\n",c);exit(0);}

else

if(f(a)*f(c)<0)

b=c;

else

a=c;

}

printf("%f\n",c)

}

}

二、秦九韶算法

使用秦九韶算法計(jì)算多項(xiàng)式的值a0xn+a1x1n+……a1nx+an

例如計(jì)算3x2+2x+1,當(dāng)x=-1時(shí)值為2。

main()

{

float

aa[20],y,x;

int

i,n;

printf("input

duo

xiang

shi

ci

shu

n:\n"

)

scanf("%d",&n);

printf("input

duo

xiang

shi

de

xi

shu\n");

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

scanf("%f",&aa[i]);

printf("input

x\n");

scanf("%f",&x);

y=aa[0];

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

y=y*x+aa[i];

printf("pn=%f\n",y);

}秦九韶算法三、牛頓法

1、編寫(xiě)牛頓法求方程根的通用程序,精度要求為105。(x3-x2-2x-3=0

初值

x0=2)

#include""

main()

{

float

f(float

x);

float

fd(float

x);

float

x,x0,x1;

x1=;

do{

x0=x1;

x1=x0-f(x0)/fd(x0);

}

while(fabs(x1-x0)>1e-5);

printf("the

root

is%f\n",x1);

}

float

f(float

x)

{return

x*x*x-x*x-2*x-3;}

float

fd(float

x)

{return

3*x*x-2*x-2;}2、用牛頓法求a的立方根,精度要求為。

#include""

main()

{

double

x0,x1;

int

a;

printf("input

a\n");

scanf("%d",&a);

if(a==0){printf("a=0\n");exit(0);}

x1=a;

do{

x0=x1;

x1=x0-(x*x*x-a)/(3*x*x);

}

while(fabs(x1-x0)>=;

printf("the

root

is%f\n",x1);

printf("root=%f\n",x1);

}

3、用牛頓法求方程x-ex=0(x-exp(-x)=0)在1附近的根,精度要求為。

#include""

main()

{

float

x0,x1;

x1=;

do{

x0=x1;

x1=x0-(x-exp(-x))/(1+exp(-x));

}

while(fabs(x1-x0)>1e-5);

printf("the

root

is%f\n",x1);

}

牛頓法的算法:

4

四、列主元高斯消元法(通用程序)

#include""

#define

M

3

#define

N

3

main()

{

float

a[M][N+1],x[N],temp,l,s;

int

i,j,k,r;

printf("please

input

the

date:\n");

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

for(j=0;j<N+1;j++)

scanf("%f",&a[i][j]);

for(k=0;k<N-1;k++)

{

{r=k;

for(i=k+1;i<=M-1;i++)

if(fabs(a[i][k])>fabs(a[r][k]))

r=i;

}

if(a[r][k]==0)

{

printf("QY\n");

exit(0);

}

else

if(r!=k)

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

{

temp=a[k][j];

a[k][j]=a[r][j];

a[r][j]=temp;

}

for(i=k+1;i<=N-1;i++)

{

l=a[i][k]/a[k][k];

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

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

}

}

for(k=N-1;k>=0;k--)

{

s

=;

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

s

=

s

+a[k][j]*x[j];

x[k]=(a[k][N]-

s)/a[k][k];

}

for(i=0;i<=N-1;i++)

printf("x[%d]=%f\n",i,x[i]);

}列主元高斯消元法的算法:

5

五、LU分解法

用LU分解法解線性方程組,系數(shù)矩陣由二維數(shù)組a給出,右端由b數(shù)組給出。

#include""

main()

{

int

i,j,k,m,n=4;

float

t;

float

b[4]={1,1,-1,-1};

float

a[4][4]={{4,3,2,1},{3,4,3,2},{2,3,4,3},{1,2,3,4}};

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

{

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

{

t=0;

for(m=0;m<=k-1;m++)

t=t+a[k][m]*a[m][j];

a[k][j]=a[k][j]-t;

}

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

{

t=0;

for(m=0;m<=k-1;m++)

t=t+a[i][m]*a[m][k];

a[i][k]=(a[i][k]-t)/a[k][k];

}

}

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

{

t=0;

for(j=0;j<=i-1;j++)

t=t+a[i][j]*b[j];

b[i]=b[i]-t;

}

for(i=n-1;i>=0;i--)

{

t=0;

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

t=t+a[i][k]*b[k];

b[i]=(b[i]-t)/a[i][i];

}

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

printf("%",b[i]);

}

LU分解法的算法:

6

六、雅可比迭代法

1、通用程序

#define

N

4

#include""

float

cha(x,y)

float

x[N],y[N];

{

float

z;

int

i,k;

z=fabs(y[0]-x[0]);

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

if(fabs(y[i]-x[i])>z)

z=fabs(y[i]-x[i]);

return

(z);

}

main()

{

float

a[N][N],b[N],x[N],y[N],h;

int

i,j,k;

float

t=0,s;

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

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

{

scanf("%f",&h);

a[i][j]=h;

}

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

{

scanf("%f",&h);

b[i]=h;y[i]=0;

}

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

if(a[i][i]==0)

{printf("QIYI");exit(0);}

printf("Jacobi\n");

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

{

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

x[i]=y[i];

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

{

t=0;

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

if(j!=i)

t=t+a[i][j]*x[j];

y[i]=(b[i]-t)/a[i][i];

}

if(cha(x,y)<1e-6)

{printf("xunhuancishu:k=%d\n",k);

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

printf("%10f",x[i]);printf("\n");

break;

}}

if(k>30)printf("fasann\n");

}2、實(shí)驗(yàn)書(shū)第4題

#include""

float

cha(x,y)

float

x[3],y[3];

{

float

z;

int

i,k,n=3;

z=fabs(y[0]-x[0]);

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

if(fabs(y[i]-x[i])>z)

z=fabs(y[i]-x[i]);

return

(z);

}

main()

{

float

a[3][3]={{10,-2,-1},{-2,10,-1},{-1,-2,5}};

float

b[3]={3,15,10},y[3]={0,0,0},x[3];

float

t=0,s;

int

i,j,k,n=3;

printf("Gauss-Seidel\n");

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

{

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

x[i]=y[i];

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

{

t=0;

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

if(j!=i)

t=t+a[i][j]*x[j];

y[i]=(b[i]-t)/a[i][i];

}

if(cha(x,y)<1e-6)

{

printf("xunhuancishu:k=%d\n",k);

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

printf("%10f",y[i]);

printf("\n");

break;

}

}

if(k>30)printf("fasann\n");}

6

六、雅可比迭代法

1、通用程序

#define

N

4

#include""

float

cha(x,y)

float

x[N],y[N];

{

float

z;

int

i,k;

z=fabs(y[0]-x[0]);

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

if(fabs(y[i]-x[i])>z)

z=fabs(y[i]-x[i]);

return

(z);

}

main()

{

float

a[N][N],b[N],x[N],y[N],h;

int

i,j,k;

float

t=0,s;

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

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

{

scanf("%f",&h);

a[i][j]=h;

}

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

{

scanf("%f",&h);

b[i]=h;y[i]=0;

}

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

if(a[i][i]==0)

{printf("QIYI");exit(0);}

printf("Jacobi\n");

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

{

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

x[i]=y[i];

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

{

t=0;

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

if(j!=i)

t=t+a[i][j]*x[j];

y[i]=(b[i]-t)/a[i][i];

}

if(cha(x,y)<1e-6)

{printf("xunhuancishu:k=%d\n",k);

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

printf("%10f",x[i]);printf("\n");

break;

}}

if(k>30)printf("fasann\n");

}2、實(shí)驗(yàn)書(shū)第4題

#include""

float

cha(x,y)

float

x[3],y[3];

{

float

z;

int

i,k,n=3;

z=fabs(y[0]-x[0]);

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

if(fabs(y[i]-x[i])>z)

z=fabs(y[i]-x[i]);

return

(z);

}

main()

{

float

a[3][3]={{10,-2,-1},{-2,10,-1},{-1,-2,5}};

float

b[3]={3,15,10},y[3]={0,0,0},x[3];

float

t=0,s;

int

i,j,k,n=3;

printf("Gauss-Seidel\n");

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

{

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

x[i]=y[i];

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

{

t=0;

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

if(j!=i)

t=t+a[i][j]*x[j];

y[i]=(b[i]-t)/a[i][i];

}

if(cha(x,y)<1e-6)

{

printf("xunhuancishu:k=%d\n",k);

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

printf("%10f",y[i]);

printf("\n");

break;

}

}

if(k>30)printf("fasann\n");}

8

雅可比迭代法的算法:

高斯-塞德?tīng)柕ǖ乃惴ǎ?/p>

八、牛頓基本插值公式(實(shí)驗(yàn)書(shū)第三題)

main()

{

int

i,k,n;

float

x[20],y[20],t,h,p;

scanf("%d",&n);

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

scanf("%f%f",&x[i],&y[i]);

scanf("%f",&t);

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

{

for(i=n;i>=k;i--)

{y[i]=(y[i]-y[i-1])/(x[i]-x[i-k]);

printf("%",y[i]);

}

printf("\n");

}

p=y[0];

h=1;

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

{

h=h*(t-x[i-1]);

p+=h*y[i];

}

printf("p=%f\n",p);

}牛頓基本插值公式算法:

9

九、Lagarange全程插值算法(實(shí)驗(yàn)書(shū)第一題)

main()

{int

i,k,n;

float

x[20],y[20],t,s,p;

p=0;

scanf("%d",&n);

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

scanf("%f%f",&x[i],&y[i]);

scanf("%f",&t);

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

{s=1;

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

if(i!=k)

s=s*((t-x[i])/(x[k]-x[i]));

p=y[k]*s+p;}

printf("%f",p);

}Lagarange全程插值算法:

十、復(fù)合辛普森求積公式的算法

1、編制復(fù)合Simpson公式求積分的通用程序,設(shè)N=8,試算10211Xdx

①、#include""

float

f(float

x)

{

return

1/(x*x+1);

}

main()

{

int

i;

float

a=0,b=1,h,x,s,T1,T2;

h=b-a;

T1=h*(f(a)+f(b))/2;

do

{s=0;

x=a+h/2;

s=s+f(x);

T2=T1/2+h*s/2;

}while(fabs(T2-T1)>1e-5);

}

10

十一、多項(xiàng)式型經(jīng)驗(yàn)公式算法

設(shè)實(shí)驗(yàn)數(shù)據(jù)如下:

Xi

Yi

求其二次擬合多項(xiàng)式

#define

N

7

#define

m

2

#include

""

main()

{

int

i,j,k;

float

x[N+1]={0,,,,,,,},d,l;

float

y[N+1]={0,,,,,,,};

float

t[m+1],temp,s;

float

a[m+1][m+2]={0};

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

{

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論