当前位置:文档之家› 理学院信息与计算科学实训报告

理学院信息与计算科学实训报告

理学院信息与计算科学实训报告
理学院信息与计算科学实训报告

实训报告

实训题目: 通讯录管理系统

学院: 理学院

专业: 信息与计算科学

学号:

学生姓名:

2014 年 3 月 18 日

目录

1概述 (1)

2系统分析 (1)

3 概要设计 (3)

4 详细设计 (9)

5 运行与测试 (25)

总结与心得 (41)

参考文献 (42)

1概述

课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。课程设计是让同学们对所学的课程更全面的学习和应用,理解和掌握课程的相关知识。《数据结构》是一门重要的专业基础课,是计算机理论和应用的核心基础课程。

数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。

在这次的课程设计中我选择的题目是通讯录管理,平常的系统,实现功能简单,不能够进行有效的管理,经过我的思考,我做的系统,结构清楚,能够添加联系人,删除,查找,并分为以姓名,电话号码两种方式查找,精确,无错,最主要的是我考虑到了用户的使用习惯,以人性化的方式,展现在用户面前,界面清晰大方,容易操作。

2系统分析

通讯录管理基本内容包括:添加,查找,删除联系人,,上述基本功能用链式存储比较方便,由于查找,删除都是以姓名或电话号码为关键字进行的,因此要用到双向链表,效率高,以实现各种功能。由此重点和难点是双向链表的建立,查找,删除等基本操作。

通讯录管理软件,通过各种接口函数完成对联系人的添加,查找,删除,看似简单,实际实现起来,还是有点困难,关键是要考虑到各种情况

程序执行时的命令:

本程序为了使用时的方便,采用菜单式的方式来完成程序的演示,几乎不用输入什么特殊的命令,只需按提示输入选者即可。界面友好,适合用户使用习惯。

5.测试数据。

在我的这个通讯录管理软件中;基本函数有

dlink *enter(dlink *h);// 输入信息函数

int menu_select();//菜单选择函数

dlink *add(dlink *h);//增加联系人函数

void search(dlink *h) ;//查找函数

dlink *deletebyname(dlink *h);// 以姓名为关键字删除

dlink *deletebyphone(dlink *h) ;//以电话号码为关键字删除

void output(dlink *h);// 输出函数

void searchbyname(dlink *h) //按姓名查找

void searchbyphone(dlink *h) //按电话号码查找

void save(dlink *h) //保存联系人信息到文件

详细分析:1.通过dlink *creatlist()

{dlink *head,*p,*r;

p=new dlink;

head=p;

r=head;

p->Rlink=NULL;

return head; // 创建双向链表

2.通过dlink *enter(dlink *h)函数输入联系人信息

3.通过调用void search(dlink *h)函数选择是以姓名还是电话号码方式进行查找,分别调用函数void searchbyname(dlink *h),void searchbyphone(dlink *h)完成相应功能。

3.调用函数dlink *add(dlink *h)增加联系人详细。

4.通过调用dlink *deletebyname(dlink *h),dlink *deletebyphone(dlink *h),分别以姓名,电话号码为关键字进行删除。

5.调用void output(dlink *h)函数输出所有联系人信息

6.调用void save(dlink *h)函数保存联系人信息。

3 概要设计

1.数据结构设计:

在本实验中我用的是双向链表,其主要优点是便于查找,删除操作,不用记录指针操作,因其本身有一个指向前驱节点,一个指向后继节点的指针。

2.算法的设计:

本系统从整体上分为7大模块:

(1)输入联系人信息

(2)查找联系人信息 //根据指定关键字进行相关查找

(3)显示联系人信息 //显示所有联系人信息

(4)增加联系人信息 //向通讯录中增加联系人信息

(5)删除联系人信息 //根据指定关键字删除联系人信息

(6)存储联系人信息 //存储通讯录中的联系人信息

(7)退出程序

对应模块相应算法为:

(1):输入联系人信息

dlink *enter(dlink *h)

{

dlink *head,*r,*p,*q;

head=h;

r=h;

q=h->Rlink;

p=new dlink;

cin>>p->https://www.doczj.com/doc/2f12373423.html,;

cin>>p->data.phone;

cin>>p->data.street;

cin>>p->data.city;

cin>>p->data.eip;

cin >>p->data.state;

p->Rlink=NULL;

while(q!=NULL)

{r=q;

q=q->Rlink;

}

p->Llink=r;

r->Rlink=p;

r=p;

return head;

}

(2)查找联系人信息

按姓名查找:

void searchbyname(dlink *h)

{

cin>>nam;//输入联系人姓名

while(p&&p->https://www.doczj.com/doc/2f12373423.html,!=nam)

{q=p;

p=p->Rlink;

} //查找节点

if(p)

{cout<<"您要查找的联系人信息为:"<

cout<<"********************************************************************** *********"<

cout<<"\n\t姓名: "<https://www.doczj.com/doc/2f12373423.html,<

cout<<"\n\t电话号码:"<data.phone<

cout<<"\n\t街道名: "<data.street<

cout<<"\n\t城市名: "<data.city<

cout<<"\n\t邮编: "<data.eip<

cout<<"\n\t国家: "<data.state<

cout<<"********************************************************************** *********"<

}

}

按电话号码查找:

void searchbyphone(dlink *h)

{

cout<<"请输入要查找的联系人电话号码:"<

cin>>callnum;

while(p&&p->data.phone!=callnum)

{q=p;

p=p->Rlink;

j++;

}

if(p)

{cout<<"您要查找的联系人信息为:"<

cout<<"********************************************************************** *********"<

cout<<"\n\t电话号码:"<data.phone<

cout<<"\n\t街道名: "<data.street<

cout<<"\n\t城市名: "<data.city<

cout<<"\n\t邮编: "<data.eip<

cout<<"\n\t国家: "<data.state<

cout<<"********************************************************************** *********"<

}

}

(3)显示联系人信息

void output(dlink *h)

{

dlink *p;

p=h->Rlink;

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

{

cout<<"\n\t\t\t第"<

cout<<"********************************************************************** *********"<

cout<<"\n\t姓名: "<https://www.doczj.com/doc/2f12373423.html,<

cout<<"\n\t电话号码:"<data.phone<

cout<<"\n\t街道名: "<data.street<

cout<<"\n\t城市名: "<data.city<

cout<<"\n\t邮编: "<data.eip<

cout<<"\n\t国家: "<data.state<

cout<<"********************************************************************** *********"<

p=p->Rlink;

}

}

(4)增加联系人信息

dlink *add(dlink *h)

{dlink *head,*r,*p,*q;

head=h;

r=h;

q=h->Rlink;

cout<<"\n\t\t**************** 请输入联系人信息****************"<

cout<<"请输入姓名:"<

cout<<"请输入电话:"<

cin>>p->data.phone;

cout<<"请输入街道名: "<

cin>>p->data.street;

cout<<"请输入城市名: "<

cin>>p->data.city;

cout<<"请输入邮编: "<

cin>>p->data.eip;

cout<<"请输入国家名: "<

cin >>p->data.state;

p->Rlink=NULL;

while(q!=NULL)

{r=q;

q=q->Rlink;

} //while

p->Llink=r;

r->Rlink=p;

r=p;

return head;

}

(5)删除联系人信息

dlink *deletebyname(dlink *h) //按姓名删除

{

cout<<"请输入要删除的联系人姓名:"<

cin>>nam;

while(p&&p->https://www.doczj.com/doc/2f12373423.html,!=nam)

{q=p;

p=p->Rlink;

}

if(num==1) //num为联系人总数目{p->Llink->Rlink=NULL;

free(p);

num--;

}

else

if(p->Llink==head)

{ p->Rlink->Llink=head;

p->Llink->Rlink=p->Rlink;

free(p);

num--;

else if(p->Rlink==NULL)

{p->Llink->Rlink=NULL;

free(p);

num--;

}

else

{ p->Rlink->Llink=p->Llink;

q->Rlink=p->Rlink;

free(p);

num--;

}

cout<<"\n\t\t已删除成功!"<

return head;

}

dlink *deletebyphone(dlink *h) //按电话号码删除{dlink *head,*p,*q;

cout<<"请输入要删除的联系人电话号码:"<>callnum;

while(p&&p->data.phone!=callnum)

{q=p;

p=p->Rlink;

}

if(num==1)

{p->Llink->Rlink=NULL;

free(p);

num--;

}

else

if(p->Llink==head)

{ p->Rlink->Llink=head;

p->Llink->Rlink=p->Rlink;

free(p);

num--;

}

else if(p->Rlink==NULL)

{p->Llink->Rlink=NULL;

free(p);

num--;

}

else

{ p->Rlink->Llink=p->Llink;

free(p);

num--;

}

cout<<"\n\t\t已删除成功!"<

return head;

}

(6)存储联系人信息

int WriteLinklistToFile(const char* strFile, dlink *h)

{

FILE *fpFile;

dlink *head = h;

dlink *p;

p=head->Rlink;

if(!(fpFile = fopen(strFile,"w")))//以写的方式打开

{

printf("Open file failed\n");

return 0;

}

while(p)

{

fprintf(fpFile,"%s\t%s\t%s\t%s\t%s\t%s\t\n",p->https://www.doczj.com/doc/2f12373423.html,,p->data.phone,p->data.street,p->dat a.city,p->data.eip,p->data.state);

p=p->Rlink;

}

fclose(fpFile);

return 1;

};

void save(dlink *h)

{ cout<<"暂不支持很快会解决"<

exit(0);

dlink *head;

head=h;

int a;

char* strName = "test.txt";

}

(7)退出程序

Exit(0);

3、抽象据类型的设计

typedef struct doublelink //定义

{struct information data;

struct doublelink *Llink,*Rlink;

}dlink;

4 详细设计

程序源代码为:

#include

#include

#include

#include

#include

#include

using namespace std;

unsigned int num=0;

struct information

{string name;

string phone;

string street;

string city;

string eip;

string state;

};

struct information a[120];

typedef struct doublelink //定义

{struct information data;

struct doublelink *Llink,*Rlink;

}dlink;

dlink *enter(dlink *h);

dlink *insert(dlink *h) ;

int menu_select();

dlink *add(dlink *h);

void search(dlink *h) ;

dlink *deletebyname(dlink *h);

dlink *deletebyphone(dlink *h) ;

void output(dlink *h);

dlink *creatlist()

{dlink *head,*p,*r;

p=new dlink;

head=p;

r=head;

p->Rlink=NULL;

return head;

}

//*********************************************************

dlink *enter(dlink *h) //创建

{ dlink *head,*r,*p,*q;

head=h;

r=h;

q=h->Rlink;

system("cls");

//新建用户信息

p=new dlink;

cout<<"\n\t\t**************** 请输入联系人信息****************"<

cin>>p->https://www.doczj.com/doc/2f12373423.html,;

cout<<"请输入电话:"<

cin>>p->data.phone;

cout<<"请输入街道名: "<

cin>>p->data.street;

cout<<"请输入城市名: "<

cin>>p->data.city;

cout<<"请输入邮编: "<

cin>>p->data.eip;

cout<<"请输入国家名: "<

cin >>p->data.state;

p->Rlink=NULL;

while(q!=NULL)

q=q->Rlink;

}

p->Llink=r;

r->Rlink=p;

r=p;

num++;

char z;

cout<<" 是否要继续插入新联系人信息? (Y/N):"<

cin>>z;

if((z=='y')||(z=='Y'))

head=insert(head);

return head;

}

//***********************************************************************

dlink *insert(dlink *h) //插入新用户信息

{ dlink *head=h;

if(num==0)

{ cout<<"\n\t通讯录中没有任何联系人信息,确认要添加吗?(Y/N)"<

char z;

cin>>z;

if((z=='y')||(z=='Y'))

head=add(head);

else ;

}

else

head=add(head);

return head;

}

//*****************************************************************

dlink *add(dlink *h)

{dlink *head,*r,*p,*q;

head=h;

r=h;

q=h->Rlink;

system("cls");

p=new dlink;

cout<<"\n\t\t**************** 请输入联系人信息****************"<

cout<<"请输入姓名:"<

cin>>p->https://www.doczj.com/doc/2f12373423.html,;

cout<<"请输入电话:"<

cin>>p->data.phone;

cout<<"请输入街道名: "<

cin>>p->data.street;

cout<<"请输入城市名: "<

cin>>p->data.city;

cout<<"请输入邮编: "<

cin>>p->data.eip;

cout<<"请输入国家名: "<

cin >>p->data.state;

p->Rlink=NULL;

while(q!=NULL)

{r=q;

q=q->Rlink;

} //while

p->Llink=r;

r->Rlink=p;

r=p;

num++;

char z;

cout<<" 是否要继续插入新联系人信息? (Y/N):"<

cin>>z;

if((z=='y')||(z=='Y'))

head=insert(head);

return head;

}

//*************************************************************************** ****************

void searchbyname(dlink *h) //按姓名查找

{

if(num==0)

{cout<<"\n\t当前通讯录没有任何联系人信

息!!!"<

cout<<"\n\t\t\t*****无法执行查找操作!!!!******"<

}

else

{dlink *head,*p,*q;

string nam;

head=h;

p=h->Rlink;

int i,j=1,k=1,mark=0;

system("cls");

cout<<"请输入要查找的联系人姓名:"<

cin>>nam;

for(i=k;i<=num;i++,p=p->Rlink)

{

while(p&&p->https://www.doczj.com/doc/2f12373423.html,!=nam)

{q=p;

p=p->Rlink;

j++;

}

if(p)

{cout<<"您要查找的联系人信息为:"<

cout<<"********************************************************************** *********"<

cout<<"\n\t姓名: "<https://www.doczj.com/doc/2f12373423.html,<

cout<<"\n\t电话号码:"<data.phone<

cout<<"\n\t街道名: "<data.street<

cout<<"\n\t城市名: "<data.city<

cout<<"\n\t邮编: "<data.eip<

cout<<"\n\t国家: "<data.state<

cout<<"********************************************************************** *********"<

cout<

mark=1;

if(p->Rlink==NULL)

{cout<<"\n\t已无重名信息"<

cout<<"\n\t您是否继续下一个查找???(Y/N)"<

char z;

cin>>z;

if((z=='y')||(z=='Y'))

search(head);

else break;}

}

if(p==NULL)

{

if(mark==1)

{

if(q->https://www.doczj.com/doc/2f12373423.html,!=nam)

{cout<<"\n\t已无重名信息"<

cout<<"\n\t您是否继续下一个查找???(Y/N)"<

char z;

cin>>z;

if((z=='y')||(z=='Y'))

search(head);

else break;

}

}

else

{cout<<"\n\t\t^^^^^搜索的联系人不存在!!!!!^^^^^^"<

cout<

cout<<"\n\t您是否继续下一个查找???(Y/N)"<

char z;

cin>>z;

if((z=='y')||(z=='Y'))

search(head);

else break;

;}}

}//for

}//else

}//wai

//**************************************************************************

void searchbyphone(dlink *h) //按电话号码查找

{

if(num==0)

{cout<<"\n\t当前通讯录没有任何联系人信

息!!!"<

cout<<"\n\t\t\t*****无法执行查找操作!!!!******"<

cout<

}

else

{dlink *head,*p,*q;

string callnum;

p=h->Rlink;

int j=0,k=1;

system("cls");

cout<<"请输入要查找的联系人电话号码:"<

cin>>callnum;

while(p&&p->data.phone!=callnum)

{q=p;

p=p->Rlink;

j++;

}

if(p)

{cout<<"您要查找的联系人信息为:"<

cout<<"********************************************************************** *********"<

cout<<"\n\t姓名: "<https://www.doczj.com/doc/2f12373423.html,<

cout<<"\n\t电话号码:"<data.phone<

cout<<"\n\t街道名: "<data.street<

cout<<"\n\t城市名: "<data.city<

cout<<"\n\t邮编: "<data.eip<

cout<<"\n\t国家: "<data.state<

cout<<"********************************************************************** *********"<

cout<

}

else {

cout<<"\n\t\t^^^^^搜索的联系人不存在!!!!!^^^^^^"<

cout<

cout<<"\n\t您是否继续下一个查找???(Y/N)"<

char z;

cin>>z;

if((z=='y')||(z=='Y'))

search(head);

else ;

;}

}//else

}//wai

//***************************************************************************

void search(dlink *h)

{dlink *head;

head=h;

int choic;

cout<<"\n\t\t1-按电话号码查找2-按姓名查找";

cout<<"\n\t\t请选择:";

cin>>choic;

switch (choic)

{

case 1:

searchbyphone(head);

break;

case 2:

searchbyname(head);

break;

}

}

//*************************************************************************** ********

dlink *deletebyname(dlink *h) //按姓名删除

{dlink *head,*p,*q;

if(num==0)

{ cout<<"\n\t\t当前通讯录没有任何联系人信

息!!!"<

cout<<"\n\t\t\t\t删除操作无法执行!!!!!!!!!"<

}

else

{

string nam;

int flag=1,k=1,i,j=1;

head=h;

p=h->Rlink;

system("pause");

system("cls");

cout<<"请输入要删除的联系人姓名:"<

cin>>nam;

for(i=k;i<=num;i++,p=p->Rlink)

{

while(p&&p->https://www.doczj.com/doc/2f12373423.html,!=nam)

{q=p;

p=p->Rlink;

j++;

} //while

{cout<<"您要删除的联系人信息为:"<

cout<<"weiyu"<

cout<<"********************************************************************** *********"<

cout<<"\n\t姓名: "<https://www.doczj.com/doc/2f12373423.html,<

cout<<"\n\t电话号码:"<data.phone<

cout<<"\n\t街道名: "<data.street<

cout<<"\n\t城市名: "<data.city<

cout<<"\n\t邮编: "<data.eip<

cout<<"\n\t国家: "<data.state<

cout<<"********************************************************************** *********"<

char z;

cout<<"您确定要删除该联系人信息吗?(Y/N)"<

cin>>z;

if((z=='y')||(z=='Y'))

{

if(num==1)

{p->Llink->Rlink=NULL;

free(p);

num--;

}

else

if(p->Llink==head)

{ p->Rlink->Llink=head;

p->Llink->Rlink=p->Rlink;

free(p);

num--;

}

else if(p->Rlink==NULL)

{p->Llink->Rlink=NULL;

free(p);

num--;

}

else

{ p->Rlink->Llink=p->Llink;

q->Rlink=p->Rlink;

free(p);

num--;

}

数值计算方法课程报告

课程报告 课程名称______《数值计算》 __ 学生学院_____机电工程学院___ 专业班级_____微电子(1)班____ 学号________ 学生姓名_______________ 指导教师_____ ________ XXXX年XX月XX日

姓 名: 线 学 号 : 订 装专 业:学院: 广东工业大学考试试卷( A ) 课程名称: 数值计算试卷满分100 分考试时间: 2015 年 12 月 26 日(第 17 周星期六) 题号一二三四五六七八九十总分 评卷得分 评卷签名 复核得分 复核签名 “数值计算”考试要求 “数值计算”考试以开卷形式进行。在“数值计算”课程考试日(2015 年12 月 19 日,第 12 周星期五)考试时间,在考试教室领取试题,在 2015 年12 月 26 日(第 17 周星期六)进行答辩。不参加答辩者将取消考试成绩。 “数值计算”考试结果要求独立在计算机上完成,可使用Matlab或 C 程序编程实现。考试结果将以报告书形式提交,内容包括对问题描述、计算程序以及算例、计算结果、分析组成。计算程序要求具有通用性,能够处理异常情况,可以输入问题、算法参数、算例及初始值,在计算过程中显示当前计算状态、计算完成后显示计算结果。上述内容将作为试卷成绩的主要评定依据。特别提醒,不得使用教师在讲课和实验时的范例作为考试结果。报告书具体格式参考毕业设计手册。 以考生学号命名的文件夹存放程序及报告书电子版,以班级为单位刻录在一张光盘中,与打印版报告书一起由班长和学习委员一起上交任课教师。 数值计算课程总成绩将由试卷成绩(70%)、平时成绩(30%)组成。

广联达图形算量和钢筋算量使用技巧

广联达图形算量和钢筋算量使用技巧 标签:广联达广联达视频广联达视频教程加密狗钢筋平法造价造价员预算杂谈 实习是大学教育最后一个极为重要的实践性教学环节。通过实习,使我们在社会实践中接触与本专业相关的实际工作,增强感性认识,培养和锻炼我们综合运用所学的基础理论、基本技能和专业知识,去独立分析和解决实际问题的能力,把理论和实践结合起来,提高实践动手能力,为我们毕业后走上工作岗位打下一定的基础;同时可以检验教学效果,为进一步提高教育教学质量,培养合格人才积累经验,并为自己能顺利与社会环境接轨做准备。 一、独立基础带短柱,上柱插筋插入短柱内。要在软件中计算短柱和上柱的钢筋,很多人拿到这种图时都觉的很难将短柱与上柱的钢筋在软件中计算正确,原因很简单,就是不管是短柱还是短柱上面地框柱都只能用柱来算钢筋,而在软件中只要是一根柱子上下的关连层还有柱子,软件就会按照平法中的设定来计算钢筋,考虑插筋和锚固,与我们的实际图纸所要计算的钢筋量相差甚远,而这就使很多人认为软件计算出来的钢筋量是错的,没有办法将整根柱子从底到顶计算正确,只能是使用软件计算大部分工程量后再来进行调整,或者直接用其它方法如手工来计算这种柱钢筋,而实际上用软件处理这种情况也是很简单的,现将处理思路简要说明一下。 首先在建立楼层时将基础层设为独立基础的高度(如果独立基础的高度不一,按最高的进行设置),而从基础顶到短柱顶设为负一层,上面的楼层按图纸进行设定,然后在画图的时候需要注意的是建两套相同的轴网,在第一套轴网中画与主体相关的柱也就是短柱顶部的框柱,而它的基础则画为井桩基础,在另外一套轴网中画独基和短柱,这样就可以完全将短柱与其上的框柱钢筋分别计算正确。原理是短柱部分顶部再无柱构件则会自动认为是顶层进行锚固,同时还可以在软件中设置柱顶锚固节点方式,如图:当然需要在短柱属性中来设置;而框柱下的井桩可以按某个长度设定值来计算插筋长度和弯折长度,如图: 从而解决短柱上部框柱插筋问题。 二、首层地面结构标高为负值,且首层地面标高与正负零之间为浮土回填部分,在这种情况下钢筋与图形之间的互导调整。当然在这种设计下,对于钢筋来说我们只需要在建立工程时将设为实际首层地面标高就可以,而楼层高度按图纸进行设定,特别是首层层高为首层结构标设至二层结构标高的高度,那么在钢筋软件中就不难处理这种情况,而当我们完成了钢筋后,由于图形软件没有首层地面结构标高的设定,因此会与钢筋对应不起来,从钢筋导入图形软件中,其首层结构标高就会成为正负零,这就需要我们进行调整,否则基础深度就会有错,而整个工程在地面以上的高度也会有错,调整方法为在图形中将正负零与首层结构标高之间的高度建为一个负一层,而该层的构件只有首层的竖向构件,也就是柱墙,可以从首层复制到负一层;而首层层高需改为正负零到二层的高度,经过这样修改后图形软件中的各层标高都会与图纸相一致。 三、软件之间的互导妙用。最近遇到一个工程基础为筏板基础,而该工程筏板与众不同的是不仅有不同厚度的筏板,而且对于筏板的周边又有不同的相应节点,使的筏板变的高低错落,而为了画图方便,一般这种筏板我们都会先用一种厚度的筏板将整块筏板画完,然后划线分割后再来转换构件,但是由于在钢筋软件中只有划线分割构件这个功能,而不能将分割后的筏板再合并起来,这就使的在计算钢筋时不很方便,有可能我们需要将一些分割成块的筏板再合并起来,这时其实我们可以通过钢筋与图形的互导功能,导入图形中调整合并好后再来导入钢筋进行配筋。 四、斜墙构件在在图形中的处理。最近常有人问起斜墙在软件中如何处理,虽未碰到过,但经过仔细分析后认为斜墙可以通过采用斜板的方法来处理,如图所示,可以将一堵斜墙定义为斜板,由于板的体积在计算时是计算到梁边,而这样定义后实际与我们的斜墙一样,墙体积也是计算到梁边的,因此斜墙的工程量是正确的,而现在还要计算的就是斜墙的外粉及斜

数值分析实验报告1

实验一误差分析 实验1.1(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 其中ε(1.1)和(1.221,,,a a 的输出b ”和“poly ε。 (1(2 (3)写成展 关于α solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab 的帮助。 实验过程: 程序: a=poly(1:20); rr=roots(a); forn=2:21 n form=1:9 ess=10^(-6-m);

ve=zeros(1,21); ve(n)=ess; r=roots(a+ve); -6-m s=max(abs(r-rr)) end end 利用符号函数:(思考题一)a=poly(1:20); y=poly2sym(a); rr=solve(y) n

很容易的得出对一个多次的代数多项式的其中某一项进行很小的扰动,对其多项式的根会有一定的扰动的,所以对于这类病态问题可以借助于MATLAB来进行问题的分析。 学号:06450210 姓名:万轩 实验二插值法

太原理工大学数值计算方法实验报告

本科实验报告 课程名称:计算机数值方法 实验项目:方程求根、线性方程组的直接解 法、线性方程组的迭代解法、代数插值和最 小二乘拟合多项式 实验地点:行勉楼 专业班级: ******** 学号: ********* 学生姓名: ******** 指导教师:李誌,崔冬华 2016年 4 月 8 日

y = x*x*x + 4 * x*x - 10; return y; } float Calculate(float a,float b) { c = (a + b) / 2; n++; if (GetY(c) == 0 || ((b - a) / 2) < 0.000005) { cout << c <<"为方程的解"<< endl; return 0; } if (GetY(a)*GetY(c) < 0) { return Calculate(a,c); } if (GetY(c)*GetY(b)< 0) { return Calculate(c,b); } } }; int main() { cout << "方程组为:f(x)=x^3+4x^2-10=0" << endl; float a, b; Text text; text.Getab(); a = text.a; b = text.b; text.Calculate(a, b); return 0; } 2.割线法: // 方程求根(割线法).cpp : 定义控制台应用程序的入口点。// #include "stdafx.h" #include"iostream"

心得体会 使用不同的方法,可以不同程度的求得方程的解,通过二分法计算的程序实现更加了解二分法的特点,二分法过程简单,程序容易实现,但该方法收敛比较慢一般用于求根的初始近似值,不同的方法速度不同。面对一个复杂的问题,要学会简化处理步骤,分步骤一点一点的循序处理,只有这样,才能高效的解决一个复杂问题。

较全面的钢筋工基本知识

较全面的钢筋工基本知识 第一章钢筋工基本知识 §1-1 钢筋的分类 钢筋由于品种、规格、型号的不同和在构件中所起的作用不同,在施工中常常有不同的叫法。对一个钢筋工来说,只有熟悉钢筋的分类,才能比较清楚地了解钢筋的性能和在构件中所起的作用,在钢筋加工和安装过程中不致发生差错。 钢筋的分类方法很多,主要有以下几种: 一、按钢筋在构件中的作用分 1、受力筋:是指构件中根据计算确定的主要钢筋,包括有:受拉筋、弯起筋、受压筋等。 2、构造钢筋:是指构件中根据构造要求设置的钢筋,包括有:分布筋、箍筋、架立筋、横筋、腰筋等。 二、按钢筋的外形分 1、光圆钢筋:钢筋表面光滑无纹路,主要用于分布筋、箍筋、墙板钢筋等。直径6-10mm 时一般做成盘圆,直径12mm以上为直条。 2、变形钢筋:钢筋表面刻有不同的纹路,增强了钢筋与混凝土的粘结力,主要用于柱、梁等构件中的受力筋。变形钢筋的出厂长度有9m、12m两种规格。 3、钢丝:分冷拔低碳钢丝和碳素高强钢丝两种,直径均在5mm 以下。 4、钢绞线:有3股和7股两种,常用于预应力钢筋混凝土构 件中 三、按钢筋的强度分 在钢筋混凝土结构中常用的是热轧钢筋,热轧钢筋按强度可分为四级,HPB235(Ⅰ级钢),其屈服强度标准值为235MPa;HRB335(Ⅱ级钢),其屈服强度标准值为335MPa;HRB400(Ⅲ级钢),其屈服强度标准值为400MPa;RRB400(Ⅳ级钢),其屈服强度标准值为400MPa。现浇楼板的钢筋和梁柱的箍筋多采用HPB235级钢筋;梁柱的受力钢筋多采用HRB335、HRB400、 RRB400级钢筋。 §1-2钢筋混凝土结构原理 混凝土和天然石材一样,是一种脆性材料,钢筋是一种弹性材料,如果将钢筋放到混凝土中就可运用到工程结构上的重要部位。这种配有钢筋的混凝土叫做钢筋混凝土。 一、钢筋混凝土结构的工作原理 为什么要将钢筋和混凝土这两种材料结合在一起工作呢?其目的是为了充分利用材料的各自优点,提高结构承载能力。因为混凝土的抗压能力较强,而抗拉能力却很弱。钢筋的抗拉和抗压能力都很强。把这两种材料结合在一起共同工作,充分发挥了混凝土的抗压性能和钢筋的抗拉性能。我们把凡是由钢筋和混凝土组成的结构构件统称为钢筋混凝土结构。钢筋和混凝土这两种物理力学性能截然不同的材料为什么能够结合在一起共同工作呢?这

数值分析实验报告1

实验一 误差分析 实验(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 )1.1() ()20()2)(1()(20 1∏=-=---=k k x x x x x p 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 )2.1(0 )(19=+x x p ε 其中ε是一个非常小的数。这相当于是对()中19x 的系数作一个小的扰动。我们希望比较()和()根的差别,从而分析方程()的解对扰动的敏感性。 实验内容:为了实现方便,我们先介绍两个Matlab 函数:“roots ”和“poly ”。 roots(a)u = 其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。设a 的元素依次为121,,,+n a a a ,则输出u 的各分量是多项式方程 01121=+++++-n n n n a x a x a x a 的全部根;而函数 poly(v)b =

的输出b 是一个n+1维变量,它是以n 维变量v 的各分量为根的多项式的系数。可见“roots ”和“poly ”是两个互逆的运算函数。 ;000000001.0=ess );21,1(zeros ve = ;)2(ess ve = ))20:1((ve poly roots + 上述简单的Matlab 程序便得到()的全部根,程序中的“ess ”即是()中的ε。 实验要求: (1)选择充分小的ess ,反复进行上述实验,记录结果的变化并分析它们。 如果扰动项的系数ε很小,我们自然感觉()和()的解应当相差很小。计算中你有什么出乎意料的发现表明有些解关于如此的扰动敏感性如何 (2)将方程()中的扰动项改成18x ε或其它形式,实验中又有怎样的现象 出现 (3)(选作部分)请从理论上分析产生这一问题的根源。注意我们可以将 方程()写成展开的形式, ) 3.1(0 ),(1920=+-= x x x p αα 同时将方程的解x 看成是系数α的函数,考察方程的某个解关于α的扰动是否敏感,与研究它关于α的导数的大小有何关系为什么你发现了什么现象,哪些根关于α的变化更敏感 思考题一:(上述实验的改进) 在上述实验中我们会发现用roots 函数求解多项式方程的精度不高,为此你可以考虑用符号函数solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab 的帮助。

圆形基础钢筋计算间距和根数

9-3 钢筋配料与代换 9-3-1 钢筋配料 钢筋配料是根据构件配筋图,先绘出各种形状和规格的单根钢筋简图并加以编号,然后分别计算钢筋下料长度和根数,填写配料单,申请加工。 9-3-1-1 钢筋下料长度计算 钢筋因弯曲或弯钩会使其长度变化,在配料中不能直接根据图纸中尺寸下料;必须了解对混凝土保护层、钢筋弯曲、弯钩等规定,再根据图中尺寸计算其下料长度。各种钢筋下料长度计算如下: 直钢筋下料长度=构件长度-保护层厚度+弯钩增加长度 弯起钢筋下料长度=直段长度+斜段长度-弯曲调整值+弯钩增加长度 箍筋下料长度=箍筋周长+箍筋调整值 上述钢筋需要搭接的话,还应增加钢筋搭接长度。 1.弯曲调整值 钢筋弯曲后的特点:一是在弯曲处内皮收缩、外皮延伸、轴线长度不变;二是在弯曲处形成圆弧。钢筋的量度方法是沿直线量外包尺寸(图9-46);因此,弯起钢筋的量度尺寸大于下料尺寸,两者之间的差值称为弯曲调整值。弯曲调整值,根据理论推算并结合实践经验,列于表9-23。 图9-46 钢筋弯曲时的量度方法 钢筋弯曲调整值表9-23 注:d为钢筋直径。

2.弯钩增加长度 钢筋的弯钩形式有三种:半圆弯钩、直弯钩及斜弯钩(图9-47)。半圆弯钩是最常用的一种弯钩。直弯钩只用在柱钢筋的下部、箍筋和附加钢筋中。斜弯钩只用在直径较小的钢筋中。 图9-47 钢筋弯钩计算简图 (a)半圆弯钩;(b)直弯钩;(c)斜弯钩 光圆钢筋的弯钩增加长度,按图9-47所示的简图(弯心直径为2.5d、平直部分为3d)计算:对半圆弯钩为6.25d,对直弯钩为3.5d,对斜弯钩为4.9d。 在生产实践中,由于实际弯心直径与理论弯心直径有时不一致,钢筋粗细和机具条件不同等而影响平直部分的长短(手工弯钩时平直部分可适当加长,机械弯钩时可适当缩短),因此在实际配料计算时,对弯钩增加长度常根据具体条件,采用经验数据,见表9-24。 半圆弯钩增加长度参考表(用机械弯)表9-24 3.弯起钢筋斜长 弯起钢筋斜长计算简图,见图9-48。弯起钢筋斜长系数见表9-25。 图9-48 弯起钢筋斜长计算简图 (a)弯起角度30°;(b)弯起角度45°;(c)弯起角度60° 弯起钢筋斜长系数表9-25

数值计算方法学习心得

数值计算方法学习心得 ------一个代码的方法是很重要,一个算法的思想也很重要,但 在我看来,更重要的是解决问题的方法,就像爱因斯坦说的内容比 思维本身更重要。 我上去讲的那次其实做了挺充分的准备,程序的运行,pdf文档,算法公式的推导,程序伪代码,不过有一点缺陷的地方,很多细节 没有讲的很清楚吧,下来之后也是更清楚了这个问题。 然后一学期下来,总的来说,看其他同学的分享,我也学习到 许多东西,并非只是代码的方法,更多的是章胜同学的口才,攀忠 的排版,小冯的深入挖掘…都是对我而言比算法更加值得珍惜的东西,又骄傲地回想一下,曾同为一个项目组的我们也更加感到做项 目对自己发展的巨大帮助了。 同时从这些次的实验中我发现以前学到的很多知识都非常有用。 比如说,以前做项目的时候,项目导师一直要求对于要上传的 文件尽量用pdf格式,不管是ppt还是文档,这便算是对产权的一种 保护。 再比如代码分享,最基础的要求便是——其他人拿到你的代码 也能运行出来,其次是代码分享的规范性,像我们可以用轻量级Ubuntu Pastebin,以前做过一小段时间acm,集训队里对于代码的分享都是推荐用这个,像数值计算实验我觉得用这个也差不多了,其 次项目级代码还是推荐github(被微软收购了),它的又是可能更 多在于个人代码平台的搭建,当然像readme文档及必要的一些数据 集放在上面都更方便一些。

然后在实验中,发现debug能力的重要性,对于代码错误点的 正确分析,以及一些与他人交流的“正规”途径,讨论算法可能出 错的地方以及要注意的细节等,比如acm比赛都是以三人为一小组,讨论过后,讲了一遍会发现自己对算法理解更加深刻。 然后学习算法,做项目做算法一般的正常流程是看论文,尽量 看英文文献,一般就是第一手资料,然后根据论文对算法的描述, 就是如同课上的流程一样,对算法进一步理解,然后进行复现,最 后就是尝试自己改进。比如知网查询牛顿法相关论文,会找到大量 可以参考的文献。 最后的最后,想说一下,计算机专业的同学看这个数值分析, 不一定行云流水,但肯定不至于看不懂写不出来,所以我们还是要 提高自己的核心竞争力,就是利用我们的优势,对于这种算法方面 的编程,至少比他们用的更加熟练,至少面对一个问题,我们能思 考出对应问题的最佳算法是哪一个更合适解决问题。 附记: 对课程的一些小建议: 1. debug的能力不容忽视,比如给一个关于代码实现已知错误的代码给同学们,让同学们自己思考一下,然后分享各自的debug方法,一步一步的去修改代码,最后集全班的力量完成代码的debug,这往往更能提升同学们的代码能力。 2. 课堂上的效率其实是有点低的,可能会给学生带来一些负反馈,降低学习热情。 3. 总的来说还是从这门课程中学到许多东西。 数值分析学习心得体会

圆形网片钢筋计算技巧

圆形网片钢筋计算技巧 圆形网片钢筋的计算方法,是根据勾股定理,分别计算出每根钢筋长度后,减去保护层,再加上弯钩长度。 网片筋的长度与其排列方法有关。在同一直径、同一分布间距的圆形构件中,排列方法不同,网片筋的总长度也不相同。为了确保排列方法达到最优,必须要满足以下先决条件: 在排列时要保证最边缘的钢筋离圆切点的边距a ′必须大于零,同时还要小于钢筋间距a ;在间距不变的条件下,要保证排列的根数为最多。 (一)排列方法的确定 排列方法分对称排列与非对称排列。 对称排列:就是以圆心为中心点,两边第一根钢筋在距圆心二分之一 间距处排列,其他钢筋均按等间距排列;见图3-50(a )。 非对称排列:就是第一根钢筋排列在圆心处,其他钢筋排列时依次在圆心两边按等间距排列,见图 3-50(b )。 对称排列与非对称排列的确定:用圆直径 D 除以网片间距a ,如有小数应 四舍五入。除得的商是偶数时为对称排列,是奇数时则为非对称排列。 (二)网片钢筋长度计算 1、对称排列计算 设:圆直径为D ,单向排列根数为n ,网片间距为a ,钢筋直径为d ,所需要解三角形方程的总项数为k ,而且 k = ≥1,则: 双向网片筋总长度: Σ l = 4a · [ n 2-12 +……+ n 2 -(2k -1)2 ]+ l m (3-78) a 对称排列 b 非称排列 图3-50

l m=2n(12.5d-0.05) 当钢筋直径为时, l m=15 nd 【例3-17】有一圆形井桩承台,直径D为 1.2m,网片筋设计间距为Φ10@200,求该网片筋总长度。 【解】n==6根为对称排列 k==3 解3项方程 Φ10网片筋总长度: Σ l=4×0.2(62-12 + 62-32+ 62-52)+15×6×0.01=12.44m 钢筋边距a′验证:a′=-2.5a=-2.5×0.2=0.1m 因此,(0<a′<a)满足先决条件。 2、非对称排列计算 设:圆直径为D,单向排列根数为n,网片间距为a,钢筋直径为d,所需解三角形方程的总项数为k,而且k=≥1 双向网片筋总长度: Σ l=4a(n 2-2 2 +…… +n2-4k 2 )+ 2D+l m (3-79) 【例3-18】另有一圆形井桩承台,直径D为1.3m,网片筋设计间距为Φ8@150,求该网片筋总长度。 【解】n==8.67≈9根为非对称排列 k==4 解4项方程 Φ10网片筋总长度: Σ l=4×0.15(8.672-22 + 8.672-42 + 8.672-62 + 8.672-82 ) +2×1.3+15×8.67×0.008 =19.08m 钢筋边距a′验证:a′=-4 a=0.05m 因此,(0<a′<a)满足先决条件。 (三)注意事项 1、钢筋排列根数n=,若圆直径D不能被钢筋间距a整除,商有小数时,在式中应保留两位小数计算。但在判别钢筋排列方式时,要将小数部分四舍五入成整数,当为偶数时为对称排列,当为奇数时为非对称排列。式中的n虽然有小数,但钢筋实际排列根数应为整

数值计算实验报告

(此文档为word格式,下载后您可任意编辑修改!) 2012级6班###(学号)计算机数值方法 实验报告成绩册 姓名:宋元台 学号: 成绩:

数值计算方法与算法实验报告 学期: 2014 至 2015 第 1 学期 2014年 12月1日课程名称: 数值计算方法与算法专业:信息与计算科学班级 12级5班 实验编号: 1实验项目Neton插值多项式指导教师:孙峪怀 姓名:宋元台学号:实验成绩: 一、实验目的及要求 实验目的: 掌握Newton插值多项式的算法,理解Newton插值多项式构造过程中基函数的继承特点,掌握差商表的计算特点。 实验要求: 1. 给出Newton插值算法 2. 用C语言实现算法 二、实验内容 三、实验步骤(该部分不够填写.请填写附页)

1.算法分析: 下面用伪码描述Newton插值多项式的算法: Step1 输入插值节点数n,插值点序列{x(i),f(i)},i=1,2,……,n,要计算的插值点x. Step2 形成差商表 for i=0 to n for j=n to i f(j)=((f(j)-f(j-1)(x(j)-x(j-1-i)); Step3 置初始值temp=1,newton=f(0) Step4 for i=1 to n temp=(x-x(i-1))*temp*由temp(k)=(x-x(k-1))*temp(k-1)形成 (x-x(0).....(x-x(i-1)* Newton=newton+temp*f(i); Step5 输出f(x)的近似数值newton(x)=newton. 2.用C语言实现算法的程序代码 #includeMAX_N) { printf("the input n is larger than MAX_N,please redefine the MAX_N.\n"); return 1; } if(n<=0) { printf("please input a number between 1 and %d.\n",MAX_N); return 1; } printf("now input the (x_i,y_i)i=0,...%d\n",n); for(i=0;i<=n;i++) { printf("please input x(%d) y(%d)\n",i,i);

《数值计算方法》上机实验报告

《数值计算方法》上机实验报告华北电力大学 实验名称数值il?算方法》上机实验课程名称数值计算方法专业班级:电力实08学生姓名:李超然学号:200801001008 成绩: 指导教师:郝育黔老师实验日期:2010年04月华北电力大学实验报告数值计算方法上机实验报吿一. 各算法的算法原理及计算机程序框图1、牛顿法求解非线性方程 *对于非线性方程,若已知根的一个近似值,将在处展开成一阶 xxfx ()0, fx ()xkk 泰勒公式 "f 0 / 2 八八,fxfxfxxxxx 0 0 0 0 0 kkkk2! 忽略高次项,有 ,fxfxfxxx 0 ()()(),,, kkk 右端是直线方程,用这个直线方程来近似非线性方程。将非线性方程的 **根代入,即fx ()0, X ,* fxfxxx 0 0 0 0, ,, kkk fx 0 fx 0 0,

解出 fX 0 *k XX,, k' fx 0 k 水将右端取为,则是比更接近于的近似值,即xxxxk, Ik, Ik fx ()k 八XX, Ikk* fx()k 这就是牛顿迭代公式。 ,2,计算机程序框图:,见, ,3,输入变量、输出变量说明: X输入变量:迭代初值,迭代精度,迭代最大次数,\0 输出变量:当前迭代次数,当前迭代值xkl ,4,具体算例及求解结果: 2/16 华北电力大学实验报吿 开始 读入 l>k /fx()0?,0 fx 0 Oxx,,01* fx ()0 XX,,,?10 kk, ,1,kN, ?xx, 10 输出迭代输出X输出奇异标志1失败标志

,3,输入变量、输出变量说明: 结束 例:导出计算的牛顿迭代公式,并il ?算。(课本P39例2-16) 115cc (0), 求解结果: 10. 750000 10.723837 10. 723805 10. 723805 2、列主元素消去法求解线性方程组,1,算法原理: 高斯消去法是利用现行方程组初等变换中的一种变换,即用一个不为零的数乘 -个 方程后加只另一个方程,使方程组变成同解的上三角方程组,然后再自下而上 对上三角 3/16 华北电力大学实验报告方程组求解。 列选主元是当高斯消元到第步时,从列的以下(包括)的各元素中选出绝 aakkkkkk 对值最大的,然后通过行交换将其交换到的位置上。交换系数矩阵中的 两行(包括常ekk 数项),只相当于两个方程的位置交换了,因此,列选主元不影响求解的结 ,2,计算机程序框图:,见下页, 输入变量:系数矩阵元素,常向量元素baiji 输出变量:解向量元素bbb,,12n

数值分析课程报告

插值法和多项式拟合的研究 摘要 在科研和生产实践中,常常需要通过一组测量数据来寻找变量x与y的函数关系近似表达式。解决这类问题的方法有两种:一种是插值法,另一种是拟合法。插值法的原理是用一个简单函数逼近被计算函数,然后用该简单函数的函数值近似替代被计算函数的函数值。拟合法能够是从给定的一组实验数据出发,寻找函数的一个近似表达式,该近似表达式能反映数据的基本趋势而又不一定过全部的点,即曲线拟合。本文主要介绍拉格朗日插值法、埃尔米特插值法、三次样条插值法以及基于最小二乘法的多项式拟合。 关键词:拉格朗日插值,埃尔米特插值,样条插值,多项式拟合

1方法的意义 在许多实际问题及科学研究中,因素之间往往存在着函数关系,然而,这种关系经常很难有明显的解析表达,通常只是由观察与测试得到一些离散数值。有时,即使给出了解析表达式,却由于表达式过于复杂,不仅使用不便,而且不易于进行计算与理论分析。解决这类问题的方法有两种:一种是插值法,另一种是拟合法。插值法的原理是用一个简单函数逼近被计算函数,然后用该简单函数的函数值近似替代被计算函数的函数值。它要求给出函数的一个函数表,然后选定一种简单的函数形式,比如多项式、分段线性函数及三角多项式等,通过已知的函数表来确定一个简单的函数()x ?作为()f x 的近似,概括地说,就是用简单函数为离散数组建立连续模型。插值法在实际应用中非常广泛,但是它也有明显的缺陷,一是测量数据常常带有测试误差,而插值多项式又通过所有给出的点,这样就是插值多项式保留了这些误差;二是如果实际得到的数据过多,则必然得到次数较高的插值多项式,这样近似的效果并不理想。拟合法能够很好的解决这些问题,它从给定的一组实验数据出发,寻找函数的一个近似表达式y=()x ?,该近似表达式能反映数据的基本趋势而又不一定过全部的点,即曲线拟合的问题,函数的近似表达式y=()x ?称为拟合曲线。常用最小而二乘法来确定拟合曲线。 2插值法的介绍 2.1 插值法定义 设 f (x )为[a ,b ]上的函数,在互异点n x x x ,...,,10处的函数值分别为 )(),...,(),(10n x f x f x f ,构造一个简单函数 ?(x ) 作为函数 f (x ) 的近似表达式y = f (x ) ≈ ?(x ),使 )()(i i x f x =? , i =0, 1, 2, …,n (1.0) 则称?(x ) 为关于节点n x x x ,...,,10的插值函数;称n x x x ,...,,10 为插值节点;称 ))((i i x f x , i =1,2,… , n 为插值点;f (x ) 称为被插值函数。式(1.0)称为插值条 件。这类问题称为插值问题。插值的任务就是由已知的观测点,为物理量(未知量)建立一个简单的、连续的解析模型,以便能根据该模型推测该物理量在非观测点

配筋计算规则

配筋计算规则 第一章钢筋工基本知识 §1-1 钢筋的分类 钢筋由于品种、规格、型号的不同和在构件中所起的作用不同,在施工中常常有不同的叫法。对一个钢筋工来说,只有熟悉钢筋的分类,才能比较清楚地了解钢筋的性能和在构件中所起的作用,在钢筋加工和安装过程中不致发生差错。钢筋的分类方法很多,主要有以下几种: 一、按钢筋在构件中的作用分 1、受力筋:是指构件中根据计算确定的主要钢筋,包括有:受拉筋、弯起筋、受压筋等。 2、构造钢筋:是指构件中根据构造要求设置的钢筋,包括有:分布筋、箍筋、架立筋、横筋、腰筋等。 二、按钢筋的外形分 1、光圆钢筋:钢筋表面光滑无纹路,主要用于分布筋、箍筋、墙板钢筋等。直径6-10mm 时一般做成盘圆,直径12mm以上为直条。 2、变形钢筋:钢筋表面刻有不同的纹路,增强了钢筋与混凝土的粘结力,主要用于柱、梁等构件中的受力筋。变形钢筋的出厂长度有9m、12m两种规格。 3、钢丝:分冷拔低碳钢丝和碳素高强钢丝两种,直径均在5mm以下。 4、钢绞线:有3股和7股两种,常用于预应力钢筋混凝土构件中 三、按钢筋的强度分 在钢筋混凝土结构中常用的是热轧钢筋,热轧钢筋按强度可分为四级,HPB235(Ⅰ级钢),其屈服强度标准值为235MPa;HRB335(Ⅱ级钢),其屈服强度标准值为335MPa;HRB400(Ⅲ级钢),其屈服强度标准值为400MPa;RRB400(Ⅳ级钢),其屈服强度标准值为400MPa。现浇楼板的钢筋和梁柱的箍筋多采用HPB235级钢筋;梁柱的受力钢筋多采用HRB335、HRB400、RRB400级钢筋。 §1-2钢筋混凝土结构原理 混凝土和天然石材一样,是一种脆性材料,钢筋是一种弹性材料,如果将钢筋放到混凝土中就可运用到工程结构上的重要部位。这种配有钢筋的混凝土叫做钢筋混凝土。 一、钢筋混凝土结构的工作原理 为什么要将钢筋和混凝土这两种材料结合在一起工作呢?其目的是为了充分利用材料的各自优点,提高结构承载能力。因为混凝土的抗压能力较强,而抗拉能力却很弱。钢筋的抗拉和抗压能力都很强。把这两种材料结合在一起共同工作,充分发挥了混凝土的抗压性能和钢筋的抗拉性能。我们把凡是由钢筋和混凝土组成的结构构件统称为钢筋混凝土结构。 钢筋和混凝土这两种物理力学性能截然不同的材料为什么能够结合在一起共同工作呢?这主要是由于(1)硬化后的混凝土与钢筋表面有很强的粘结力;(2)钢筋和混凝土之

(完整版)哈工大-数值分析上机实验报告

实验报告一 题目:非线性方程求解 摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。 前言:(目的和意义) 掌握二分法与Newton法的基本原理和应用。 数学原理: 对于一个非线性方程的数值解法很多。在此介绍两种最常见的方法:二分法和Newton法。 对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b)<0,且f(x)在[a,b]内仅有一个实根x*,取区间中点c,若,则c恰为其根,否则根据f(a)f(c)<0是否成立判断根在区间[a,c]和[c,b]中的哪一个,从而得出新区间,仍称为[a,b]。重复运行计算,直至满足精度为止。这就是二分法的计算思想。

Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式 产生逼近解x*的迭代数列{x k},这就是Newton法的思想。当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。另外,若将该迭代公式改进为 其中r为要求的方程的根的重数,这就是改进的Newton法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。 程序设计: 本实验采用Matlab的M文件编写。其中待求解的方程写成function的方式,如下 function y=f(x); y=-x*x-sin(x); 写成如上形式即可,下面给出主程序。 二分法源程序: clear %%%给定求解区间 b=1.5; a=0;

%%%误差 R=1; k=0;%迭代次数初值 while (R>5e-6) ; c=(a+b)/2; if f12(a)*f12(c)>0; a=c; else b=c; end R=b-a;%求出误差 k=k+1; end x=c%给出解 Newton法及改进的Newton法源程序:clear %%%% 输入函数 f=input('请输入需要求解函数>>','s') %%%求解f(x)的导数 df=diff(f);

数值计算方法实验报告(例)讲解

实验报告 一、实验目的 二、实验内容 三、实验环境 四.实验方法 五、实验过程 1实验步骤 2 关键代码及其解释 3 调试过程 六、实验总结 1.遇到的问题及解决过程 2.产生的错误及原因分析 3.体会和收获。 七、程序源代码: 八、教师评语

实验报告 一.试验目的:练习用数值方法求解给定的非线性方程。 二.实验内容:求解人口方程: )1(5 .43e 1004.156-+ =λλλ e 要求误差小于410-。 三.实验环境:PC 计算机,FORTRAN 、C 、C ++、VB 任选一种。 四.实验方法:牛顿法 牛顿法简述:牛顿法是一种特殊的迭代法,其迭代公式为: ,2,1,0,) () (1='- =+k x f x f x x k k k k , 当数列{}k x 收敛时,其极限值x 即为方程的解。 定理:给定方程],[,0)(b a x x f ∈= 1)设0)()(''x f x f ; 则牛顿法产生的序列{}k x 收敛于0)(=x f 在],[b a 内的唯一解x 。 五.实验过程: 1.编程: 用C 语言编出牛顿法的源程序。 2. 开机, 打开C 语言编译程序,键入所编程序源代码. 3. 调试程序, 修改错误至能正确运行. 六.实验总结: (1)牛顿法收敛速度快,但初值不容易确定,往往由于初值取得

不当而使迭代不收敛或收敛慢,但若能保证)()(1+>K K x f x f (称为下山条件),则有可能收敛。把新的近似值看作初值的话会比原来的取得好,有可能落入局部收敛的邻域。 (2)牛顿法要求)(x f '在x 附近不为零。亦即x 只能是单根, 不能求重根。可用重根加速收敛法求重根。 (3)牛顿法的每一步迭代中,都要计算一次导数值,若计算)(x f '比计算函数的近似值要麻烦的多。为了避免求导数,可用差商近似代替微商 1 1) ()()(----='K K K K K x x x f x f x f 此时牛顿迭代法改为 )() ()() (111--+--- =K K K K K K K x x x f x f x f x x . (4) 由于人口方程来源于实际问题, λ代表人口增长率, 其真实 值不会太大, 初值不应取得过大.否则会得到该方程的另外一个解 七、程序源代码: #include #define ep 1e-4 float f (float x) { float y; y=100*exp(x)+43.5*(exp(x)-1)/x-156.4; return(y); } float df (float x) { float y; y=100*exp(x)+43.5*( x*exp(x)-exp(x)+1)/(x*x); return(y); } float root(float x) { float y; if (fabs)f

钢筋工程量计算[最终版]

钢筋工程量计算土建类钢筋计算范围: 一、柱钢筋 二、剪力墙钢筋 区分墙柱、墙梁和墙身钢筋 三、梁钢筋 四、板钢筋 五、基础钢筋 桩、承台、独立基础、基础类梁、筏板等钢筋 六、楼梯钢筋 梯板钢筋、梯梁钢筋、梯柱钢筋、休息平台板钢筋七、构造钢筋(11G 3 2 9系列) 包含砌体墙内构造柱钢筋、砌体墙水平系梁、砌体加筋、板内马凳筋 八、其他零星钢筋 板放射钢筋、预埋钢筋(电梯井内、楼梯扶手、涉及水电安装预埋、沉降观测点、阳台栏杆扶手) 钢筋基本知识点 一、钢筋的种类(新国标) 1、HPB300热轧光圆钢筋,屈服强度300MPa,广联达软件代号A

2、HRB335热轧带肋钢筋,屈服强度335MPa,广联达软件代号B,该钢筋2012年底强制淘汰,属于过渡钢筋。 3、H RB400热轧带肋钢筋,屈服强度400MPa,广联达软件代号C 4、H RBF400细晶热轧带肋钢筋,屈服强度400MPa, 广联达软件代号CF 5、RRB400余热带肋钢筋,屈服强度400MPa,广联达软件代号D 6、HRB500热轧带肋钢筋,屈服强度500MPa,广联达软件代号E 7、HRBF500细晶热轧带肋钢筋,屈服强度500MPa, 广联达软件代号EF 二、影响钢筋计算长度的六大因素 为方便大家记忆,我们形象的称为“三等级三尺 __ ” 寸 r 1、构件的抗震等级 2、构件的砼等级 3、钢筋自身的强度等级 4、保护层厚度 5、钢筋的连接长度(机械连接和焊接为0,搭接按规

定) 6、钢筋自身的直径大小(直径的大小影响搭接锚 固长度) 三、预算长度和下料长度的区别 1、国家全统定额规定:钢筋长度按钢筋的中心线计算 2、设计师给出的尺寸全部是按照外皮长度,我们预算也是按照这个尺寸计算的,所以外皮长度被称为预算长度。 3、施工下料长度是按钢筋的中心线来下料的,所以下料长度是符合国家定额计算钢筋长度的要求的,这样二者之间就有一个弯曲调整值。 下料长度(中轴长度)=预算长度(外皮长度)-弯曲调整值 四、钢筋的连接规定 1、宜避开柱端梁端加密区范围,若无法避开,只能采用机械连接或焊接,且接头面积百分比小于 50% 2、受拉钢筋〉25mm受压钢筋〉28mm不可绑扎。 3、框架柱:①一二三级抗震等级的底层,机械连接②三级抗震其他部位和四级抗震,可绑扎可焊接 可机械连接

数值分析实验报告1

实验一 误差分析 实验1.1(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 )1.1() ()20()2)(1()(20 1∏=-=---=k k x x x x x p 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 )2.1(0 )(19=+x x p ε 其中ε是一个非常小的数。这相当于是对(1.1)中19x 的系数作一个小的扰动。我们希望比较(1.1)和(1.2)根的差别,从而分析方程(1.1)的解对扰动的敏感性。 实验内容:为了实现方便,我们先介绍两个Matlab 函数:“roots ”和“poly ”。 roots(a)u = 其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。设a 的元素依次为121,,,+n a a a ,则输出u 的各分量是多项式方程 01121=+++++-n n n n a x a x a x a 的全部根;而函数 poly(v)b = 的输出b 是一个n+1维变量,它是以n 维变量v 的各分量为根的多项式的系数。可见“roots ”和“poly ”是两个互逆的运算函数。 ;000000001.0=ess );21,1(zeros ve = ;)2(ess ve =

相关主题
文本预览
相关文档 最新文档