数据库实验报告Word下载.docx

上传人:b****2 文档编号:394862 上传时间:2023-04-28 格式:DOCX 页数:24 大小:423.49KB
下载 相关 举报
数据库实验报告Word下载.docx_第1页
第1页 / 共24页
数据库实验报告Word下载.docx_第2页
第2页 / 共24页
数据库实验报告Word下载.docx_第3页
第3页 / 共24页
数据库实验报告Word下载.docx_第4页
第4页 / 共24页
数据库实验报告Word下载.docx_第5页
第5页 / 共24页
数据库实验报告Word下载.docx_第6页
第6页 / 共24页
数据库实验报告Word下载.docx_第7页
第7页 / 共24页
数据库实验报告Word下载.docx_第8页
第8页 / 共24页
数据库实验报告Word下载.docx_第9页
第9页 / 共24页
数据库实验报告Word下载.docx_第10页
第10页 / 共24页
数据库实验报告Word下载.docx_第11页
第11页 / 共24页
数据库实验报告Word下载.docx_第12页
第12页 / 共24页
数据库实验报告Word下载.docx_第13页
第13页 / 共24页
数据库实验报告Word下载.docx_第14页
第14页 / 共24页
数据库实验报告Word下载.docx_第15页
第15页 / 共24页
数据库实验报告Word下载.docx_第16页
第16页 / 共24页
数据库实验报告Word下载.docx_第17页
第17页 / 共24页
数据库实验报告Word下载.docx_第18页
第18页 / 共24页
数据库实验报告Word下载.docx_第19页
第19页 / 共24页
数据库实验报告Word下载.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数据库实验报告Word下载.docx

《数据库实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《数据库实验报告Word下载.docx(24页珍藏版)》请在冰点文库上搜索。

数据库实验报告Word下载.docx

3.连接查询

4.嵌套查询

5.集合查询

3.4数据操作

1.创建视图

2.视图查询

主要仪器设备

笔记本计算机,使用SQLServer提供的MicrosoftSQLServerManagementStudio工具,交互式使用SQL语句。

实验记录(写出实验内容中的程序代码和运行结果)(可分栏或加页)

select*fromStudent

select*fromCourse

select*fromSC

(1)单表查询

SelectSname,'

YearofBirth:

'

asbirth,2000-SageBIRTHDAY,DEPARTMENT=LOWER(Sdept)

formStudent;

(2)分组统计:

selectcno课程号,count(*)人数,AVG(grade)均分,MAX(grade)最高分

fromscgroupbyCno

(3)连接查询:

selectStudent.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade

formStudentLEFTOUTERJOINSCon(Student.Sno=SC.Sno)

(4)嵌套查询:

selectSname,SagefromStudent

whereSage<

ALL(selectSagefromStudentwhereSdept='

CS'

andSdept<

>

'

;

(5)集合查询:

select*fromStudentwhereSdept='

exceptselect*fromStudentwhereSage<

=19;

(6)视图查询:

createVIEWS_G(Sno,Gavg)

asselectSno,avg(Grade)

fromSCgroupbySno;

selectSC.Sno,Cno,grade

fromSC,S_G

whereSC.Sno=S_G.SnoandGrade>

=S_G.Gavg

实验结果和分析

心得体会(遇到的问题和解决方法)

通过使用二分法与割线法求解方程,是我对所学的知识有了更深的了解,加深了对这两种方法的印象,同时也知道对于不同的问题应该采用不同的、适合的方法,才能更快更好的解决问题。

在编写二分法程序时,循环条件出错,使程序的运行结果无法停止,改变条件后,程序运行结果正常。

实验二线性方程组的直接求解

实验目的和要求

合理选择利用Gauss消元法、LU分解法、追赶法求解下列方程组:

实验内容

高斯消元法:

找到与原方程组等价的系数矩阵为三角形方正的方程组:

lik=aik/akk

aij=aij-lik*akj

k=1,2,…,n-1

i=k+1,k+2,…,nj=k+1,k+2,…,n+1

由回代过程求得原方程组的解:

xn=ann+1/ann

xk=(akn+1-∑akjxj)/akk(k=n-1,n-2,…,2,1)

LU分解:

如果A的各界顺序主子式不为0,则存在唯一的LU分解。

u1j=a1j,j=1,2,3,...,n

li1=ai1/u11,i=1,2,3,...,n

ukj=akj-∑lkiuij,j=k,k+1,...,n,k=2,3,...,n

lik=(aik-∑lijujk)/ukk,i=k+1,...,nj=1,...,k-1

追赶法:

矩阵A的LU分解中,矩阵L和U分别取下二对角线和上二对角线形式,求解Ax=b等价于解两个二对角线方程组Ly=b,Ux=y自上而下解方程组Ly=b形象地称为“追”,自下而上解方程组Ux=y称为“赶”。

笔记本计算机

Gauss消元法

#include"

stdio.h"

doublea[15][15],a0[15][15];

doubleb[15],b0[15],l[15];

intn;

inti,j;

voiddisplayA()

{

printf("

\n"

);

for(j=1;

j<

=n;

j++)

{

for(i=1;

i<

i++)

a[%d][%d]=%f"

j,i,a[j][i]);

b[%d]=%f\n"

j,b[j]);

}

for(j=1;

j++)

l[%d]=%f"

j,l[j]);

}

voidmain()

{inti,j,k;

scanf("

%d"

&

n);

for(i=1;

{

%lf"

a[i][j]);

a0[i][j]=a[i][j];

b[i]);

b0[i]=b[i];

displayA();

k=1;

do

if(i==k)continue;

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

for(j=k+1;

j++)a[k][j]=a0[k][j]/a0[k][k];

b[k]=b0[k]/a0[k][k];

for(j=k+1;

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

b[i]=b0[i]-l[i]*b0[k];

displayA();

if(k==n)break;

k++;

}while

(1);

b[%2d]=%lf\n"

i,b[i]);

getch();

LU分解

#include<

stdio.h>

math.h>

#defineL30

doublea[L][L],b[L],l[L][L],u[L][L],x[L],y[L];

intmain()

intn,i,j,k,r;

++i)

++j)

{

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];

i;

{y[i]-=l[i][j]*y[j];

for(i=n;

i>

0;

--i)

{x[i]=y[i];

for(j=i+1;

{x[i]-=u[i][j]*x[j];

x[i]/=u[i][i];

for(i=1;

%0.2lf\n"

x[i]);

追赶法

main()

doublea[15],b[15],c[15],d[15];

doublet;

inti,n;

%lf%lf%lf"

b[1],&

c[1],&

d[1]);

for(i=2;

=n-1;

%lf%lf%lf%lf"

a[i],&

b[i],&

c[i],&

d[i]);

a[n],&

b[n],&

d[n]);

c[1]=c[1]/b[1];

d[1]=d[1]/b[1];

t=b[i]-c[i-1]*a[i];

c[i]=c[i]/t;

d[i]=(d[i]-d[i-1]*a[i])/t;

d[n]=(d[n]-d[n-1]*a[n])/(b[n]-c[n-1]*a[n]);

for(i=n-1;

=1;

i--)d[i]=d[i]-c[i]*d[i+1];

\n********************************\n"

d[%2d]=%lf\n"

i,d[i]);

使用直接法求解线性方程组中,系数矩阵A的主元素不为0,即可使用高斯消元法,如果A的各阶主子式不为0,则存在唯一的LU分解。

追赶法是把高斯消元法用到求解三对角线方程组上,计算量较小。

在编写程序时,首先必须的对高斯消元法,LU分解,追赶法有比较详细的了解,知道每一步该怎么做,要有具体的框架,然后在开始编写程序。

同时要注意赋值符号是==,而不是=。

并且调用的函数要写在主函数之前。

实验三线性方程组的迭代求解

使用雅可比迭代法或高斯-赛德尔迭代法对下列方程组进行求解。

雅可比迭代:

设线性方程组Ax=b的系数矩阵A可逆,且主对角元a11,a22,…,ann均不为零,令D=diag(a11,a22,…,ann)并将A分解成A=(A-D)+D从而线性方程组可写成Dx=(D-A)x+b则有迭代公式x(k+1)=B1x(k)+f1

高斯赛德尔迭代:

把矩阵A分解成A=D-L-U。

其中D=diag(a11,a22,…,ann),-L,-U分别为A的主对角元素除外的下三角和上三角部分,从而线性方程组可写成(D-L)x=Ux+b,即x=B2x+f2,则有迭代公式x(k+1)=B2x(k)+f2

雅可比迭代

floata[3][3]={{10,-1,-2},{-1,10,-2},{-1,-1,5}},b[3]={7.2,8.3,4.2};

floatx[3]={0,0,0},sum1;

inti,j,k,n=3;

for(k=0;

10;

k++){

for(i=0;

3;

sum1=0;

for(j=0;

n;

if(i==j)continue;

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

x[i]=(b[i]-sum1)/a[i][i];

{printf("

x[%d]=%f,"

i+1,x[i]);

高斯赛德尔迭代

floatx[3]={0,0,0},sum1,sum2;

k++)

sum2=0;

for(j=i+1;

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

x[i]=(b[i]-sum1-sum2)/a[i][i];

getch();

雅可比迭代法公式简单,每迭代一次只需计算一次矩阵和向量的乘法,需存放x(k+1),x(k)

高斯赛德尔迭代在计算机运行时只需一组存储单元,而且可以较好的利用x(k+1),在一定条件下高斯赛德尔迭代比雅可比迭代法收敛的快。

在编写程序时要认真、细心,每一个语句的括号要相匹配,有时候在嵌套语句较多时,要注意每一个括号,缺少括号会使运行结果错误。

在定义变量时,要记得赋初值。

实验四代数插值和最小二乘法拟合

代数插值

使用拉格朗日插值法或牛顿插值法求解:

已知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

最小二乘法拟合多项式

给定数据点(xi,yi),用最小二乘法拟合数据的多项式,并求平方误差。

xi

0.5

0.6

0.7

0.8

0.9

1.0

yi

1

1.75

1.96

2.19

2.44

2.71

3.00

设函数在区间[a,b]上n+1互异节点x0,x1,…,xn上的函数值分别为y0,y1,…,yn,求n次插值多项式Pn(x),满足条件Pn(xj)=yj,j=0,1,…,n

令Ln(x)=y0l0(x)+y1l1(x)+…+ynln(x)=∑yili(x)

其中l0(x),l1(x),…,ln(x)为以x0,x1,…,xn为节点的n次插值基函数,则Ln(x)是一次数不超过n的多项式,且满足

Ln(xj)=yj,L=0,1,…,n

再由插值多项式的唯一性,得Pn(x)≡Ln(x)

建立正规方程组:

∑(∑xij+k)ak=∑xijyi,j=0,1,…,n

平方误差:

I=∑(∑akxik-yi)2

代数差值

stdlib.h>

conio.h>

voiddifference(float*x,float*y,intn)

loat*f;

intk,i;

f=(float*)malloc(n*sizeof(float));

for(k=1;

k++)

f[0]=y[k];

i++)

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

y[k]=f[k];

}

return;

intmain()

floatx[20],y[20],xx,yy;

请输入数据个数n:

"

x[%d]="

i);

%f"

x[i]);

y[%d]="

y[i]);

}

difference(x,(float*)y,n);

请输入插值xx:

xx);

yy=y[20];

=0;

i--)

yy=yy*(xx-x[i])+y[i];

\n近似值为:

(%f)=%f\n"

xx,yy);

最小二乘法

math.h"

#definenum10

floatneiji(floatb[num],floatc[num])/*内积函数*/

intp;

floatnj=0;

for(p=1;

p<

num;

p++)

nj+=c[p]*b[p];

returnnj;

floatpower(float&

a,intn)

floatb=1;

for(inti=0;

b*=a;

returnb;

floatx[num],y[num],sumX[num],sumY[num];

inti,j,n,index;

charconti;

FILE*f;

conti='

;

请输入已知点的个数n=\n"

请输入x和y:

sumX[1]=sumY[1]=0;

printf("

scanf("

sumX[1]+=x[i];

sumY[1]+=y[i];

sumX[1]=%f"

sumX[1]);

sumY[1]=%f"

sumY[1]);

请输入拟和次数="

index);

i=n;

sumX[0]=i;

=2*index;

for(j=1;

{

sumX[i]+=power(x[j],i);

}

sumX[%d]=%f"

i,sumX[i]);

=index+1;

sumY[i]+=power(x[j],i-1)*y[j];

sumY[%d]=%f"

i,sumY[i]);

f=fopen("

Gaussdata.txt"

"

w"

fprintf(f,"

%i\n"

index+1);

=index;

for(j=i;

=index+i;

fprintf(f,"

%f"

sumX[j]);

fprintf(f,"

%f\n"

sumY[i+1]);

fclose(f);

//利用求解线性方程组的方法求解…

利用插值法寻求近似函数并计算近似值使求解变得简单,并且只要求在插值节点上,插值函数与被插函数的函数值相等。

在曲线拟合中采用误差平方和来度量误差的整体大小。

寻求与给定点(xi,yi)(i=0,1,…,m)的距离平方和为最小的曲线y=p(x).函数p(x)称为拟合函数或最小二乘解。

通过本次实验使自己在理论知识的基础上加以实践,加深对代数插值和最小二乘法拟合的理解。

在调试程序时经常会因为一些小的错误导致程序不能正常运行,这时需要仔细检查程序。

总的来说,在整个实验的过程中,使自己对所学的知识有了进一步的巩固,也学会了用简单的方法求解函数。

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

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

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2