计算方法实验(c语言_六项试验)

合集下载

计算方法实验

计算方法实验

电子信息工程学院通信工程专业、电子信息工程专业《计算方法实验》教学大纲一、课程概述(一)课程性质本课程是通信工程专业非常重要的基础选修课。

《计算方法实验》是《计算方法》课程的有效补充部分。

通过实验,可以使学生更好地掌握所学理论,能够把理论和实际编程更好地结合起来,从而达到提高学生的实际上机操作能力和程序编写的能力。

在引导学生使用计算机开展数值试验,掌握数值算法和程序设计的基本原理和技能。

学生通过选择算法,编写程序,分析数值结果,写数值实验报告,课堂讨论等环节的综合训练,从而逐步掌握数值试验的方法和技巧,获得多方面的计算经验。

(二)教学目标与要求通过本实验课程的学习,学生应掌握以下知识和技能:1.计算方法中基本算法的程序设计(使用MA TLAB);2.程序设计和调试的基本技能;3.注意提示学生算法中参数的调整;4.结合专业课程应用。

(三)重点和难点本课程教学重点:1、MA TLAB矩阵运算、M文件编写,符号运算和图形绘制。

2、程序实现插值法。

用插值法计算三角函数表和平方根表中没有列出的函数值。

程序实现曲线拟合。

3、程序实现解线性方程组的高斯消去法、雅可比迭代法和塞德尔迭代法。

程序实现解非线性方程的牛顿迭代法、弦截法。

(四)与其他课程的关系本课程是一门应用性较强的课程,要求学生具备一定的计算机操作能力,并至少学过一门计算机语言,例如《MA TLAB》或《C语言程序设计》。

先修课程:《MA TLAB》或《C语言程序设计》、《高等数学》、《线性代数》。

本课程的学习,可为学生学好很多后续课程奠定基础,例如《数字信号处理》,《数字图像处理》,《信号与系统》,《通信原理》等工程实际性较强的专业基础课,专业课提供仿真工具。

(五)教材及教学参考书教材:《计算方法》,徐萃薇,高等教育出版社,2003.7参考书:《MATLAB7.X程序设计》,楼顺天,西安电子工业出版社,2006.5《数值分析与实验》,薛毅编著,北京工业大学出版社,2005.3《计算方法》(上,下)北京大学、清华大学《计算方法》编写组,科学出版社。

c语言综合实验报告

c语言综合实验报告

c语言综合实验报告《C语言综合实验报告》一、实验目的本次实验旨在通过综合性的C语言编程实践,加深学生对C语言程序设计的理解和掌握,提高学生的编程能力和解决问题的能力。

二、实验内容1. 编写一个简单的C语言程序,实现对用户输入的两个整数进行加法运算并输出结果。

2. 设计一个C语言程序,实现对用户输入的字符串进行逆序输出。

3. 编写一个C语言程序,实现对用户输入的一组整数进行排序并输出排序后的结果。

4. 设计一个C语言程序,实现对用户输入的一组学生成绩进行统计,包括平均分、最高分、最低分等。

三、实验过程1. 首先,对于加法运算的程序,我们使用scanf函数获取用户输入的两个整数,然后利用printf函数输出它们的和。

2. 对于字符串逆序输出的程序,我们使用gets函数获取用户输入的字符串,然后使用循环和数组实现逆序输出。

3. 对于排序程序,我们使用冒泡排序算法对用户输入的整数进行排序,并使用printf函数输出排序后的结果。

4. 对于学生成绩统计程序,我们使用循环获取用户输入的学生成绩,并计算平均分、最高分、最低分等统计信息,最后使用printf函数输出结果。

四、实验结果经过以上步骤,我们成功编写了四个C语言程序,分别实现了加法运算、字符串逆序输出、整数排序和学生成绩统计等功能。

这些程序在实际运行中均能正常工作,并得到了预期的结果。

五、实验总结通过本次实验,我们深入理解了C语言的基本语法和编程思想,掌握了常见的编程技巧和算法,并提高了自己的编程能力和解决问题的能力。

希望在今后的学习和工作中能够继续努力,不断提升自己的编程水平,为实现更多的创新和突破打下坚实的基础。

C语言实验报告范文

C语言实验报告范文

C语言实验报告范文一、实验目的本实验旨在通过实际操作和编程,加深对C语言的理解和掌握,同时提高解决实际问题的能力。

二、实验内容1.利用C语言设计一个简单的计算器程序,实现简单的四则运算功能。

2.利用C语言设计一个简单的学生信息管理系统,实现添加、删除、修改和查询学生信息的功能。

三、实验步骤和代码实现1.计算器程序的设计与实现(1) 定义一个函数addition,传入两个参数,实现两数相加。

(2) 定义一个函数subtraction,传入两个参数,实现两数相减。

(3) 定义一个函数multiplication,传入两个参数,实现两数相乘。

(4) 定义一个函数division,传入两个参数,实现两数相除。

(5)在主函数中,通过用户的输入选择所需进行的运算,并输出结果。

代码如下:```C#include <stdio.h>float addition(float a, float b)return a + b;float subtraction(float a, float b)return a - b;float multiplication(float a, float b)return a * b;float division(float a, float b)if (b == 0)printf("Divisor cannot be zero!\n");return 0;}return a / b;int maiint choice;float num1, num2;printf("Please enter two numbers: ");scanf("%f%f", &num1, &num2);printf("Please choose the operation (1:addition, 2:subtraction, 3:multiplication, 4:division): ");scanf("%d", &choice);switch (choice)case 1:printf("The result is: %.2f\n", addition(num1, num2)); break;case 2:printf("The result is: %.2f\n", subtraction(num1, num2)); break;case 3:printf("The result is: %.2f\n", multiplication(num1, num2)); break;case 4:printf("The result is: %.2f\n", division(num1, num2)); break;default:printf("Invalid choice!\n");break;}return 0;```2.学生信息管理系统的设计与实现(1) 定义一个结构体Student,包含学生的姓名、学号、年龄等信息。

计算方法实验计算机科学与技术

计算方法实验计算机科学与技术

实验一 非线性方程的迭代数值解法一、实验目的1) 熟悉用牛顿法解非线性方程的过程;熟悉用弦截法求解非线性方程的过程 2) 编程实现牛顿法、弦截法求非线性方程的根。

二、实验设备PC 机一台,C 语言、PASCAL 语言、Matlab 任选 三、实验内容1)用牛顿法求解01553=-x 的根,取初始值为10。

2) 用弦截法求解数学方程。

010*15.110*4.181.9*002.0)(255.15=--=--x x x f四、实验要求1)认真分析题目的条件和要求,复习相关的理论知识,选择适当的解决方案和算法; 牛顿迭代法:是用于求方程或方程组近似根的一种常用的算法设计方法。

设方程为f(x)=0,用某种数学方法导出等价的形式 x(n+1) = x(n)–f(x(n))/f ’(x(n)).然后按以下步骤执行: (1) 选一个方程的近似根,赋给变量x1;(2) 将x0的值保存于变量x1,然后计算g(x1),并将结果存于变量x0;(3) 当x0与x1的差的绝对值还小于指定的精度要求时,重复步骤(2)的计算。

若方程有根,并且用上述方法计算出来的近似根序列收敛,则按上述方法求得的x0就 认为是方程的根。

弦截法:弦截法求方程的根是一种解方程得基本方法,在计算机编程中常用。

他的思路是这样的:任取两个数,判断这两个数的函数值,如果函数值是同号,换两个数再试,直到两个数x1,x2对应的函数值为异号时为止,这时方程的解肯定在这两个数x1,x2之间。

连接这两点所对应的函数值,连线与x 轴的交点为新的x ,若f(x)与f(x1)同号,则把x 当作新的x1,将新的x1与x2连接,如此循环……如果f(x)与f(x1)异号,则把把x 当作新的x2,将x1与新的x2连接,循环……本实验在操作之前对构造方程的函数,分别进行了一阶和二阶求导。

二阶导数恒小于零。

2)编写上机实验程序,作好上机前的准备工作;牛顿迭代法求解/*计算pow(x,3)-155=0的根 用牛顿迭代法*/ #include <stdio.h> #include <math.h> double fy(double x){ return pow(x,3)-155; }double fd(double x){ return 3*pow(x,2);}void main(){ int i=1;double x0=10,x=0;printf("The initial x is %.5lf\n\n",x0);for(i=1;i<50;i++){x=x0-fy(x0)/fd(x0);if(fabs(x-x0)<1e-5) break;x0=x;printf("The %d the x is %.5lf\n",i,x0);}}============================================================= 弦截法求解求解数学方程的根0.002*9.81-1.4*e-5*X1.5-1.15*e-5*X2=0/*求解数学方程的隔根区间f(X)=0.002*9.81-1.4*e-5*X1.5-1.15*e-5*X2=0f'(X)=-1.4*e-5*(1.5)*X0.5-1.15*e-5*(2)X ?? 0f''(X)=-1.4*e-5*(1.5*0.5)X(-0.5)-1.15*e-5*(2)<0*/#include <stdio.h>#include <math.h>#define N 0.5double f(double x){ double f;f=0.002*9.81-1.4*0.00001*pow(x,1.5)-1.15*0.00001*pow(x,2);return f;}void main(){int i;double Initial=36;double a,b,fa,fb;printf("i\ta\t f(a)\t\tb\t\tf(b)\tf(a)*f(b)\n");for(i=1;;i++){ a=Initial-N*i;b=Initial+N*i;fa=f(a);fb=f(b);printf("%d\t%lf %lf\t%lf %lf\t%lf\n",i,a,fa,b,fb,fa*fb);if(fa*fb<0) break;}printf("The last :\n");printf("%d\t%lf\t%lf\t%lf\t%lf\n",i,a,fa,b,fb);}/* 用弦截法求解数学方程。

计算机软件基础实验报告(C语言)

计算机软件基础实验报告(C语言)

计算机软件基础实验报告一.实验目的1.熟悉C语言的使用,编辑算法实现特定要求。

2.熟悉Huffman树的编码程序和数组元素的比较程序等。

二.实验内容和要求1.实验内容1)试设计一算法,从包括n个元素的数组中,求最大和最小元素,并使得当n 个元素为有序排列时,元素之间的比较次数仅为n-1次。

2)在给出的Huffman编码源程序基础上,要求画出Huffman树,求出与等长编码相比时的压缩比。

2.实验要求1)根据实验内容编写算法,并用 C 语言进行程序设计。

2)将所编程序在计算机上调试通过,并全面测试。

3)整理完成实验报告,包括:姓名、学号、实验日期等。

三.程序清单1.#include<iostream.h>int main(){int n,max,min;cout<<"请输入数组大小"<<endl;cin>>n;int *a=new int [n];//输入数组for(int i=0;i<n;i++){cin>>a[i];}//比较排序for(int k=0;k<n-1;k++)for(int j=k+1;j<n;j++){if(a[k]>a[j]){int temp=0;temp=a[k];a[k]=a[j];a[j]=temp;}}//为最大值和最小值赋值max=a[n-1];min=a[0];//输出结果cout<<"排序后的序列"<<endl;for(int l=0;l<n;l++)cout<<" "<<a[l];cout<<endl;cout<<"max= "<<max<<" min= "<<min<<endl;return 0;}2.#include <dos.h>#include <conio.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>typedef struct{unsigned int weight; //结点权值unsigned int parent,lchild,rchild; //结点的父指针,左右孩子指针}HTNode,*HuffmanTree; //动态分配数组存储哈夫曼树typedef char **HuffmanCode; //动态分配数组存储哈夫曼编码表void CreateHuffmanTree(HuffmanTree &,unsigned int*,int ); //生成哈夫曼树void HuffmanCoding(HuffmanTree,HuffmanCode &,int,unsigned int* ); //对哈夫曼树进行编码void PrintHuffmanCode(HuffmanCode,unsigned int*,int,unsigned int*); //显示哈夫曼编码void Select(HuffmanTree,int,int&,int&); //在数组中寻找权值最小的两个结点void drawHT(int,unsigned int* ,unsigned int*);int powlen(int);void ptspace(int );int mstep(int);void main(){HuffmanTree HT; //哈夫曼树HTHuffmanCode HC; //哈夫曼编码表HCint n,i; //n是哈夫曼树叶子结点数unsigned int *w,*num; //w存放叶子结点权值char j='y';printf("演示构造哈夫曼树.\n");printf("输入需要进行编码的字符数目.\n例如:8\n");printf("然后输入每个字符出现的次数/权值.\n");printf("例如:5 29 7 8 14 23 3 11\n");printf("自动构造一棵哈夫曼树并显示哈夫曼编码.\n");printf(" 5---0110\n 29---10\n 7---1110\n 8---1111\n 14---110\n");printf(" 23---00\n 3---0111\n 11---010\n");while(j!='N'&&j!='n'){printf("请输入字符数目:");scanf("%d",&n); //输入字符数目if(n<=1) {printf("该数不合理!\n");continue;}w=(unsigned int*)malloc(2*n*sizeof(unsigned int)); //开辟空间存放权值num=(unsigned int*)malloc(2*n*sizeof(unsigned int));printf("请输入各字符出现的次数/权值:\n");for(i=0;i<n;i++) scanf("%d",&w[i]); //输入各字符出现的次数/权值CreateHuffmanTree(HT,w,n); //生成哈夫曼树HuffmanCoding(HT,HC,n,w); //进行哈夫曼编码PrintHuffmanCode(HC,w,n,num); //显示哈夫曼编码printf("\n");drawHT(n,w,num);printf("哈夫曼树构造完毕,还要继续吗?(Y/N)");free(w);free(num);scanf(" %c",&j);}}void CreateHuffmanTree(HuffmanTree &HT,unsigned int *w,int n){//w存放n个结点的权值,将构造一棵哈夫曼树HTint i,m;int s1,s2;HuffmanTree p;if(n<=1) return;m=2*n-1; //n个叶子结点的哈夫曼树,有2*n-1个结点HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode)); //开辟2*n各结点空间for(p=HT+1,i=1;i<=n;++i,++p,++w) //进行初始化{ p->weight=*w;p->parent=0;p->lchild=0;p->rchild=0;}for(;i<=m;++i,++p){p->weight=0;p->parent=0;p->lchild=0;p->rchild=0;}for(i=n+1;i<=m;++i) //建哈夫曼树{Select(HT,i-1,s1,s2);//从HT[1...i-1]中选择parent为0且weight最小的两个结点,其序号分别为s1和s2HT[s1].parent=i; HT[s2].parent=i; //修改s1和s2结点的父指针parentHT[i].lchild=s1; HT[i].rchild=s2; //修改i结点的左右孩子指针HT[i].weight=HT[s1].weight+HT[s2].weight; //修改权值}}void HuffmanCoding(HuffmanTree HT,HuffmanCode &HC,int n,unsigned int* w) {//将有n个叶子结点的哈夫曼树HT进行编码,所编的码存放在HC中//方法是从叶子到根逆向求每个叶子结点的哈夫曼编码int i,c,f,start;char *cd;HC=(HuffmanCode)malloc((n*2)*sizeof(char *)); //分配n个编码的头指针向量cd=(char *)malloc(n*sizeof(char)); //开辟一个求编码的工作空间cd[n-1]='\0'; //编码结束符for(i=1;i<2*n;++i) //逐个地求哈夫曼编码{start=n-1;//编码结束位置if(i>n)w[i-1]=HT[i].weight;for(c=i,f=HT[i].parent;f!=0;c=f,f=HT[f].parent) //从叶子到根逆向求编码{if(HT[f].lchild==c)cd[--start]='0'; //若是左孩子编为'0'elsecd[--start]='1'; //若是右孩子编为'1' }HC[i]=(char *)malloc((n-start)*sizeof(char)); //为第i个编码分配空间strcpy(HC[i],&cd[start]); //将编码从cd复制到HC中}free(cd); //释放工作空间}void PrintHuffmanCode(HuffmanCode HC,unsigned int *w,int n,unsigned int *num) {//显示有n个叶子结点的哈夫曼树的编码表int i,j,temp,len,x,ly=0;float mux=0;j=powlen(n);printf("HuffmanCode is :\n");for(i=1;i<2*n;i++){temp=atoi(HC[i]);len=strlen(HC[i]);if(i<=n){printf(" %3d---",w[i-1]);puts(HC[i]);mux+=len*w[i-1];ly+=w[i-1];}x=(int)pow(2.0,len);num[i-1]=mstep(temp)+x-1;}mux/=ly;printf("\n");printf("压缩比是%f",j/mux);}void Select(HuffmanTree HT,int t,int&s1,int&s2){//在HT[1...t]中选择parent不为0且权值最小的两个结点,其序号分别为s1和s2 int i,m,n;m=n=10000;for(i=1;i<=t;i++){if(HT[i].parent==0&&(HT[i].weight<m||HT[i].weight<n))if(m<n){n=HT[i].weight;s2=i;}else{m=HT[i].weight;s1=i;}}if(s1>s2) //s1放较小的序号{i=s1;s1=s2;s2=i;}}int mstep(int a){int i=1,x=0,mod;if(a==0)return 0;while(a){mod=a%10;if(mod==1){x=x+i;}a=a/10;i=i*2;}return x;}void ptspace(int x){int i=0;for(i=0;i<x;i++)printf(" ");}void drawHT(int n,unsigned int *w,unsigned int*num){int i=0,j=1,k=1,m=2*n-1,xu=1,t=2;int x[500]={0};for(i=0;i<2*n-1;i++){x[num[i]]=w[i];}i=0;do{ptspace(64/t);for(xu=j;(xu<j*2);xu++){if(x[xu-1]!=0){printf("%d",x[xu-1]);i++;}elseprintf(" ");ptspace(2*64/t-1);}t*=2;j*=2;printf("\n");}while(i<2*n-1);}int powlen(int n){int i=2,j=1;float mux=0;while(n>i){i=i*2;j=j+1;}return j;}四.所输入的数据及运行结果1.2.五.实验心得通过此次实验,对于此次实验要求中的程序设计有了一定的认识。

计算方法实验指导书.

计算方法实验指导书.

计 算 方 法实 验 指 导 书彭彬计算机技术实验中心2012年3月· 实验环境: VC++ 6.0· 实验要求:在机房做实验只是对准备好的实验方案进行验证,因此上机前要检查实验准备情况,通过检查后方可上机。

没有认真准备的学生不能上机,本次实验没有分数。

实验中要注意考察和体会数值计算中出现的一些问题和现象:误差的估计,算法的稳定性、收敛性、收敛速度以及迭代初值对收敛的影响等。

· 关于计算精度:如果没有特别说明,在计算的过程中,小数点后保留5位数字,最后四舍五入到小数点后四位数字。

迭代运算的结束条件统一为51102-⨯。

在VC++ 6.0中,可使用setprecision 在流的输出中控制浮点数的显示(缺省显示6位)。

演示如下: # include<iostream.h> # include<math.h> # include<iomanip.h>//输出6位精度,输出左对齐cout<<setprecision(6)<<setiosflags(ios::left); //设置输出宽度为12(不够将补充0) cout<<setw(12)<<coeff[i];· 关于图形绘制本课程个别实验要求画出函数的曲线,所有画图题目均要求用MFC 完成。

利用VC++6.0的MFC 画图,先要建立一个工程,然后在***View 中加入自定义变量、自定义函数等,最后在OnDraw ()方法中调用自定义函数。

也可以把代码直接写入OnDraw ()方法中。

画曲线有两种方法,(一)一句坐标逐个打点(用SetPixel()函数),(二)先把当前光标移动(MoveTo()函数)到曲线的始点,再用LineTo ()函数画线。

线的样式由画笔决定。

对封闭区域可以填充,填充的样式由画刷决定。

在VC++6.0中,先新建一个MFC AppWizard(exe)类型的工程(建立工程时,“应用程序类型”选择“单文档”;“是否包含数据库”选择“不包含数据库”;其它选择缺省),然后在“ClassView ”中选择XXView 类文件加以操作。

C语言程序设计实验六函数答案《西北民大电气学院》

C语言程序设计实验六函数答案《西北民大电气学院》

实验六函数一,实验目的:1,掌握定义函数的方法.2,掌握函数实参与形参的对应关系,以及"值传递"的方式.3,掌握函数的嵌套调用和递归调用的方法.4,掌握全局变量和局部变量动态变量,静态变量的概念和使用方法.二,实验准备:1,复习函数调用的基本理论知识.2,复习函数的嵌套调用和递归调用的方法.3,复习全局变量,局部变量;静态变量,动态变量;外部变量等概念和具体使用. 4,源程序.三,实验步骤及内容:1,运行程序并回答问题(1)程序main(){ play(3);}void print_star(){ printf("* * * * * * * * * *\n")}void print_message(){ printf("Good Friend! \n");}void play(n)int n;{ int i;for(i=1;i<=n;++i){ print_star();print_message();}}问题:运行后出现什么错误为什么应如何修改请上机调试.修改:main(){ play(3);}void print_star(){ printf("* * * * * * * * * *\n");(缺少分号)}void print_message(){ printf("Good Friend! \n");}play(n)(原先void的与声明类型不同)int n;{ int i;for(i=1;i<=n;++i){ print_star();print_message();}getch();}运行结果(2)以下程序用于计算1+2+3+4+5.main(){ int i,sum;for(i=1;i<=5;++i)sum=add(i);printf("sum=%d\n",sum);getch();}add (a)int a;{static int s=0;s=s+a;return(s);}运行结果:问题:此程序能否得到正确结果为什么请在不增加语句的条件下,修改程序并上机调试.(3)程序int x=567,y=890;main(){ printf("x=%d,y=%d\n",x,y);}运行结果:问题:运行程序后出现什么错误为什么如何修改答:定义位置出错,y的定义在主函数之后了,将y的定义改在和x一样的位置处。

《C语言程序设计》实验报告(实验1-11) 2013.3

《C语言程序设计》实验报告(实验1-11) 2013.3

《C语言程序设计》实验报告2012~2013学年第二学期班级姓名学号指导教师实验一实验项目名称:C程序的运行环境和运行C程序的方法所使用的工具软件及环境:Visual C++ 6.0一、实验目的:1.了解在Visual C++ 6.0环境下如何编辑、编译、连接和运行一个C程序;2.通过运行简单的C程序,初步了解C源程序的特点。

二、预习内容:教材《C语言程序设计教程》第1章。

三、实验内容:1. 在Visual C++ 6.0环境下输入并运行下面的程序:#include <stdio.h>int main( ){printf("This is a C program.\n");return 0;}2. 在Visual C++ 6.0环境下输入下面的程序(有语法错误),编译、连接、调试该程序,直至程序无语法错误,然后运行程序,并观察分析运行结果。

#include <stdio.h>int main( ){int a,b,suma=3;b=4;sun=a+b;print(“%d+%d=%d\n”,a,b,sum);return 0;}四、实验结果:1. 运行结果(或截图):2. (1) 改正后的源程序:(2) 运行结果(或截图):五、思考题:1. 一个C程序上机的步骤有哪些?答:2. 组成C程序的基本单位是函数,一个函数包括哪几个部分?答:成绩指导教师签名实验二实验项目名称:数据类型、运算符和表达式所使用的工具软件及环境:Visual C++ 6.0一、实验目的:1.掌握整型、实型与字符型这三种基本类型的概念;2.掌握常量及变量的使用方法;3. 掌握基本算术运算符及其表达式的使用方法;4. 掌握++、--运算符、赋值运算符及其表达式的使用方法。

二、预习内容:教材《C语言程序设计教程》第2章。

三、实验内容:1. 在Visual C++ 6.0环境下输入下面的程序,编译、连接、调试该程序。

c 实验报告

c 实验报告

c 实验报告C实验报告一、实验目的通过本次实验,我将学会使用C语言编写一个简单的计算器程序,进一步掌握C语言的变量和运算符的使用方法,提高自己的编程能力。

二、实验内容本次实验要求编写一个计算器程序,具有以下功能:1. 实现基本的加、减、乘、除四则运算;2. 可以进行整数和浮点数运算;3. 用户输入数字和运算符后,计算并显示结果。

三、实验步骤1. 首先,声明并定义一个函数,用于进行四则运算。

函数的参数有两个数和一个运算符,返回值为计算的结果。

2. 在主函数中,通过用户输入实现接收数字和运算符的功能,并将其赋值给变量num1、num2和op。

3. 调用之前定义的函数,将num1、num2和op作为参数传递给该函数,获得计算结果并赋值给变量result。

4. 输出计算结果。

四、实验源代码及结果```c#include <stdio.h>float calculate(float num1, float num2, char op) {float result;switch (op) {case '+':result = num1 + num2;break;case '-':result = num1 - num2;break;case '*':result = num1 * num2;break;case '/':if (num2 == 0) {printf("Error: Dividing by zero is not allowed.\n"); return 0;}result = num1 / num2;break;default:printf("Error: Invalid operator.\n");return 0;}return result;}int main() {float num1, num2, result;char op;printf("Please enter the first number: ");scanf("%f", &num1);printf("Please enter the operator (+, -, *, /): ");scanf(" %c", &op);printf("Please enter the second number: ");scanf("%f", &num2);result = calculate(num1, num2, op);printf("The result is: %.2f\n", result);return 0;}```运行结果:Please enter the first number: 5.5Please enter the operator (+, -, *, /): *Please enter the second number: 2.0The result is: 11.00五、实验总结通过本次实验,我学会了使用C语言编写一个简单的计算器程序,提高了自己的编程能力。

计算方法实验报告

计算方法实验报告

1. 熟悉并掌握常用的计算方法,包括数值积分、数值微分、线性方程组求解等。

2. 培养运用计算机进行数值计算的能力。

3. 增强对数值计算误差的分析和判断能力。

二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 库:NumPy、SciPy、Matplotlib三、实验内容1. 数值积分(1)函数:f(x) = x^2(2)区间:[0, 1](3)方法:梯形法、辛普森法、复合梯形法2. 数值微分(1)函数:f(x) = e^x(2)点:x = 1(3)方法:有限差分法、中点法、牛顿法3. 线性方程组求解(1)方程组:2x + 3y - z = 8-x + 2y + 2z = -3x - y + 3z = 5(2)方法:高斯消元法、LU分解法1. 数值积分(1)编写函数f(x) = x^2(2)定义积分区间[0, 1](3)实现梯形法、辛普森法、复合梯形法(4)计算积分结果2. 数值微分(1)编写函数f(x) = e^x(2)定义点x = 1(3)实现有限差分法、中点法、牛顿法(4)计算导数结果3. 线性方程组求解(1)定义方程组系数矩阵A和常数向量b(2)实现高斯消元法、LU分解法(3)求解方程组(4)输出解向量x五、实验结果与分析1. 数值积分(1)梯形法:积分结果约为1.6667(2)辛普森法:积分结果约为1.6447(3)复合梯形法:积分结果约为1.6458分析:三种方法计算结果接近,但辛普森法误差最小。

2. 数值微分(1)有限差分法:导数结果约为2.7183(2)中点法:导数结果约为2.7183(3)牛顿法:导数结果约为2.7183分析:三种方法计算结果一致,误差较小。

3. 线性方程组求解(1)高斯消元法:解向量x = [2, 1, 1](2)LU分解法:解向量x = [2, 1, 1]分析:两种方法求解结果一致,且解向量正确。

六、实验总结本次实验通过Python编程,实现了数值积分、数值微分和线性方程组求解。

《计算方法》实验报告

《计算方法》实验报告

《计算方法》实验报告一、实验目的本次《计算方法》实验的主要目的是通过实际操作和编程实现,深入理解和掌握常见的计算方法在解决数学问题中的应用。

通过实验,提高我们运用数学知识和计算机技术解决实际问题的能力,培养我们的逻辑思维和创新能力。

二、实验环境本次实验使用的编程语言为 Python,使用的开发工具为 PyCharm。

实验运行的操作系统为 Windows 10。

三、实验内容与步骤1、线性方程组的求解实验内容:使用高斯消元法和LU分解法求解线性方程组。

实验步骤:首先,定义线性方程组的系数矩阵和常数向量。

对于高斯消元法,通过逐步消元将系数矩阵化为上三角矩阵,然后回代求解。

对于 LU 分解法,将系数矩阵分解为下三角矩阵 L 和上三角矩阵 U,然后通过向前和向后代换求解。

2、插值与拟合实验内容:使用拉格朗日插值法、牛顿插值法进行插值计算,并使用最小二乘法进行曲线拟合。

实验步骤:对于拉格朗日插值法和牛顿插值法,根据给定的节点数据计算插值多项式。

对于最小二乘法,根据给定的数据点和拟合函数形式,计算拟合参数。

3、数值积分实验内容:使用矩形法、梯形法和辛普森法计算定积分。

实验步骤:定义被积函数和积分区间。

对于矩形法,将积分区间等分为若干小区间,每个小区间用矩形面积近似积分值。

梯形法通过构建梯形来近似积分值。

辛普森法利用抛物线来近似积分值。

4、常微分方程的数值解法实验内容:使用欧拉法和改进的欧拉法求解常微分方程。

实验步骤:给定常微分方程和初始条件。

按照欧拉法和改进的欧拉法的公式进行迭代计算,得到数值解。

四、实验结果与分析1、线性方程组的求解高斯消元法和 LU 分解法都能成功求解线性方程组,但在计算效率和数值稳定性上可能存在差异。

对于规模较大的线性方程组,LU 分解法通常更具优势。

实验中通过对比不同方法求解相同线性方程组的结果,验证了算法的正确性。

2、插值与拟合拉格朗日插值法和牛顿插值法在给定节点处能够准确插值,但对于节点之外的区域,可能会出现较大偏差。

C实验报告--6c

C实验报告--6c

实验六函数
一、实验目的与要求
1. 掌握函数的定义方法
2. 掌握函数的调用及函数声明
3. 掌握函数实参与形参的对应关系及“值传递”,“地址传递”的方式
4. 掌握函数的嵌套调用和递归调用方法
二、实验内容
1. 编程实现将三个数中的大数输出在前,小数输出在后。

2.在数组score中存放一个学生的10个成绩,分别用函数求:(1)成绩的平均分;(2)成绩中的最高分数
3.求两个整数的最大公约数和最小公倍数,设计一个求最大公约数的函数和一个最小公倍数的函数。

4 用递归算法处理Fibonicci数列问题,计算Fibonicci数列的第七项f(7)递归公式:f(n)= 1 (n=1)
1 (n-2)
f(n-1)+f(n-2) (n>2)。

c语言实验报告

c语言实验报告

c语言实验报告一、引言C语言是一种广泛应用于计算机科学和软件开发领域的编程语言。

它的简洁性、高效性以及跨平台的特性使其成为许多开发人员的首选。

本篇实验报告将介绍我在学习C语言过程中进行的几个实验项目,并详细记录每个实验的步骤、结果以及对C语言的理解。

二、实验一:Hello World!在学习任何一门编程语言时,第一个示例程序往往是输出"Hello World!"。

这个简单的程序虽然看似微不足道,却能够帮助初学者了解基本的编译和运行过程。

在实验中,我使用了C语言的基本语法,编写了一个简单的Hello World程序,并成功地将其编译并运行。

这个小小的成就让我对C语言有了初步的认识和信心。

三、实验二:计算器程序为了更深入地理解C语言的数据类型和运算符,我决定编写一个简单的计算器程序。

这个程序可以实现基础的四则运算和一些简单的数学函数,如平方根和求幂等。

通过这个实验,我学会了如何使用变量、条件语句和循环结构来实现计算功能,并通过不断调试和修改,使程序更加健壮和高效。

四、实验三:数组与排序数组是C语言中非常重要的概念,在实验三中,我探索了数组的用法和特性,并将其应用于一个排序算法中。

我选择了冒泡排序作为实验的排序算法,通过比较相邻元素的大小并不断交换位置,最终将数组中的元素按照升序排列。

这个实验使我更加熟悉了数组的操作,也加深了我对算法思想和效率的理解。

五、实验四:文件操作在现实世界中,大部分的应用程序需要与文件进行交互。

为了学习如何使用C语言进行文件操作,我进行了实验四。

在这个实验中,我编写了一个小程序,能够读取一个文本文件的内容,统计其中不同字符的数量,并将结果输出到另一个文件。

通过这个实验,我了解了如何打开、关闭和读写文件,也学习了异常处理以及文件操作的一些注意事项。

六、实验五:数据结构和指针C语言提供了指针的机制,允许直接访问和操纵内存中的数据。

为了更深入地理解指针和数据结构之间的关系,我进行了实验五。

计算方法编程实验(C)

计算方法编程实验(C)

计算方法编程实验(C)计算方法实验学号:2016300211 姓名:曹文博实验一:用迭代法求方程exp(x)+10x-2=0的根,要求精度为10-4 运行截图:程序代码:#include#includedouble x0=1; //x0为初值double f(double x){return (2-pow(2.71828,x))/10; //迭代函数}int main(){double x=0;while(fabs(x-x0)>0.0001) //精度要求{x0=x;x=f(x0);}printf("所求方程解为:%lf\n",x);return 0;}实验二:用反幂法求矩阵A=---7232133312的与p= -13最接近的特征值及对应的特征向量,要求特征值的迭代误差不超过10-5。

运行截图:程序代码:#include#include#include#define N 3 //设置矩阵大小double a[N][N]={{-12,3,3},{3,1,-2},{3,-2,7}}; //设定矩阵数值double x0[N]={1,0,0}; //设定初始向量void Doolittle(double a[N][N]); //对矩阵进行Doolittle分解double Solve(double a[N][N]); //对LU分解后的矩阵求其最小特征值int main(){double answer;a[0][0]+=13;a[1][1]+=13;a[2][2]+=13; //本题目中特殊条件Doolittle(a);answer=Solve(a);printf("所求特征值为:%lf\n",answer-13);}void Doolittle(double a[N][N]){double b[N][N];int i,j,k,m;for (j=0;j<n;j++)< bdsfid="138" p=""></n;j++)<>b[0][j]=a[0][j];for (i=1;i<n;i++)< bdsfid="141" p=""></n;i++)<>b[i][0]=a[i][0]/b[0][0];for (k=1;k<n;k++)< bdsfid="144" p=""></n;k++)<> {for (j=k;j<n;j++)< bdsfid="147" p=""></n;j++)<> {double s=0;for (m=0;m<k;m++)< bdsfid="151" p=""></k;m++)<> s+=b[k][m]*b[m][j];b[k][j]=a[k][j]-s;}for (i=k+1;i<n;i++)< bdsfid="156" p=""></n;i++)<> {double s=0;for (m=0;m<k;m++)< bdsfid="160" p=""></k;m++)<> s+=b[i][m]*b[m][k];b[i][k]=(a[i][k]-s)/b[k][k];}}for (i=0;i<n;i++)< bdsfid="166" p=""></n;i++)<>for (j=0;j<n;j++)< bdsfid="168" p=""></n;j++)<>a[i][j]=b[i][j];}double Solve(double a[N][N]){double y[N],x[N],value[2];int i,j,k,count=0;while(1){count++;y[0]=x0[0]/a[0][0];for (k=1;k<n;k++)< bdsfid="180" p=""></n;k++)<>{double s=0;for (j=0;j<k;j++)< bdsfid="184" p=""></k;j++)<>s+=a[k][j]*y[j];y[k]=(x0[k]-s);}x[N-1]=y[N-1]/a[N-1][N-1];for (k=N-2;k>=0;k--){double s=0;for (j=k+1;j<n;j++)< bdsfid="193" p=""></n;j++)<>s+=a[k][j]*x[j];x[k]=(y[k]-s)/a[k][k];}value[0]=x[1]/x0[1];if (count>=2&&fabs(value[1]-value[0])<0.00001)break;value[1]=value[0];for (i=0;i<n;i++)< bdsfid="202" p=""></n;i++)<>x0[i]=x[i];}return 1/value[0];}实验三:简单迭代法求解线性代数方程组,程序需要具有迭代法收敛的预判断。

计算方法实验.

计算方法实验.

计算方法实验.计算方法实验指导姓名______________学号______________院系______________专业______________哈尔滨工业大学计算方法实验指导根据实际问题建立的数学模型,一般不能求出所谓的解析解,必须针对数学模型的特点确定适当的计算方法,编制出计算机能够执行的计算程序,输入计算机,进行调试,完成运算,如果计算结果存在问题或不知是否正确,还需要重新确定新的计算方法,再编制出计算程序,输入计算机,重新调试,完成运算,直至获得正确的计算结果,这就是数值计算的全部过程。

学生在学习“计算方法”和“高级语言”等课程时普遍存在的问题是:只会套用教科书中的标准程序进行数值计算,很少有人能够独立地将学过的数值算法编制成计算机程序,至于灵活应用已经掌握的算法求解综合性较大的课题,则更是困难的事情。

编写《计算方法实验指导》的目的是:突出数值计算程序结构化的思想。

提高学生的编程能力,加深对“计算方法”课程内容的理解和掌握,为”计算方法“课程的教学服务,进一步奠定从事数值计算工作的基础。

具体地1.根据“计算方法”课程内容的特点,给出五个典型算法的分析流程,学生可以利用所掌握的“高级语言”顺利地编制出计算机程序,上机实习,完成实验环节的教学要求。

2.所有的计算实习题目都经过任课教师逐一检验,准确无误。

3.充分利用循环的思想、迭代的思想,给出算法结构描述和程序语言的对应关系,有利于学生编制相应的程序。

4.结合实习题目,提出实验要求,要求学生按规范格式写出相应的实验报告,实验报告成绩记入期末总成绩。

需要提醒学生:不能简单地套用现成的标准程序完成实验题目,应当把重点放在对算法的理解、程序的优化设计、上机调试和计算结果分析上,否则就失去实验课的目的啦。

5. 五个具体的实验题目是:实验题目1拉格朗日(Lagrange)插值实验题目2龙贝格(Romberg)积分法实验题目3四阶龙格—库塔(Runge —Kutta)方法实验题目4牛顿(Newton)迭代法实验题目5高斯(Gauss)列主元消去法要求必须完成其中三个(如果全部完成更好)。

C语言算法实验12

C语言算法实验12
3、实验步骤
1、在Code::blocks创建一个project
2、按题目要求编写程序
3、编译、执行
4、调试
5、运行成功
4、程序及运行结果(或实验数据记录及分析)
2、C语言基本语法
实验内容:1、双向冒泡排序的基本思想是首先从左向右进行一趟冒泡,将最大数移动到最右边,再从右向左进行一趟冒泡,将最小数移动到最左边,重复这个过程,直到数组有序。设计双向冒泡排序程序,并编写测试用例运行程序。
2、编写一个函数int merge(int a[],int lena,int b[],int lenb,int c[]),将两个递增有序的数组a(长度为leba)与b(长度为lenb)有序合并到数组c,函数返回c的长度。请编写测试程序进行测试。
江西师范大学计算机信息工程学院学生实验报告
课程名称
高级语言程序上机操作
指导教师
成绩
1、实验目的
1、掌握一维数组级二维数组的定义与初始化方法。
2、理解向函数传递数组的方法。
3、掌握基于数组的基本算法。
4、能够设计基于数组的递归算法程序。
2、实验原理和内容
实验原理:1、Code::blocks编译环境

C语言实验大

C语言实验大

《C语言程序设计》实验教学大纲一、适用范围大纲适用于计算机科学与技术专业本科教学使用。

二、课程名称《C语言程序设计》(实验)三、学时数与学分总学时:84,总学分:4;实验学时:28四、教学目的和基本要求(一)目的:通过C程序设计实验,培养学生对学习程序设计的兴趣,使学生全面了解C 语言的特点,不仅要熟练掌握C语言的基础知识、基本算法,更重要的是让学生掌握程序设计的思想和方法,培养学生程序开发和设计的能力。

(二)基本要求:了解和熟悉C语言程序开发的环境;学会上机调试程序,善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行,达到实验知识和理论知识的融会贯通。

上机实验前,学生必须事先根据题目的内容在实验报告纸上编好程序,然后在实验时输入程序、调试程序,直至运行结果正确为止,上机结束后,应整理出实验报告。

五、实验教学实施方法1 按照本学期新生教学时间14周计算,每周一次实习,共安排13次实习内容,1次考核。

2 学生应按专业实验室中的固定座位上机,应在D盘建立一个以“学号+姓名”的子目录,所有做完的程序放置于此目录中提供检查。

学生实习的考核方式,每次实习结束时教师给出本次实验成绩,期末根据考核情况综合给出实验成绩。

3 每位教师负责一个教学班的实习指导,教师要检查每次学生的出勤和完成程序的情况,每次都要做好记录。

教师可以根据学生的实际完成情况修改实习计划的执行进度。

4 每次试验内容分为三个部分,(1)复习课堂讲授内容的教材中的例题。

(2)必做习题。

(3)选做习题。

能够完成选做习题的同学,可以不做教材中的例题。

完成(1)为及格,(2)为良好,(3)为优秀。

六、实验项目与学时分配七、实验成绩评定办法考查:平时考核加期末机试。

实验成绩占总成绩的10%。

平时考核:占实验成绩的60%,由以下两部分组成。

实验预习和实验结果、实验报告。

期末机试:占实验成绩的40%。

1、实验预习和实验结果:上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序,直至运行结果正确为止。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算方法实验报告实验一 舍入误差与数值稳定性目的与要求: 1、 通过上机编程,复习巩固以前所学程序设计语言; 2、 通过上机计算,了解舍入误差所引起的数值不稳定性。

3、 通过上机计算,了解运算次序对计算结果的影响,从而尽量避免大数吃小数的现象。

实验内容:● 通过正反两个实例的计算,了解利用计算机进行数值计算中舍入误差所引起的数值不稳定性,深入理解初始小的舍入误差可能造成误差积累从而对计算结果的巨大影响。

● 通过实际编程,了解运算次序对计算结果的影响,了解实数运算符合的结合律和分配律在计算机里不一定成立。

●1 对 n = 0,1,2,…,20 计算定积分yn= dx 5x 1nx⎰+算法 1 利用递推公式yn = n1- 5y1n - n = 1,2,…,20取=+=⎰dx 5x 11yln6- ln5 ≈ 0.182 322 算法 2 利用递推公式515n 1y 1n -=-ynn = 20,19,…,1注意到1051dx 51dx 5x dx 61126112010201020x x x =≤+≤=⎰⎰⎰ 取730 008.0)12611051(201y20≈+≈算法一:#include<stdio.h> #include<conio.h> #include<math.h> #include"stdlib.h" void main(void) {float y_0=log(6.0)-log(5.0),y_1; int n=1;system("cls");/*清屏*/ printf("y[0]=%-20f",y_0); while(1) {y_1=1.0/n-5*y_0;printf("y[%d]=%-20f",n,y_1);/*输出*/ if(n>=20)break; y_0=y_1; n++;if(n%3==0)printf("\n"); }getch();/*保持用户屏幕*/ }算法二:#include<stdio.h> #include<conio.h> #include<math.h> #include"stdlib.h"main(){float y_0=(1/105.0+1/126.0)/2,y_1;int n=20;system("cls");/*清屏*/printf("y[20]=%-20f",y_0);while(1){y_1=1/(5.0*n)-y_0/5.0;printf("y[%d]=%-20f",n-1,y_1);if(n<=1)break;y_0=y_1;n--;if(n%3==0)printf("\n");}getch();}说明:从计算结果可以看出,算法1是不稳定的,而算法2是稳定的。

计算方法实验报告实验二 拉格朗日插值与牛顿插值一、目的与要求:熟悉拉格朗日插值多项式和牛顿插值多项式,注意其不同特点; 二、 实验内容:通过拉格朗日插值和牛顿插值多项式的两个实例的计算,了解两种求解方法,分析他们的优缺点。

三、 程序与实例 算法1.输入x i ,y i (i=0,1,2,⋯,n),令L(x n )=0; 2. 对=0,1,2,⋯,n 计算 ll i (x)=∏≠=--nij i jijx xx x 0L n ← L n +l i (x)y i程序与实例例1 已知函数表用三次拉格朗日多项式求x=0.5635的函数近似值。

拉格朗日插值: #include <stdio.h> #include <conio.h> #include <malloc.h> #include"stdlib.h"float Lagrange(float *x,float *y,float xx,int n) {int i,j;float *a,yy=0.0;a=(float *) malloc(n*sizeof(float));for (i=0;i<=n-1;i++){a[i]=y[i];for (j=0;j<=n-1;j++)if (j!=i) a[i]*=(xx-x[j])/(x[i]-x[j]);yy+=a[i];}free(a);return yy;}void main(){float x[4]={0.56160,0.56280,0.56401,0.56521}; float y[4]={0.82741,0.82659,0.82577,0.82495}; float xx=0.5635,yy;float Lagrange(float *,float *,float,int);yy=Lagrange(x,y,xx,4);system("cls");/*清屏*/printf("x=%f, y=%f\n",xx,yy);getch();}运行结果:X=0.563500,y=0.826116牛顿插值多项式算法1.输入n,xi ,yi(i=0,1,2⋯,n);2.对k=1,2,3⋯,n, i=1,2, ⋯,k计算各阶差商f(x0,x1⋯,xk);3.计算函数值Nn (x)=f(x)+f[x, x1](x- x)+⋯+f[x, x1,⋯,xn](x- x)(x- x1)⋯(x-x1-n)程序与实例例2已知函数表用牛顿插值多项式求Nn (0.596)和Nn(0.895)。

牛顿插值多项式:#include <stdio.h>#include <conio.h>#include <malloc.h>#include"stdlib.h"#define N 4void Difference(float *x,float *y,int n){float *f;int k,i;f=(float*)malloc(n*sizeof(float));for (k=1;k<=n;k++){f[0]=y[k];for (i=0;i<k;i++)f[i+1]=(f[i]-y[i])/(x[k]-x[i]);y[k]=f[k];}return;}main(){int i;float varx=0.596,b;float x[N+1]={0.4,0.55,0.65,0.8,0.9};float y[N+1]={0.41075,0.57815,0.69675,0.88811,1.02652}; Difference(x,(float*)y,N);system("cls");/*清屏*/b=y[N];for (i=N-1;i>=0;i--) b=b*(varx-x[i])+y[i];printf("NInterp(%f)=%f",varx,b);getch();}运行结果:NInterp<0.596000>=0.631918实验三 复化辛卜生法,龙贝格法一、 目的与要求:通过实际计算体会各种方法的精确度;会编写用复化辛卜生、龙贝格算法求定积分的程序。

二、 实验内容:通过实际计算体会各种方法的精确度并且会编写用复化辛卜生、龙贝格算法求定积分的程序三、 程序与实例 复化辛卜生公式算法:复化辛卜生公式为S n =h/6∑∑+-=+++)]()2/(4)([110k k kn k x f h x f xf ,计算过程为:1.令,/)(n a b h -= ),2/(1h a f s += ;02=s 2.对1,,2,1-=n k 计算),2/(11h kh a f s s +++= )(22kh a f s s ++= 3.))(24)((6/21b f s s a f h s +++= 。

程序与实例例 用复化辛卜生法计算积分 dx x I ⎰+=102)1/(1#include <conio.h> /* 此头函数请不要删除 */ #include <stdio.h> float N,A=0,B=1,X; float F(float x);float Si() //复化辛普生公式 {float i,n,h,t,s1,s2=0; n=N; h=(B-A)/n; s1=F(A+h/2);for(i=1;i <n;i=i+1) {X=A+i*h+h/2; s1=F(X)+s1; }for(i=1;i<n;i=i+1) {X=A+i*h; s2=F(X)+s2; }t=h*(F(A)+4*s1+2*s2+F(B))/6; return(t); }float F(float x) //被积分函数f(x) {float f; f=1/(1+x*x); return(f); }double main() //主函数 {float z;printf("\n 输入n 的值:\n "); scanf( "%f",&N); {z=Si();printf( "利用复化辛普生公式计算 "); }printf( "结果为:%f \n",z);getch(); /* 此语句请不要删除*/ }运行结果: S(2)=0.785392 S(4)=0.785398S(5)=0.785398计算方法实验报告实验四 常微分方程的数值解法目的与要求:熟悉求解常微分方程初值问题的有关方法和理论,主要是改进欧拉法 会编制上述方法的计算程序针对实习题编制程序,并上机计算其所需要的结果; 二、 实验内容:熟悉求解常微分方程初值问题的有关方法和理论,主要是改进欧拉法,体会其解法的功能。

程序与实例 改进欧拉方法 算法概要解一阶常微分方程初值问题⎩⎨⎧=='00)(),(y x y y x f y b x a ≤≤将区间[a,b]作n 等分,取步长nab h -=。

欧拉公式为),(1i i i i y x hf y y +=+ 梯形公式为[]),(),(2111+++++=i i i i i i y x f y x f hy y 改进欧拉法,采用公式()()[]⎪⎩⎪⎨⎧++=+=++++1111,,2),(i i i i i i i i i i y x f y x f hy y y x hf y y 或表为⎪⎪⎪⎩⎪⎪⎪⎨⎧+=+=+=++)(21),(),(11c p i p i i c i i i p y y y y x hf y y y x hf y y 实验:30≤≤x实验程序:#include <stdio.h> void main(void) {float x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,y0,y1,y2,y3,y4,y5,y6,y7,y8,y9,h;x0=0.3,x1=0.6,x2=0.9,x3=1.2,x4=1.5,x5=1.8,x6=2.1,x7=2.4,x8=2.7,x9=3.0,y0=2.0,h=0.3;y1=y0+h*(y0-(2*x0)/y0);y2=y1+h*(y1-(2*x1)/y1);y3=y2+h*(y2-(2*x2)/y2);y4=y3+h*(y3-(2*x3)/y3);()⎩⎨⎧=-='202y xy yy5=y4+h*(y4-(2*x4)/y4);y6=y5+h*(y5-(2*x5)/y5);y7=y6+h*(y6-(2*x6)/y6);y8=y7+h*(y7-(2*x7)/y7);y9=y8+h*(y8-(2*x8)/y8);printf("%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n",y1,y2,y3,y4,y5,y6,y7,y8 ,y9);}实验结果:实验五方程求根一、目的与要求:通过对二分法和牛顿迭代法作编程练习和上机运算,进一步体会它们在方程求根中的不同特点;比较二者的计算速度和计算精度。

相关文档
最新文档