搜档网
当前位置:搜档网 › 计软第三次上机实验报告

计软第三次上机实验报告

计软第三次上机实验报告
计软第三次上机实验报告

实验报告

一、程序及注释

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

/* shiyan31.c */

/* 交换二叉树中所有节点的左右子树的算法 */

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

#define Null 0

#define MaxSize 64

typedef struct trnode /* 新建结构体,转名为BITREE*/

{

int data;

struct trnode *lchild,*rchild;

}BITREE;

typedef BITREE* DataType;

typedef struct stacktag //建立链表存储二叉树

{

BITREE* data[MaxSize];

int top;

}STACK;

STACK *s;

void exchange2(BITREE *tr);

BITREE *creat();

void InOrder(BITREE *tr);

void PostOrder(BITREE *tr);

BITREE *creat() /* 创建以完全二叉树形式输入排序二叉树 */ {

BITREE *tr;

int x;

printf("\nInput the value of a tree node:\n");

scanf("%d",&x);

if(x==0) tr=Null; /* 若输入的数为0则为空 */

else

{

tr=(BITREE *)malloc(sizeof(BITREE));

tr->data=x; /* 把该值作为根节点的值 */

tr->lchild=creat(); /* 所有左子树赋予的值原理同creat(),下同 */ tr->rchild=creat();

}

return (tr);

}

void InOrder(BITREE *tr) /* 进行中序排序 */

{

if(tr!=Null)

{

InOrder(tr->lchild);

printf("%4d",tr->data);

InOrder(tr->rchild);

}

}

void exchange(BITREE *tr) /* 二叉树中所有结点的左右子树进行交换 */

{

BITREE *p,*t;

if(tr!=Null)

{

s->top=1;

s->data[s->top]=tr;

do

{

t=s->data[s->top];

s->top--;

if((t->lchild!=Null)||(t->rchild!=Null)) /* 交换该行的左右子树的值 */

{

p=t->lchild;

t->lchild=t->rchild;

t->rchild=p;

}

if(t->lchild!=Null) /* 为了进行下一次循环赋值,下同 */ {

s->top++;

s->data[s->top]=t->lchild;

}

if(t->rchild!=Null)

{

s->top++;

s->data[s->top]=t->rchild;

}

}while(s->top!=0 );

}

}

int main()

{

BITREE *root;

printf("\n");

root=creat();

printf("\n 中序遍历结果为:\n");

InOrder(root);

printf("\n");

exchange(root);

printf("\n");

printf("\n交换后中序遍历结果为:\n");

InOrder(root);

printf("\n");

exchange2(root);

printf("\n再交换后中序遍历结果为:\n");

InOrder(root);

printf("\n");

PostOrder(root); //可删除

getch();

return 1;

}

void exchange2(BITREE *tr) /* 再次交换左右子树 */ {

BITREE *p;

if(tr!=Null)

{

p=tr->lchild;

tr->lchild=tr->rchild;

tr->rchild=p;

exchange2(tr->lchild);

exchange2(tr->rchild);

}

}

void PostOrder(BITREE *tr) //后序遍历算法,可删除

{

if(tr!=Null)

{

PostOrder(tr->lchild);

PostOrder(tr->rchild);

free(tr);

}

}

Shiyan32.c

#define MaxSize 100

#define M 100

#define Null 0

typedef struct trnode /*定义结构体转名为BITREE*/

{

int data;

struct trnode *lchild,*rchild;

} BITREE;

BITREE *que[MaxSize];

int front=0,rear=0; /*定义全局变量front rear*/

BITREE *creat()

{

BITREE *tr; /*定义指针变量tr*/

int x;

printf("\nInput the value of the tree node:\n"); /*输入各节点的数值*/ scanf("%d",&x);

if(x==0) tr=Null; /*如果指针指向空表示节点无左右子树*/

else

{

tr=(BITREE *)malloc(sizeof(BITREE)); /*申请开辟内存空间存储二叉树*/ tr->data=x; /*指针指向根节点即输入的第一个数据*/

tr->lchild=creat(); /*嵌套调用creat函数,指针指向左孩子子树*/

tr->rchild=creat(); /*嵌套调用creat函数,指针指向右孩子子树*/

}

return (tr);

}

void InOrder(BITREE *t)

{

if(t!=Null)

{

InOrder(t->lchild); /*若t指针不为空则始终打印节点的左孩子数据*/

printf("%4d",t->data);

InOrder(t->rchild);

}

}

void EnQueue(BITREE *t) //存入队列

{

if(front!=(rear+1)%M) /*判断循环队列是否已满*/

{

rear=(rear+1)%M; /*队尾指针后移*/

que[rear]=t;

}

}

BITREE *DeQueue()

{

if(front==rear) return Null; /*判断循环队列是否为空*/

front=(front+1)%M; /*队头指针后移*/

return (que[front]);

}

void levorder(BITREE *t) //把存入队列的数排序

{

BITREE *p;

if(t!=Null)

{

EnQueue(t);

while(front!=rear)

{

p=DeQueue();

printf("%4d",p->data);

if(p->lchild!=Null)

EnQueue(p->lchild);

if(p->rchild!=Null)

EnQueue(p->rchild);

}

}

}

int main()

{

BITREE *root; /*定义根节点指针为root二叉树*****************************************/ /* shiyan32.c */

/* 按层次遍历二叉树的算法 */

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

*/

printf("\n");

root=creat(); /*调用creat函数*/

printf("\n中序遍历结果:\n");

InOrder(root);

printf("\n");

printf("\n按层次遍历的结果:\n");

levorder(root);

getch();

}

void levorder2(BITREE *t) //可删除,主函数中未调用

{

BITREE *Que[MaxSize];

int front,rear;

if(t!=Null)

{

front=0;

rear=1;

Que[1]=t;

do

{

front=(front+1)%MaxSize; /*头指针后移*/

t=Que[front];

printf("%d",t->data);

if(t->lchild!=Null) /*如果指向左孩子的指针不为空,则尾指针后移*/ {

rear=(rear+1)%MaxSize;

Que[rear]=t->lchild;

}

if(t->rchild!=Null)

{

rear=(rear+1)%MaxSize;

Que[rear]=t->rchild;

}

}while(rear==front); /*当循环队列已满*/

}

}

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

/* shiyan33.c */

/* */

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

#define M 100

#define Null 0

typedef struct node

{ /* 建立一个二叉树,数据域为data,左右子树分别为lchild和rchild */ int data;

struct node *lchild,*rchild;

} BITREE;

BITREE *InsertBst(BITREE *t,BITREE *s);

void DestOrder(BITREE *t);

BITREE *creatord();

void DestOrder(BITREE *tr) //递归调用函数

{

if(tr!=Null)

{

DestOrder(tr->rchild);

printf("%4d",tr->data);

DestOrder(tr->lchild);

}

}

BITREE *creatord() /* 建立二叉树,并为其赋值 */

{

BITREE *tr,*s;

int x;

tr=Null;

printf("\nInput the node value of the tree root:\n"); /* 为此二叉树的根结点赋值 */

scanf("%d",&x);

while(x!=0) /* 当输入的值为0时,循环结束 */

{

s=(BITREE *)malloc(sizeof(BITREE));

s->data=x;

s->lchild=Null;

s->rchild=Null;

tr=InsertBst(tr,s);

printf("\nInput another node's value:"); /* 为根结点的孩子结点赋值

,建立完整二叉树 */

scanf("%d",&x);

}

return (tr);

}

BITREE *InsertBst(BITREE *tr,BITREE *s) /* 在二叉树中插入数 */

{

BITREE *f,*p;

p=tr;

while(p!=Null)

{

f=p;

if(s->data==p->data) return tr;

if(s->datadata) p=p->lchild;

else

p=p->rchild;

}

if(tr==Null) return (s);

if(s->datadata) f->lchild=s;

else f->rchild=s;

return (tr);

}

int main()

{

BITREE *root;

printf("\n");

root=creatord();

DestOrder(root);

printf("\n");

getch();

return (1);

}

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

/* shiyan51.c */

/* 二叉查找树的建立 */

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

#include

#include

#include

#define Null 0

typedef struct node /* 建立一个二叉树,数据域为key和数组name,左右子树分别为lchild和rchild */

int key;

char name[20];

struct node *lchild,*rchild;

}BSTNODE;

void InOrder(BSTNODE *tr);

BSTNODE *InsertBst(BSTNODE *tr,BSTNODE *s);

BSTNODE *CreatOrd();

int main()

{

BSTNODE *root;

root=CreatOrd();

printf("\n所建立的二叉排序树的中序遍历的结果是:\n");

InOrder(root);

printf("\n 请按任意一各键 ..... \n");

getch();

return (1);

}

void InOrder(BSTNODE *tr) /* 按中序遍历 */

{

if(tr!=Null)

{

InOrder(tr->lchild);

printf("%4d",tr->key);

printf(" %s",tr->name);

InOrder(tr->rchild);

}

}

void PreOrder(BSTNODE *tr) /* 按前序遍历,主函数中未调用,可以删除 */ {

if(tr!=Null)

{

printf("%4d",tr->key);

printf(" %s",tr->name);

PreOrder(tr->lchild);

PreOrder(tr->rchild);

}

}

void PostOrder(BSTNODE *tr) /* 按后序遍历,可以删除 */

if(tr!=Null)

{

PostOrder(tr->lchild);

PostOrder(tr->rchild);

printf("%4d",tr->key);

printf(" %s",tr->name);

}

}

BSTNODE *InsertBst(BSTNODE *tr,BSTNODE *s) /* 在二叉树中插入数 */ {

BSTNODE *f,*p;

p=tr;

while(p!=Null) /* 如果p不为空,判断输入数插入到二叉树中的位置 */

{

f=p;

if(s->key==p->key) return (tr);

if(s->keykey) p=p->lchild;

else p=p->rchild;

}

if(tr==Null) return (s);

if(s->keykey) f->lchild=s;

else f->rchild=s;

return (tr);

}

BSTNODE *CreatOrd() /* 建立二叉树 */

{

BSTNODE *tr,*s;

int key;

char myname[20];

tr=Null;

printf("\n请输入要加入二叉查找树的记录的关键字的取值[(0 0)---结束输入]: ");

scanf("%d",&key);

printf("\n 输入该记录的名称: ");

scanf("%s",myname);

while(key!=0) /*关键字不为零时*/

{

s=(BSTNODE *)malloc(sizeof(BSTNODE)); /* 把二叉树的值存入链表 */

s->key=key;

s->lchild=Null;

s->rchild=Null;

strcpy(s->name,myname);

tr=InsertBst(tr,s);

printf("\n请输入要加入二叉排序树的记录的关键字的取值[(0 0)---结束输入]: ");

scanf("%d",&key);

printf("\n 输入该记录的名称: ");

scanf("%s",&myname[0]);

}

return (tr);

}

测试数据:50 a1 30 a2 9 a3 47 a4 36 a5 65 a6 78 a7 72 a8 90 a9 4 a10 0 0 输出结果:4 a10 9 a3 30 a2 36 a5 47 a4 50 a1 65 a6 72 a8 78 a7 90 a9

数值分析实验报告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 姓名:万轩 实验二插值法

计算方法上机实验报告

《计算方法》上机实验报告 班级:XXXXXX 小组成员:XXXXXXX XXXXXXX XXXXXXX XXXXXXX 任课教师:XXX 二〇一八年五月二十五日

前言 通过进行多次的上机实验,我们结合课本上的内容以及老师对我们的指导,能够较为熟练地掌握Newton 迭代法、Jacobi 迭代法、Gauss-Seidel 迭代法、Newton 插值法、Lagrange 插值法和Gauss 求积公式等六种算法的原理和使用方法,并参考课本例题进行了MATLAB 程序的编写。 以下为本次上机实验报告,按照实验内容共分为六部分。 实验一: 一、实验名称及题目: Newton 迭代法 例2.7(P38):应用Newton 迭代法求 在 附近的数值解 ,并使其满足 . 二、解题思路: 设'x 是0)(=x f 的根,选取0x 作为'x 初始近似值,过点())(,00x f x 做曲线)(x f y =的切线L ,L 的方程为))((')(000x x x f x f y -+=,求出L 与x 轴交点的横坐标) (') (0001x f x f x x - =,称1x 为'x 的一次近似值,过点))(,(11x f x 做曲线)(x f y =的切线,求该切线与x 轴的横坐标) (') (1112x f x f x x - =称2x 为'x

的二次近似值,重复以上过程,得'x 的近似值序列{}n x ,把 ) (') (1n n n n x f x f x x - =+称为'x 的1+n 次近似值,这种求解方法就是牛顿迭代法。 三、Matlab 程序代码: function newton_iteration(x0,tol) syms z %定义自变量 format long %定义精度 f=z*z*z-z-1; f1=diff(f);%求导 y=subs(f,z,x0); y1=subs(f1,z,x0);%向函数中代值 x1=x0-y/y1; k=1; while abs(x1-x0)>=tol x0=x1; y=subs(f,z,x0); y1=subs(f1,z,x0); x1=x0-y/y1;k=k+1; end x=double(x1) K 四、运行结果: 实验二:

C++上机实验报告实验三

实验三类与对象 1.实验目的 1.掌握类的定义和使用 2.掌握类的定义和对象的声明 3.复习具有不同访问属性的成员的访问方式 4.观察构造函数和析构函数的执行过程 5.学习类的组合使用方法 6.使用VC++的debug调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。 2.实验要求 1.定义一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。其中,rank为枚举类型CPU_Rank,定义为enum CPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数,voltage为浮点型的电压值。观察构造函数和析构函数的调用顺序。 2.定义一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,有两个公有成员函数run、stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom 为CDROM类的一个对象,定义并实现这个类。 3. (选做)设计一个用于人事管理的People(人员)类。考虑到通用性这里只抽象出所有类型人员都具有的属性:number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等等。其中“出生日期”定义为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、组合。 3.实验内容 1.首先定义枚举类型CPU_Rank,例如enum CPU_Rank{P1=1, P2, P3, P4, P5, P6, P7},再定义CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等私有数据成员,定义成员函数run、stop,用来输出提示信息,在构造函数和析构函数中也可以输出提示信息。在主程序中定义一个CPU的对象,调用其成员函数,观察类对象的构造与析构顺序,以及成员函数的调用。程序名: 2.使用debug调试功能观察程序的运行流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。 3.调试操作步骤如下: 1)单击Build | Start Debug | Step Into命令,或按下快捷键F11,系统进入单步执行状态,程序开始运行,一个DOS窗口出现,此时Visual Studio 中光标停在main()函数的入口处; 2)从Debug菜单或Debug工具栏中单击Step Over,此时,光标下移,程序准备执行CPU 对象的初始化; 3)单击Step Into,程序准备执行CPU类的构造函数; 4)连续单击Step Over,观察构造函数; 5)此时程序准备执行CPU对象的run()函数,单击Step Into,程序进入run()成员函数,连续单击Step Over,直到回到main()函数。 6)继续执行程序,参照上述的方法,观察程序的执行顺序,加深对类的构造函数、析构函数、成员函数的执行顺序的认识。 7)再试试Debug菜单栏中别的菜单项,熟悉Debug的各种方法。 4.首先定义CPU类(可使用第二题中的CPU类)、RAM类、CDROM类。再定义Computer类;

Web网页设计实验报告

WEB系统开发 综合实验报告 题目红尘客栈网上订房页面 专业计算机科学与技术(信息技术及应用) 班级计信2班 学生蒋波涛 重庆交通大学 2013年

目录 一、设计目的 (3) 二、设计题目 (3) 三、结构设计 (3) 四、技术分析 (4) 五、设计过程 (7) 六、实验心得 (10) 七、实验总结 (11)

一、设计目的 在Internet飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用。因此网站建设在Internet 应用上的地位显而易见,它已成为政府、企事业单位信息化建设中的重要组成部分,从而倍受人们的重视。我们当代大学生更是离不开网络给我们带来的好处与便利.但是,我们成天浏览的网站网页到底是如何制作的呢?我想这一点很多同学都没有去深究过.所以,这学期我选择了”web网页设计”这门课, 本课程的设计目的是通过实践使同学们经历网页制作的全过程. 通过设计达到掌握网页设计、制作的技巧。 了解和熟悉网页设计的基础知识和实现技巧。根据题目的要求,给出网页设计方案,可以按要求,利用合适图文素材设计制作符合要求的网页设计作品。 熟练掌握Photoshop cs3、Dreamweaver cs等软件的的操作和应用。增强动手实践能力,进一步加强自身综合素质。学会和团队配合,逐渐培养做一个完整项目的能力。 二、设计题目 《红尘客栈》 三、结构设计 选定主题,确定题目之后,在做整个网站之前对网站进行需求分析。首先,做好需求调研。调研方式主要是上网查阅资料,在图书馆里翻阅相关书籍。 然后,调研结束之后对整个网站进行功能描述,并对网站进行总体规划,接着逐步细化。 我们选做的主题是个人主页,并且选定题目为“红尘客栈”,其目的是做一个简单的网站,介绍酒店概况,提供一定的资讯信息。 四、技术分析 (一)建立布局 在这次的网页设计中用到大量的布局,所以怎么样建立布局是关键。Dreamweaver cs3是大多数人设计网页的称手兵器,也是众多入门者的捷径。特别是其在布局方面的出色表现,更受青睐。大家都知道,没有表格的帮助,很难组织出一个协调合理的页面。 1.点击“ALT+F6”键,进入布局模式,插入布局表格。建立一个大概的布局。 2.使用背景图片:选中该项,按浏览可以插入一幅准备好的图片作为表格的背景,因为图片是以平铺的形式作为表格背景,所以表格大小和图片尺寸都要控制好。 (二)网页中的图像

数值计算实验报告

(此文档为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);

第5章上机实验报告

第5章上机实验报告 一、实验目的 (1)观察程序运行中变量的作用域74。 (2)学习类的静态成员的使用。 (3)学习多文件结构的C++程序中的使用。 二、实验任务 (1)运行下面的程序,观察变量x,y的值。 【代码lab5-1】 #include"iostream" usingnamespace std; void fun(); int x=1,y=2; int main() { cout<<"Begin..."<

流量计性能测定实验报告doc

流量计性能测定实验报告 篇一:孔板流量计性能测定实验数据记录及处理篇二:实验3 流量计性能测定实验 实验3 流量计性能测定实验 一、实验目的 ⒈了解几种常用流量计的构造、工作原理和主要特点。 ⒉掌握流量计的标定方法(例如标准流量计法)。 ⒊了解节流式流量计流量系数C随雷诺数Re的变化规律,流量系数C的确定方法。 ⒋学习合理选择坐标系的方法。 二、实验内容 ⒈通过实验室实物和图像,了解孔板、1/4园喷嘴、文丘里及涡轮流量计的构造及工作原理。 ⒉测定节流式流量计(孔板或1/4园喷嘴或文丘里)的流量标定曲线。 ⒊测定节流式流量计的雷诺数Re和流量系数C的关系。 三、实验原理 流体通过节流式流量计时在流量计上、下游两取压口之间产生压强差,它与流量的关系为: 式中: 被测流体(水)的体积流量,m3/s; 流量系数,无因次;

流量计节流孔截面积,m2; 流量计上、下游两取压口之间的压强差,Pa ; 被测流体(水)的密度,kg/m3 。 用涡轮流量计和转子流量计作为标准流量计来测量流量VS。每一 个流量在压差计上都有一对应的读数,将压差计读数△P和流量Vs绘制成一条曲线,即流量标定曲线。同时用上式整理数据可进一步得到C—Re关系曲线。 四、实验装置 该实验与流体阻力测定实验、离心泵性能测定实验共用图1所示的实验装置流程图。 ⒈本实验共有六套装置,流程为:A→B(C→D)→E→F→G→I 。 ⒉以精度0.5级的涡轮流量计作为标准流量计,测取被测流量计流量(小于2m3/h流量时,用转子流量计测取)。 ⒊压差测量:用第一路差压变送器直接读取。 图1 流动过程综合实验流程图 ⑴—离心泵;⑵—大流量调节阀;⑶—小流量调节阀; ⑷—被标定流量计;⑸—转子流量计;⑹—倒U管;⑺⑻⑽—数显仪表;⑼—涡轮流量计;⑾—真空表;⑿—流量计平衡阀;⒁—光滑管平衡阀;⒃—粗糙管平衡阀;⒀—回流阀;⒂—压力表;⒄—水箱;⒅—排水阀;⒆—闸阀;⒇—

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

《数值计算方法》上机实验报告华北电力大学 实验名称数值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

计算方法第二章方程求根上机报告

实验报告名称 班级:学号:姓名:成绩: 1实验目的 1)通过对二分法与牛顿迭代法作编程练习与上级运算,进一步体会二分法与牛顿迭代法的不同特点。 2)编写割线迭代法的程序,求非线性迭代法的解,并与牛顿迭代法。 2 实验内容 用牛顿法和割线法求下列方程的根 x^2-e^x=0; x*e^x-1=0; lgx+x-2=0; 3实验步骤 1)根据二分法和牛顿迭代法,割线法的算法编写相应的求根函数; 2)将题中所给参数带入二分法函数,确定大致区间; 3)用牛顿迭代法和割线法分别对方程进行求解; 3 程序设计 牛顿迭代法x0=1.0; N=100; k=0; eps=5e-6; delta=1e-6; while(1) x1=x0-fc1(x0)/fc2(x0); k=k+1; if k>N disp('Newmethod failed')

break end if(abs(x1-x0)=delta) c=x1; x1=cutnext(x0,x1); x0=c; %x0 x1μYí?μ?μ?x1 x2 è?è?±£′??úx0 x1 end k=k+1; if k>N disp('Cutline method failed') break; end if(abs(x1-x0)

软基第三次上机实验报告

软基第三次上机实验报告 EX3.1 一、程序流程说明 1)链栈结点类型定义为: typedef struct node { int data; struct node *next; }node_type; 2)编写进栈函数push 3)编写出栈函数pop 4)编写main函数,首先建立一空链栈; 调用进栈函数,将从键盘输入的数据元素逐个进栈,输入0结束;显示进栈后的数据元素;调用两次出栈函数,显示出栈后的数据元素。 二、程序代码 #include #include #define true 1 #define false 0 typedef struct node { int data; struct node*next; }node_type; typedef struct { node_type*top; int length; }lstack_type; int push(lstack_type*lp,int x) { node_type*p; p=(node_type*)malloc(sizeof(node_type)); if(p!=NULL) { p->data=x; p->next=lp->top; lp->top=p; } else return 0; }

void pop(lstack_type *lp) { node_type*p; if(p==NULL) { return; } else { p=lp->top; lp->top=lp->top->next; free(p); } } node_type*print(node_type*head) { node_type*temp; temp=head; while(temp!=NULL) { printf("%d\t",temp->data); temp=temp->next; } return 0; } void main() { int i,j; i=0;j=0; lstack_type M,*lp; lp=&M; lp->top=NULL; printf("Please input the data(end by '0'):\n"); scanf("%d",&i); while(i!=0) { push(lp,i); scanf("%d",&i); } printf("All data is:\n"); print(lp->top); printf("\n The first pop:\n"); pop(lp); print(lp->top);

计网实验报告(三) (4500字)

计算机网络实验报告(三) ——编程实现可靠数据传输原理 go-back-n (一)实验目的: 运用各种编程语言实现基于go-back-n 的可靠数据传输软件。通过本实验,使学生能够对可靠数据传输原理有进一步的理解和掌握。 (二)实验内容: (1).选择合适的编程语言编程实现基于go-back-n 的可靠数据传输软件。 (2).在实际网络环境或模拟不可靠网络环境中测试和验证自己的可靠数据传输软件。 (三)实验原理: 1.gbn协议含义:go-back-n arq 中文翻译为后退n式arq、回退n式arq。该协议对传统的自动重传请求 (arq,automatic repeat reques)进行了改进,从而实现了在接收到ack之前能够连续发送多个数据包。 在go-back-n arq中,发送端不需要在接收到上一个数据包的ack后才发送下一个数据包,而是可以连续发送数据包。在发送端发送数据包的过程中,如果接收到对应已发送的某个数据包的nack,则发送端将nack对应的某个数据包进行重发,然后再将该数据包之后的数据包依次进行重发。 后退n帧arq的图例: 后退n帧arq就是从出错处重发已发出过的n个帧。 2.go-back-n 的有限状态机模型表示如图所示: (a) (b) 图3.1 go-back-n 的有限状态机模型(a)发送端 (b)接受端 (四)实验步骤: 在eclipse平台编写并调试gbn模拟java程序,观察三组以上实验结果,验证程序可以正确模拟gbn的发送规则。 (五)实验结果: 以下为随机数模拟的某次发送情况: 接收方开始接收分组数据! 发送方开始发送分组数据! 发送方现在开始第一次发送序号为0的数据分组 当前窗口内的分组情况为: 第0号窗口里面存放的是序号为1的马上待发送的数据分组! 第1号窗口里面存放的是序号为2的马上待发送的数据分组! 第2号窗口里面存放的是序号为3的马上待发送的数据分组! 接收方收到了序号为0的分组! 该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ack!发送方收到了ack,序号为0并且开始加以确认! 发送方现在开始第一次发送序号为1的数据分组 当前窗口内的分组情况为: 第0号窗口里面存放的是序号为2的马上待发送的数据分组! 第1号窗口里面存放的是序号为3的马上待发送的数据分组!

数值分析实验报告模板

数值分析实验报告模板 篇一:数值分析实验报告(一)(完整) 数值分析实验报告 1 2 3 4 5 篇二:数值分析实验报告 实验报告一 题目:非线性方程求解 摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。利用二分法求解给定非线性方程的根,在给定的范围内,假设f(x,y)在[a,b]上连续,f(a)xf(b) 直接影响迭代的次数甚至迭代的收敛与发散。即若x0 偏离所求根较远,Newton法可能发散的结论。并且本实验中还利用利用改进的Newton法求解同样的方程,且将结果与Newton法的结果比较分析。 前言:(目的和意义) 掌握二分法与Newton法的基本原理和应用。掌握二分法的原理,验证二分法,在选对有根区间的前提下,必是收

敛,但精度不够。熟悉Matlab语言编程,学习编程要点。体会Newton使用时的优点,和局部收敛性,而在初值选取不当时,会发散。 数学原理: 对于一个非线性方程的数值解法很多。在此介绍两种最常见的方法:二分法和Newton法。 对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b) Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式xk?1?xk?f(xk) f'(xk) 产生逼近解x*的迭代数列{xk},这就是Newton法的思想。当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。另外,若将该迭代公式改进为 xk?1?xk?rf(xk) 'f(xk) 其中r为要求的方程的根的重数,这就是改进的Newton 法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。 程序设计: 本实验采用Matlab的M文件编写。其中待求解的方程写成function的方式,如下 function y=f(x);

数值分析上机实验报告

数值分析上机实验报告

《数值分析》上机实验报告 1.用Newton 法求方程 X 7-X 4+14=0 在(0.1,1.9)中的近似根(初始近似值取为区间端点,迭代6次或误差小于0.00001)。 1.1 理论依据: 设函数在有限区间[a ,b]上二阶导数存在,且满足条件 {}α?上的惟一解在区间平方收敛于方程所生的迭代序列 迭代过程由则对任意初始近似值达到的一个中使是其中上不变号 在区间],[0)(3,2,1,0,) (') ()(],,[x |))(),((|,|,)(||)(|.4;0)(.3],[)(.20 )()(.110......b a x f x k x f x f x x x Newton b a b f a f mir b a c x f a b c f x f b a x f b f x f k k k k k k ==- ==∈≤-≠>+ 令 )9.1()9.1(0)8(4233642)(0)16(71127)(0)9.1(,0)1.0(,1428)(3 2 2 5 333647>?''<-=-=''<-=-='<>+-=f f x x x x x f x x x x x f f f x x x f 故以1.9为起点 ?? ?? ? ='- =+9.1)()(01x x f x f x x k k k k 如此一次一次的迭代,逼近x 的真实根。当前后两个的差<=ε时,就认为求出了近似的根。本程序用Newton 法求代数方程(最高次数不大于10)在(a,b )区间的根。

1.2 C语言程序原代码: #include #include main() {double x2,f,f1; double x1=1.9; //取初值为1.9 do {x2=x1; f=pow(x2,7)-28*pow(x2,4)+14; f1=7*pow(x2,6)-4*28*pow(x2,3); x1=x2-f/f1;} while(fabs(x1-x2)>=0.00001||x1<0.1); //限制循环次数printf("计算结果:x=%f\n",x1);} 1.3 运行结果: 1.4 MATLAB上机程序 function y=Newton(f,df,x0,eps,M) d=0; for k=1:M if feval(df,x0)==0 d=2;break else x1=x0-feval(f,x0)/feval(df,x0); end e=abs(x1-x0); x0=x1; if e<=eps&&abs(feval(f,x1))<=eps d=1;break end end

数据库上机实验报告

数据库实验 (第三次) 题目1 实验内容: 1. 检索上海产的零件的工程名称; 2. 检索供应工程J1零件P1的供应商号SNO; 3. 检索供应工程J1零件为红色的供应商号SNO; 4. 检索没有使用天津生产的红色零件的工程号JNO; 5. 检索至少用了供应商S1所供应的全部零件的工程号JNO; 6. 检索购买了零件P1的工程项目号JNO及数量QTY,并要求对查询的结果按数 量QTY降序排列。

1 select jname from j where jno in (select jno from spj where sno in (select sno from s where city ='上海' ) ); 2 select sno from spj where jno ='j1'and pno ='p1' 3

selectdistinct sno from spj where pno in (select pno from p where color='红'and pno in (select pno from spj where jno ='j1' ) ); 4 selectdistinct jno from spj where pno notin (select pno from p where color ='红'and pno in (select pno from spj where sno in (select sno from s where city ='天津' ) ) )

5 select jno from spj where sno ='s1' 6 select jno,qty from spj where pno ='p1' orderby qty desc 四﹑思考题 1.如何提高数据查询和连接速度。 建立视图 2. 试比较连接查询和嵌套查询 有些嵌套查询是可以用连接来代替的,而且使用连接的方式,性能要比 嵌套查询高出很多 当查询涉及多个关系时,用嵌套查询逐步求解结构层次清楚,易于构造,具有结构化程序设计的优点。但是相比于连接运算,目前商用关系数据库管理系统对嵌套查询的优化做的还不够完善,所以在实际应用中,能够用连接运算表达的查询尽可能采用连接运算。

计算机网络模拟器实验报告记录(1)

计算机网络模拟器实验报告记录(1)

————————————————————————————————作者:————————————————————————————————日期:

计算机网络模拟器实验报告 学院:学号:姓名: 实验名称:计算机网络模拟器试验 实验说明:共5个实验,其中前3个必做,后2个选做。 一、实验目的 1、掌握模拟器软件的使用方法; 2、掌握配置PC、交换机、路由器的方法; 3、掌握为交换机设置VLAN,为端口设置TRUNK的 方法。 二、实验环境(请注意关闭杀毒软件) WinXP/WIN7、HW-RouteSim 2.2(软件请到BB 课程资源下载,下载后直接解压缩运行;下载前请 关闭杀毒软件) 三、实验步骤及结果 实验一:计算机和交换机基本设置 添加一个交换机,两个计算机,连接A电脑到交换机3号端口,B电脑到6号端口,双击交换机,进入终端配置:

system password: [Quidway]sysname S3026 ;交换机重命名为S3026 [S3026]super password 111 ;设置特权密码为111 [S3026]quit sys password:111 [S3026]display currect-config ;查看当前所有配置[S3026]display vlan all ;查看当前VLAN设置观察此时所有交换机端口都在同一个vlan1内。 双击小电脑A: login:root password:linux [root@PCAroot]# ? ;输入?号查看命令提示[root@PCAroot]#ifconfig eth0 10.65.1.1 netmask 255.255.0.0 双击小电脑B: login:root password:linux [root@PCAroot]#ifconfig eth0 10.65.1.2 netmask 255.255.0.0 点击A电脑做测试: [root@PCA root]#ping 10.65.1.2

计算方法上机实习题大作业(实验报告).

计算方法实验报告 班级: 学号: 姓名: 成绩: 1 舍入误差及稳定性 一、实验目的 (1)通过上机编程,复习巩固以前所学程序设计语言及上机操作指令; (2)通过上机计算,了解舍入误差所引起的数值不稳定性 二、实验内容 1、用两种不同的顺序计算10000 21n n -=∑,分析其误差的变化 2、已知连分数() 1 01223//(.../)n n a f b b a b a a b =+ +++,利用下面的算法计算f : 1 1 ,i n n i i i a d b d b d ++==+ (1,2,...,0 i n n =-- 0f d = 写一程序,读入011,,,...,,,...,,n n n b b b a a 计算并打印f 3、给出一个有效的算法和一个无效的算法计算积分 1 041 n n x y dx x =+? (0,1,...,1 n = 4、设2 2 11N N j S j == -∑ ,已知其精确值为1311221N N ?? -- ?+?? (1)编制按从大到小的顺序计算N S 的程序 (2)编制按从小到大的顺序计算N S 的程序 (3)按两种顺序分别计算10001000030000,,,S S S 并指出有效位数 三、实验步骤、程序设计、实验结果及分析 1、用两种不同的顺序计算10000 2 1n n -=∑,分析其误差的变化 (1)实验步骤: 分别从1~10000和从10000~1两种顺序进行计算,应包含的头文件有stdio.h 和math.h (2)程序设计: a.顺序计算

#include #include void main() { double sum=0; int n=1; while(1) { sum=sum+(1/pow(n,2)); if(n%1000==0)printf("sun[%d]=%-30f",n,sum); if(n>=10000)break; n++; } printf("sum[%d]=%f\n",n,sum); } b.逆序计算 #include #include void main() { double sum=0; int n=10000; while(1) { sum=sum+(1/pow(n,2)); if(n%1000==0) printf("sum[%d]=%-30f",n,sum); if(n<=1)break; n--; } printf("sum[%d]=%f\n",n,sum); } (3)实验结果及分析: 程序运行结果: a.顺序计算

数值计算实验报告

2012级6班###(学号)计算机数值方法 实验报告成绩册 姓名:安元龙 学号:2012060501 成绩:

数值计算方法与算法实验报告 学期: 2014 至___2015 第 1 学期 2014年 10月26日课程名称:__数值计算方法与算法 __ 专业:信息与计算科学 12级5班实验编号: 1实验项目Neton插值多项式指导教师__孙峪怀姓名:安元龙学号: 2012060501 实验成绩: 一、实验目的及要求 实验目的: 掌握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. #include #define MAX_N 20 typedef struct tagPOINT { double x; double y; }POINT; int main() { int n; int i,j; POINT points[MAX_N+1];double diff[MAX_N+1]; double x,tmp,newton=0;

计网实验报告

电气工程学院 计算机网络实验报告 姓名:彭思琦 学号:15291191 指导教师:张洪和 实验日期:2017-12-09 18:00-22:00

一、计算机信息 计算机的 IP 地址:192.168.0.5 子网掩码:255.225.255.0 默认网关:无 二、 报告内容 1 ) 画出实验室的网络拓扑图, 将每个网络用 CIDR 记法进行表示, 并注明你用的电脑处在哪一个网络。 实验室的网络拓扑图: 1. 由机房电脑组成的网络中,用 CIDR 记法要写成: 192.168.0.0/24 WAN LAN:10.10.10.1 LAN:192.168.1.1

2. TCPIP_1 CIDR 记法为:10.10.10.1/24 TCPIP_2 CIDR 记法为: 192.168.1.1/24 1 . 实验一任务一 2)在你的电脑上打开cmd 窗口,ping 一下192.1 68.0.0 网络的任何一台在线的主机,将实际运行结果进行图片保存,粘贴到实验报告上。 PING 本机 PING 百度(此部分在寝室完成)

3)在ping 的过程中,利用wireshark 捕捉包含对应ICMP 报文的MAC 帧,将此MAC 帧的各个控制字段,以及此MAC 帧中包含的IP 数据报的各个控制字段,进行标注或者用文字列出。本机IP:172.27.69.177 目的地址:74:1f:4a:9b:a1:67 源地址:30:10:b3:b8:bd:a3 类型:协议类型ipv4(8000) 版本:4 首部长度:5 首部长度5*4=20 字节 区分服务:00

数值分析实验报告总结

数值分析实验报告总结 随着电子计算机的普及与发展,科学计算已成为现代科 学的重要组成部分,因而数值计算方法的内容也愈来愈广泛和丰富。通过本学期的学习,主要掌握了一些数值方法的基本原理、具体算法,并通过编程在计算机上来实现这些算法。 算法算法是指由基本算术运算及运算顺序的规定构成的完 整的解题步骤。算法可以使用框图、算法语言、数学语言、自然语言来进行描述。具有的特征:正确性、有穷性、适用范围广、运算工作量少、使用资源少、逻辑结构简单、便于实现、计算结果可靠。 误差 计算机的计算结果通常是近似的,因此算法必有误差, 并且应能估计误差。误差是指近似值与真正值之差。绝对误差是指近似值与真正值之差或差的绝对值;相对误差:是指近似值与真正值之比或比的绝对值。误差来源见表 第三章泛函分析泛函分析概要 泛函分析是研究“函数的函数”、函数空间和它们之间 变换的一门较新的数学分支,隶属分析数学。它以各种学科

如果 a 是相容范数,且任何满足 为具体背景,在集合的基础上,把客观世界中的研究对象抽 范数 范数,是具有“长度”概念的函数。在线性代数、泛函 分析及相关的数学领域,泛函是一个函数,其为矢量空间内 的所有矢量赋予非零的正长度或大小。这里以 Cn 空间为例, Rn 空间类似。最常用的范数就是 P-范数。那么 当P 取1, 2 ,s 的时候分别是以下几种最简单的情形: 其中2-范数就是通常意义下的距离。 对于这些范数有以下不等式: 1 < n1/2 另外,若p 和q 是赫德尔共轭指标,即 1/p+1/q=1 么有赫德尔不等式: II = ||xH*y| 当p=q=2时就是柯西-许瓦兹不等式 般来讲矩阵范数除了正定性,齐次性和三角不等式之 矩阵范数通常也称为相容范数。 象为元素和空间。女口:距离空间,赋范线性空间, 内积空间。 1-范数: 1= x1 + x2 +?+ xn 2-范数: x 2=1/2 8 -范数: 8 =max oo ,那 外,还规定其必须满足相容性: 所以

相关主题