实验时间:20xx年10月18日
实验名称:轮轴的秘密
实验目的:知道轮轴也是一种机械,在轮轴的轮上用力能够省力,轮越大越省力。 实验器材:钩码、粗线绳、铁架台、大轮、小轮、轴
内容:像水龙头这样,由轮子和轴固定在一起,可以转动的机械称为轮轴。
1、用一个轮轴实验装置来研究轮轴的作用,记录实验数据,最后进行实验数据分析。
2、换一个大一点的轮,记录下更大的伦用多少钩码可以是轮轴保持平衡,记录数据,分析后谈谈自己的发现。
实验结果:通过实验发现在轮轴的轮上用力能够省力,如果轴不变,轮越大越省力。由此我们也认识到轮轴也是一种机械。
实验时间:20xx年10月18日
实验名称:轮轴的秘密
实验目的:知道轮轴也是一种机械,在轮轴的轮上用力能够省力,轮越大越省力。 实验器材:钩码、粗线绳、铁架台、大轮、小轮、轴
内容:像水龙头这样,由轮子和轴固定在一起,可以转动的机械称为轮轴。
1、用一个轮轴实验装置来研究轮轴的作用,记录实验数据,最后进行实验数据分析。
2、换一个大一点的轮,记录下更大的伦用多少钩码可以是轮轴保持平衡,记录数据,分析后谈谈自己的发现。
实验结果:通过实验发现在轮轴的轮上用力能够省力,如果轴不变,轮越大越省力。由此我们也认识到轮轴也是一种机械。
实验时间:20xx年10月18日
实验名称:轮轴的秘密
实验目的:知道轮轴也是一种机械,在轮轴的轮上用力能够省力,轮越大越省力。 实验器材:钩码、粗线绳、铁架台、大轮、小轮、轴
内容:像水龙头这样,由轮子和轴固定在一起,可以转动的机械称为轮轴。
1、用一个轮轴实验装置来研究轮轴的作用,记录实验数据,最后进行实验数据分析。
2、换一个大一点的轮,记录下更大的伦用多少钩码可以是轮轴保持平衡,记录数据,分析后谈谈自己的发现。
实验结果:通过实验发现在轮轴的轮上用力能够省力,如果轴不变,轮越大越省力。由此我们也认识到轮轴也是一种机械。
实验时间:20xx年10月18日
实验名称:轮轴的秘密
实验目的:知道轮轴也是一种机械,在轮轴的轮上用力能够省力,轮越大越省力。 实验器材:钩码、粗线绳、铁架台、大轮、小轮、轴
内容:像水龙头这样,由轮子和轴固定在一起,可以转动的机械称为轮轴。
1、用一个轮轴实验装置来研究轮轴的作用,记录实验数据,最后进行实验数据分析。
2、换一个大一点的轮,记录下更大的伦用多少钩码可以是轮轴保持平衡,记录数据,分析后谈谈自己的发现。
实验结果:通过实验发现在轮轴的轮上用力能够省力,如果轴不变,轮越大越省力。由此我们也认识到轮轴也是一种机械。
1
实验时间:20xx年10月18日
实验名称:轮轴的秘密
实验目的:知道轮轴也是一种机械,在轮轴的轮上用力能够省力,轮越大越省力。 实验器材:钩码、粗线绳、铁架台、大轮、小轮、轴
内容:像水龙头这样,由轮子和轴固定在一起,可以转动的机械称为轮轴。
1、用一个轮轴实验装置来研究轮轴的作用,记录实验数据,最后进行实验数据分析。
2、换一个大一点的轮,记录下更大的伦用多少钩码可以是轮轴保持平衡,记录数据,分析后谈谈自己的发现。
实验结果:通过实验发现在轮轴的轮上用力能够省力,如果轴不变,轮越大越省力。由此我们也认识到轮轴也是一种机械。
实验时间:20xx年10月18日
实验名称:轮轴的秘密
实验目的:知道轮轴也是一种机械,在轮轴的轮上用力能够省力,轮越大越省力。 实验器材:钩码、粗线绳、铁架台、大轮、小轮、轴
内容:像水龙头这样,由轮子和轴固定在一起,可以转动的机械称为轮轴。
1、用一个轮轴实验装置来研究轮轴的作用,记录实验数据,最后进行实验数据分析。
2、换一个大一点的轮,记录下更大的伦用多少钩码可以是轮轴保持平衡,记录数据,分析后谈谈自己的发现。
实验结果:通过实验发现在轮轴的轮上用力能够省力,如果轴不变,轮越大越省力。由此我们也认识到轮轴也是一种机械。
实验时间:20xx年10月18日
实验名称:轮轴的秘密
实验目的:知道轮轴也是一种机械,在轮轴的轮上用力能够省力,轮越大越省力。 实验器材:钩码、粗线绳、铁架台、大轮、小轮、轴
内容:像水龙头这样,由轮子和轴固定在一起,可以转动的机械称为轮轴。
1、用一个轮轴实验装置来研究轮轴的作用,记录实验数据,最后进行实验数据分析。
2、换一个大一点的轮,记录下更大的伦用多少钩码可以是轮轴保持平衡,记录数据,分析后谈谈自己的发现。
实验结果:通过实验发现在轮轴的轮上用力能够省力,如果轴不变,轮越大越省力。由此我们也认识到轮轴也是一种机械。
2
实 验 报 告
实验课程: 数值分析
学生代号: 信念
学 号: 5215201314
专业班级: 网络间谍088班
20##年 12 月 20日
目 录
一、 用样条插值法插值的方法生成字体T的轮廓………………………3
二、 高斯消去法的实现………………………………………………8
南昌大学实验报告一
学生代号: 信念 学 号: 5215201314 专业班级:网络间谍088班
实验类型:□验证 □ 综合■设计 □创新 实验日期:2010.11.4 实验成绩:
一、 实验目的
1:用样条插值的方法生成字体T的轮廓
2:C或C++语言用Bezier曲线生成并编写程序
二、 实验基本原理和内容
Times-Roman字体: T
Bezier曲线生成:
1、确定曲线的阶次; 2 计算Bernstein基函数的表达式:
生成字体T共分成15段,每段用了三次的代数方程,用Bezier曲线生成
当n=3时
其中
3 把Bezier曲线中的Pk写成分量坐标的形式
4 确定一合适的步长;控制t从0到1变化,求出一系列(x,y)坐标点;将其用小线段顺序连接起来。
算法描述:对于二维平面的情况,只有x,y坐标分量,可以给出四点三次Bezier曲线如下的算法描述:
输入:阶次,3; 控制顶点:4个,(x0,y0),…,(x3,y3)
begin
x=x0
y=y0
moveto (x,y)
for t﹦0 to 1 step Dt
x﹦B0,3(t)x0﹢B1,3(t)x1﹢B2,3(t)x2﹢B3,3(t)x3
y﹦B0,3(t)y0﹢B1,3(t)y1﹢B2,3(t)y2﹢B3,3(t)y3
lineto (x,y)
endfor
end
三次Bezier曲线例子:
对于平面上给定的7个控制点坐标分别为:A(100,300),B(120,200),C(220,200),D(270,100),E(370,100), F(420,200),G(420,300)。画出其三次Bezier曲线:
三、 主要仪器设备及耗材
PC微机
Windows 操作系统
Microsoft Visual Studio 6.0集成开发环境
Microsoft Visual Studio 6.0集成开发环境的MSDN
四、 实验程序及运行结果
实验程序代码如下
void CCharTView::OnDraw(CDC* pDC)
{
CCharTDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
pDC->SetMapMode(MM_LOENGLISH);
pDC->SetViewportOrg(350,500);
float i = 0.00;
for(i = 0; i < 1 ; i += 0.001)
{
pDC->SetPixel(CalPoint(CPoint(237,620),CPoint(237,620),CPoint(237,120),CPoint(237,120),i),RGB(255,0,0));
pDC->SetPixel(CalPoint(CPoint(237,120),CPoint(237,35),CPoint(226,24),CPoint(143,19),i),RGB(255,0,0));
pDC->SetPixel(CalPoint(CPoint(143,19),CPoint(143,19),CPoint(143,0),CPoint(143,0),i),RGB(255,0,0));
pDC->SetPixel(CalPoint(CPoint(143,0),CPoint(143,0),CPoint(435,0),CPoint(435,0),i),RGB(255,0,0));
pDC->SetPixel(CalPoint(CPoint(435,0),CPoint(435,0),CPoint(435,19),CPoint(435,19),i),RGB(255,0,0));
pDC->SetPixel(CalPoint(CPoint(435,19),CPoint(353,23),CPoint(339,36),CPoint(339,109),i),RGB(255,0,0));
pDC->SetPixel(CalPoint(CPoint(339,109),CPoint(339,108),CPoint(339,620),CPoint(339,620),i),RGB(255,0,0));
pDC->SetPixel(CalPoint(CPoint(339,620),CPoint(507,620),CPoint(519,662),CPoint(552,492),i),RGB(255,0,0));
pDC->SetPixel(CalPoint(CPoint(552,492),CPoint(552,492),CPoint(576,492),CPoint(576,492),i),RGB(255,0,0));
pDC->SetPixel(CalPoint(CPoint(576,492),CPoint(576,492),CPoint(570,662),CPoint(570,662),i),RGB(255,0,0));
pDC->SetPixel(CalPoint(CPoint(570,662),CPoint(570,662),CPoint(6,662),CPoint(6,662),i),RGB(255,0,0));
pDC->SetPixel(CalPoint(CPoint(6,662),CPoint(6,662),CPoint(0,492),CPoint(0,492),i),RGB(255,0,0));
pDC->SetPixel(CalPoint(CPoint(0,492),CPoint(0,492),CPoint(24,492),CPoint(24,492),i),RGB(255,0,0));
pDC->SetPixel(CalPoint(CPoint(24,492),CPoint(48,662),CPoint(71,620),CPoint(183,620),i),RGB(255,0,0));
pDC->SetPixel(CalPoint(CPoint(183,620),CPoint(183,620),CPoint(237,620),CPoint(237,620),i),RGB(255,0,0));
}
CPoint CCharTView::CalPoint(CPoint point0, CPoint point1, CPoint point2, CPoint point3,float t)
{
CPoint pt;
pt.x = point0.x * (1 - t) * (1 - t) * (1 - t) + point1.x * 3 * t * (1 - t) * (1 - t) + point2.x * 3 * (t * t) * (1 - t) + point3.x * (t * t * t);
pt.y = point0.y * (1 - t) * (1 - t) * (1 - t) + point1.y * 3 * t * (1 - t) * (1 - t) + point2.y * 3 * (t * t) * (1 - t) + point3.y * (t * t * t);
return pt;
}
}
运行结果显示为:
南昌大学实验报告二
学生代号: 信念 学 号: 5215201314 专业班级:网络间谍088班
实验类型:□验证 □ 综合■设计□创新 实验日期:20##-12-5 实验成绩:
一、 实验目的
用C语言或C++语言编程实现高斯消去法。
二、 实验基本原理和内容
基本思想:
用高斯消去法求解线性方程组的基本思想是设法消去方程组的系数矩阵A的主对角线下的元素,而将Ax=b化为等价的上三角形方程组,然后再通过回代过程便可以获得方程组的解。
这种解线性方程组的方法,常称为高斯消去法。
高斯消去法算法的构造:
记方程组AX=b为A(1)X=b(1), 其中,A(1)和b(1)的元素分别记为
Step1:第一次消元
设,将增广矩阵的第i行减去倍,(i=2,…,n),目的是将增广矩阵的第一列内除每一个元素不变外,其余全部消为零,得到A(2)X=b(2),即
其中
Step2:第k次消元()
设第k-1次消元已完成,且,得到A(k)X=b(k),即
计算因子,
如此反复,经过n-1次消元之后得到一个与原方程组等价的上三角形方程组.
Step3:回代
只要就可以回代求解
高斯消去法的算法
Step1消元 :
对k=1,2,…,n-1
若则停止计算
对i=k+1,k+2,…,n
计算因子;
对j=k+1,k+2,…,n
计算;
Step2回代:
对i=n,n-1,…,1
(高斯消去法的条件)
若A的所有顺序主子式均不为0,则高斯消元无需换行即可进行到底,且得到唯一解.
若消元过程中允许对增广矩阵进行行交换,则方程组Ax=b可用消去法求解的充要条件是A可逆.
三、 主要仪器设备及耗材
PC机一台PC微机
Windows 操作系统
Microsoft Visual Studio 6.0集成开发环境
四、 实验程序及运行结果
高斯消元法实验程序代码如下:
#include <stdio.h>
#include <stdlib.h>
#define N 10 //矩阵大小范围
/*
* 使用已经求出的x,向前计算x(供getx()调用)
* float a[][] 系数矩阵
* float x[] 方程组解
* int i 解的序号
* int n 矩阵大小
* return 公式中需要的和
*/
float getm(float a[N][N], float x[N], int i, int n)
{
float m = 0;
int r;
for(r=i+1; r<n; r++)
{
m += a[i][r] * x[r];
}
return m;
}
/*
* 解方程组,计算x
* float a[][] 系数矩阵
* float b[] 右端项
* float x[] 方程组解
* int i 解的序号
* int n 矩阵大小
* return 方程组的第i个解
*/
float getx(float a[N][N], float b[N], float x[N], int i, int n)
{
float result;
if(i==n-1) //计算最后一个x的值
result = float(b[n-1]/a[n-1][n-1]);
else //计算其他x值(对于公式中的求和部分,需要调用getm()函数)
result = float((b[i]-getm(a,x,i,n))/a[i][i]);
return result;
}
void main()
{
//float a[N][N] = {{2,1,1},{1,3,2},{1,2,2}};
//float b[N] = {4,6,5};
float a[N][N]; //系数矩阵
float b[N]; //右端项
float x[N]; //方程组解
int i,j,k;
int n=N; //矩阵大小
/*用户手工输入矩阵*/
printf("请输入系数矩阵的大小:");
scanf("%d", &n);
printf("请连续输入矩阵值:");
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
scanf("%f", &a[i][j]);
}
printf("请输入右端项:");
for(i=0; i<n; i++)
{
scanf("%f", &b[i]);
}
/*显示原始矩阵*/
printf("\n原始矩阵\n");
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
printf("%f ",a[i][j]);
printf("\t|\t%f\n",b[i]);
}
printf("\n\n");
/*进行高斯消去*/
for(j=0; j<n-1; j++)
{
for(i=j+1; i<n; i++)
{
float m = (float)(a[i][j]/a[j][j]);
for(k=j; k<n; k++)
{
a[i][k] = a[i][k]-m*a[j][k];
}
b[i] = b[i]-m*b[j];
}
}
/*显示处理后矩阵*/
printf("高斯消去后矩阵\n");
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
printf("%f ",a[i][j]);
printf("\t|\t%f\n",b[i]);
}
/*回代方式解方程组*/
for(i=n-1; i>=0; i--)
{
x[i] = getx(a,b,x,i,n);
}
/*显示方程组解*/
printf("\n\n方程组解\n");
for(i=0; i<n; i++)
{
printf("x%d = %f\n", i+1,x[i]);
}
}
运行结果为: