高等数学 实验报告
实验一
一、实验题目
观察数列极限
二、实验目的和意义
利用数形结合的方法观察数列的极限,可以从点图上看出数列的收敛性,以及近似地观察出数列的收敛值;通过编程可以输出数列的任意多项值,以此来得到数列的收敛性。通过此实验对数列极限概念的理解形象化、具体化。
三、计算公式
四、程序设计
五、程序运行结果
六、结果的讨论和分析
由运行结果和图像可知,重要极限在2.5到2.75之间,无限趋近于e。
实验二
一、 实验题目
作出函数的函数图形和泰勒展开式(选取不同的和值)图形,并将图形进行比较。
二、 实验目的和意义
1. 尝试使用数学软件Mathematica计算函数的各阶泰勒多项式。
2. 通过绘制其曲线图形,进一步理解泰勒展开与函数逼近的思想。
三、 程序设计
f[x_]:=Log[Cos[x^2]+Sin[x]];
Plot[f[x],{x,-Pi/4,Pi/4},PlotLabel®"A grapj of f[x]"];
For[i=1,i£10,a=Normal[Series[f[x],{x,0,i}]];
Print["n=",i];
Plot[{a,f[x]},{x,-Pi/4,Pi/4},PlotStyle®{RGBColor[0,0,1],RGBColor[1,0,0]}];
i=i+1];
For[x0=-Pi/4,x0£Pi/4,a=Normal[Series[f[x],{x,x0,10}]];Print["x0=",x0];Plot[{a,f[x]},{x,-Pi/4,Pi/4},PlotStyle®{RGBColor[0,1,0],RGBColor[1,0,0]}];x0=x0+Pi/8]
四、 程序运行结果
n=1
n=2 n=3
n=4 n=5
n=6 n=7
n=8 n=9
n=10 Xo =-(p/4)
Xo =-(p/8) Xo=0
Xo =p/8 Xo =p/4
五、 结果的讨论与的分析
分析:由实验结果可知:泰勒多项式的阶数n越大,多项式的图像与函数图像越接近。
实验三
一、实验名称:定积分的近似计算
分别用梯形法、抛物线法计算定积分的近似值(精确到0.0001)
二、实验目的:
为了解决实际问题中遇到的一些被积函数不能用算式给出,而通过图形或表格给出,或是一些虽然能够用算出,它的的原函数却很困难的甚至于原函数可能是非初等函数的定积分。
三、实验程序:
(1) 梯形法:
f[x_]:=Sin[x^2];
a=0;b=Pi/2;m2=f''[0];dalta=10^(-4);n0=100;
t[n_]:=(b-a)/n*((f[a]+f[b])/2+Sum[f[a+i*(b-a)/n,{i,1,n-1}]]);
Do[Print[n," "N[t[n]]]];
If[(b-a)^3/(12n^2)*m2<dalta,Break[],If[n?n0,Print["Fail"]],{n,n0}]
(2) 抛物线法:
f[x_]:=Sin[x^2];
a=0;b=Pi/2;m4=D[f[x],{x,4}/.x]®0;
dalta=10^(-4);k0=100;
p[k_]:=
(b-a)/(6k)*
(f[a]+f[b]+2Sum[f[a+i*(b-a)/(2k)],{i,2,2k-2,2}]+
4Sum[f[a+i*(b-a)/(2k)],{i,1,2k-1,2}]);
Do[Print[k," ",N[p[k]]];
If[((b-a)^5)/(180*(2k)^4)*m4<dalta,Break[],
If[k?k0,Print["fail"]],{k,k0}]
四、运行结果:
五、结果的讨论和分析:
实验过程中,当用不同的方法,要求的精度相同时,输出的数据数可能不同;当用同一种方法时,如果改变循环次数则输出的数据个数也随之改变,当改变a和b的值时,出的结果也会不同。
第二篇:实验报告4
实验报告
课程 C语言程序设计(二级) 实验名称 实验四 循环结构程序设计 第 1 页
专业____数学类_____ 班级___三班 ___ 学号__ _ _ 姓名
实验日期: 20##年 3 月 27 日 报告退发 (订正 、 重做)
一、实验目的
1. 掌握循环结构程序设计中一些常用算法.
2. 掌握循环结构的程序设计方法,熟练使用while语句,do-while语句和for语句.
3. 掌握选择结构与循环结构嵌套的程序设计方法.
4. 掌握在程序设计中使用循环和嵌套的方法解决简单的算法问题(如数的分离,穷举,迭代,递推等).
二、实验内容
上机运行本章4个例题,熟悉所用系统的上机方法与步骤。(指导用书p36)
4.从键盘输入若干个字符,直到换行符结束。统计并输出所输入的空格,大写字母,小写字母以及其他字符(不含换行符)的个数
6.按照下列公式计算级数和:
Sn=1-1/3+1/5-1/7+1/9……+[(-1)^n+1]/(2*n-1) (n>=1)
8.密码问题:先输入数字k(0<k<10),再将输入的一行字符中的每个英文字母按照其后续的第k个字母输出,字母超出最后一个”Z”或”z”时,循环转换,数字不转换。请编程实现。
10.打印输出: x 2*x 3*x 4*x
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16
三、实验环境
Windows XP ,Turbo c 2.0
四、实验步骤 五、实验结果与讨论
4.程序:
#include<stdio.h>
void main ()
{
char ch=' ';
int i=0,j=0,k=0,m=-1;
do{
if (ch>='a'&&ch<='z') 第 2 页
i++;
else if (ch>='A'&&ch<='Z')
j++;
else if (ch==' ')
m++;
else
k++;
}
while((ch=getchar())!='\n');
printf("small letter=%d,capital letter=%d\n",i,j);
printf(" space=%d,other=%d\n",m,k);
}
输入:QWzx 98 输出:small letter=2,capital letter=2
space=2,other=2
6.程序:
#include <stdio.h>
int main()
{
int i,n,sign;
float sum;
sign = 1;
sum = 0;
printf("n:");
scanf("%d",&n);
for(i=1; i<=n; i++)
{
sum += sign*1.0/(2*i-1);
sign = -sign;
}
printf("Sn=:%f\n", sum);
}
输入:2 输入:3
输出结果:n:2 输出结果:n:3
Sn=0.666667 Sn=0.866667
8.程序:
#include<stdio.h>
void main()
{
int k;
char chr;
printf("input k:");
scanf("%d",&k);
scanf("%c",&chr);
chr=getchar(); 第 3 页
while(chr!='\n')
{
if((chr>='a'&&chr<='z')||(chr>='A'&&chr<='Z'))
{ chr=chr+k;
if((chr>'z')||(chr>'Z'&&chr<='Z'+k))
chr=chr-26;
}
printf("%c",chr);
chr=getchar();
}
}
输入:3 zxv@32 输入:3 asf!69
输出结果:input k:3 输出结果:input k:3
zxv@32 asdf!69
cay@32 dvgi!69
10.程序:
#include<stdio.h>
void main()
{
int a,b,c,d,x=1;
printf( "x" " ""2*x"" ""3*x"" ""4*x\n");
for(x=1;x<=4;x++)
{
a=1*x;
b=2*x;
c=3*x;
d=4*x;
printf("%d,%4d,%6d,%7d\n",a,b,c,d);
}
}
输出结果: x 2*x 3*x 4*x
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16
六、总结
通过这次实验,我对c语言的循环结构有了进一步的了解,更加清楚如何合理的去运用各种循环,以及continue、break等语句,能够更加有效的做出更多的题型。