数值分析实验报告.docx
《数值分析实验报告.docx》由会员分享,可在线阅读,更多相关《数值分析实验报告.docx(9页珍藏版)》请在冰豆网上搜索。
![数值分析实验报告.docx](https://file1.bdocx.com/fileroot1/2022-10/13/b721dd32-7a5e-4c5e-902c-da1ebfe7b523/b721dd32-7a5e-4c5e-902c-da1ebfe7b5231.gif)
数值分析实验报告
实验报告
实验课程:
《数值分析》
学生姓名:
谢焕进
学号:
2
专业班级:
网络工程092
2011年06月02日
南昌大学实验报告一
学生姓名:
谢焕进学号:
92专业班级:
网络工程092
实验类型:
■验证□综合□设计□创新实验日期:
实验成绩:
一、实验目的
用C语言或C++编程显示字母T。
二、实验大体原理和内容
Bezier曲线生成:
一、确信曲线的阶次;2计算Bernstein基函数的表达式:
B0,3(t)﹦(1-t)3;B1,3(t)﹦3t(1-t)2;B2,3(t)﹦3t2(1-t);B3,3(t)﹦t3
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)
fort﹦0to1step∆t
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)。
画出其曲线。
三、要紧仪器设备及耗材
PC机一台
四、实验程序及运行结果
实验程序:
voidCCharTView:
:
OnDraw(CDC*pDC)
{
CCharTDoc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
if(!
pDoc)
return;
pDC->SetMapMode(MM_LOENGLISH);
pDC->SetViewportOrg(350,500);
floati=;
for(i=0;i<1;i+=
{
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));
}
CPointCCharTView:
:
CalPoint(CPointpoint0,CPointpoint1,CPointpoint2,CPointpoint3,floatt)
{
CPointpt;
=*(1-t)*(1-t)*(1-t)+*3*t*(1-t)*(1-t)+*3*(t*t)*(1-t)+*(t*t*t);
=*(1-t)*(1-t)*(1-t)+*3*t*(1-t)*(1-t)+*3*(t*t)*(1-t)+*(t*t*t);
returnpt;
}
}
运行结果为:
南昌大学实验报告二
学生姓名:
谢焕进学号:
92专业班级:
网络工程092
实验类型:
■验证□综合□设计□创新实验日期:
实验成绩:
一、实验目的
用C语言或C++语言编程实现高斯消去法。
二、实验大体原理和内容
在高斯消去法中,咱们试图将原n元线性方程组消减为三角形(又称上三角形)。
在三角矩阵中,对角线以下的矩阵元素的系数均为0。
对高斯消去法而言,最有效的是各行经标准化处置后对角线元素均为1的三角矩阵。
高斯消去法的算法如下:
1.将原方程组变换为标准矩阵;
2.用回代法求解xi.
高斯函数的算法:
1.先假设方程组有惟一解。
2.P初始化为首行的下标。
3.当可能有唯一解且p<最后一行的下标时重复。
4.用最大主元素策略确信主元素。
5.假设仍可能有惟一解
6.主元素行标准化。
7.消去主元素以下的系数。
8.对下一行继续处置(++p)。
9.假设最后系数为零。
10.没有惟一解。
不然有惟一解
三、要紧仪器设备及耗材
PC机一台
四、实验程序及运行结果
实验程序:
#include
#include<>
usingnamespacestd;
voidmain()
{
inti,j,k,n,l,h,flag;
floata[100][100],b[100],m[100][100],x[100],y[100],d,t;
cout<<"Inputn:
"<cin>>n;
cout<<"inputa[i][j]:
"<for(i=0;i{
for(j=0;j{
cin>>a[i][j];
}
}
cout<<"inputb[i]:
"<for(i=0;i{
cin>>b[i];
}
/*******运算进程*******/
flag=1;
for(k=0;k{
d=a[k][k];
h=k;
for(l=k;l{
if(fabs(a[l][k])>fabs(d))
{
d=a[l][k];
h=l;
}
}
if(h!
=k)
{
for(j=k;j{
t=a[h][j];a[h][j]=a[k][j];a[k][j]=t;
}
t=b[k];b[k]=b[h];b[h]=t;
}
if(a[k][k]==0)
flag=0;
for(i=k+1;i{
if(flag==0)break;
m[i][k]=a[i][k]/a[k][k];
for(j=k;j{
a[i][j]=a[i][j]-m[i][k]*a[k][j];
}
b[i]=b[i]-m[i][k]*b[k];
}
}
cout<<"Result:
"<if(flag!
=0)/*******回代进程*******/
{
x[n-1]=b[n-1]/a[n-1][n-1];
for(i=n-2;(i>0)||(i==0);i--)
{
y[i]=0;
for(j=i+1;j{
y[j]=y[j-1]+a[i][j]*x[j];
}
x[i]=(b[i]-y[j-1])/a[i][i];
}
for(i=0;i{
cout<<"x["<
}
}
else
cout<<"wrong!
"<}
运行结果为: