当前位置:文档之家› 南昌大学数值分析实验报告

南昌大学数值分析实验报告

南昌大学数值分析实验报告
南昌大学数值分析实验报告

实验报告

实验课程:数值分析

学生名称:

学号:

专业班级:

2012年 6月1日

目录

一.用样条插值法插值的方法生成字体T、5的轮廓 (3)

二.原子弹爆炸的能量估计 (14)

三.PageRank算法 (17)

南昌大学实验报告一

姓名:学号:专业班级:

实验类型:□验证□综合■设计□创新实验日期:实验成绩:

一、实验目的

1、用样条插值的方法生成字体T的轮廓

2、C或C++语言用Bezier曲线生成并编写程序

二、实验要求

1、熟悉三次样条插值有关理论,并能将其运用到实际中,加深对理论知识的理解;

2、要求会编程实现Bezier样条曲线,并根据所给数据绘制‘T’的轮廓。

三、主要仪器设备及耗材

PC微机Windows 操作系统VS集成开发环境VS0集成开发环境的MSDN

四、实验基本原理和内容

Times-Roman T的数据

X0 Y0 X1 Y1 X2 Y2 X3 Y3 237 620 237 620 237 120 237 120 237 120 237 35 226 24 143 19 143 19 143 19 143 0 143 0 143 0 143 0 435 0 435 0 435 0 435 0 435 19 435 19 435 19 353 23 339 36 339 109 339 109 339 108 339 620 339 620 339 620 507 620 529 602 552 492 552 492 552 492 576 492 576 492 576 492 576 492 570 662 570 662 570 662 570 662 6 662 6 662 6 662 6 662 0 492 0 492 0 492 0 492 24 492 24 492 24 492 48 602 71 620 183 620 183 620 183 620 237 620 237 620

Times-Roman 5的数据

X0 Y0 X1 Y1 X2 Y2 X3 Y3 149 597 149 597 149 597 345 597 345 597 761 597 365 599 368 606 368 606 406 695 368 606 406 695 406 695 397 702 406 695 397 702 397 702 382 681 372 676 351 676 351 676 351 676 351 676 142 676 142 676 33 439 142 676 33 439 33 439 32 438 32 436 32 434 32 434 32 428 35 426 44 426 44 426 74 426 109 420 149 408 149 408 269 372 324 310 324 208 324 208 324 112 264 37 185 37 185 37 165 37 149 44 119 66 119 66 86 90 65 99 42 99 42 99 14 99 0 87 0 62 0 62 0 24 46 0 121 0 121 0 205 0 282 27 333 78 333 78 378 123 399 180 399 256 399 256 399 327 381 372 333 422 333 422 288 468 232 491 112 512 112 512 112 512 149 597 149 597

实验原理:

所谓Bezier 曲线,是应用于二维应用

程序的数学曲线。曲线的定义有四个点:起始点、终止点(也称锚点)以及两个相互分离的 中间点。滑动两个中间点,贝塞尔曲线的形状会发生变化。该曲线公式为:假设给出n+1个 控制点位置:p k =(x k ,y k ),0≤k≤n ,这些坐标点将混合产生下列位置向量P (u),用来描述p 0和 p n 间逼近Bezier 多项式的路径,∑==

n

k n

k,(u)kBEZ

(u)p P ,0≤k≤1,BEZ k,n (u)是Bezier 混合函数

——Bernstein 多项式:BEZ k,n (u)=C(n,k)u k

(1-u)

n-k

,参数C(n,k)是二项式系数:

k )!

(n k!n!

k)C(n,-=

。多数时候,Bezier 曲线是一个阶数比控制点少1的多项式,即4点可以生

成一个三次曲线。

C(n,k)=(n-k+1)/k×C(n,k-1),在n≥k 时满足BEZ k,n (u)=(1-u)BEZ k,n-1(u)+uBEZ k -1,n-1(u),得

函数:void binomialCoefficent(GLint n,GLint *c)和void computeBezPnt(GLfloat u,Point2D

*bezPnt,GLint nCtrlPnts,Point2D *ctrlPnts,GLint *c)

三次Bezier 曲线有四个控制点,我们将n=3代入曲线方程中得到BEZ 0,3=(1-u)3

BEZ 1,3=3u(1-u)2,BEZ 2,3=3u 2(1-u),BEZ 3,3=u 3。得函数void bezier(Point2D

*ctrlPnts,GLint

nCtrlPnts,GLint nBezCurvePnts)。

Bezier 曲线生成:

1、确定曲线的阶次; 2 计算Bernstein 基函数的表达式:

生成字体T 共分成15段,每段用了三次的代数方程,用Bezier 曲线生成

当n=3时

3

03333,32

12

23

3,22

21

133,13

30033,0)1()()

1(3)1()()1(3)1()()1()1()(t t t C t B t t t t C t B t t t t C t B t t t C t B =-=-=-=-=-=-=-=

n

k t t t k n k n t t C t B k

n k k n k k n n k ,,1,0]1,0[)1()!

(!!

)1()(, =∈--=

-=--

其中]1,0[∈t

)()()()()(3,333,223,113,00t B P t B P t B P t B P t P +++=

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 ?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)。画出其三次Bezier 曲线。

通过以上的准备我们开始编写主函数,再输入T 的实验数据,生成图像。

五、实验程序及运行结果

实验程序代码如下

// sy1.cpp : Defines the entry point for the application. #include "stdafx.h" #include "resource.h"

#define MAX_LOADSTRING 100 // Global Variables: HINSTANCE hInst;

// current instance TCHAR szTitle[MAX_LOADSTRING];

TCHAR szWindowClass[MAX_LOADSTRING]; // The title bar text

ATOM MyRegisterClass(HINSTANCE hInstance);

BOOL InitInstance(HINSTANCE, int);

LRESULT CALLBACK W ndProc(HWND, UINT, WPARAM, LPARAM);

LRESULT CALLBACK A bout(HWND, UINT, WPARAM, LPARAM);

int APIENTRY WinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine,

int nCmdShow)

{

MSG msg;

HACCEL hAccelTable;

LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);

LoadString(hInstance, IDC_SY1, szWindowClass, MAX_LOADSTRING);

MyRegisterClass(hInstance);

if (!InitInstance (hInstance, nCmdShow))

{

return FALSE;

}

hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_SY1);

while (GetMessage(&msg, NULL, 0, 0))

{

if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

}

return msg.wParam;

}

ATOM MyRegisterClass(HINSTANCE hInstance)

{

WNDCLASSEX wcex;

wcex.cbSize = sizeof(WNDCLASSEX);

wcex.style = CS_HREDRAW | CS_VREDRAW;

wcex.lpfnWndProc = (WNDPROC)WndProc;

wcex.cbClsExtra = 0;

wcex.cbWndExtra = 0;

wcex.hInstance = hInstance;

wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_SY1);

wcex.hCursor = LoadCursor(NULL, IDC_ARROW);

wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);

wcex.lpszMenuName = (LPCSTR)IDC_SY1;

wcex.lpszClassName = szWindowClass;

wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);

return RegisterClassEx(&wcex);

}

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)

{

HWND hWnd;

hInst = hInstance; // Store instance handle in our global variable

hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

if (!hWnd)

{

return FALSE;

}

ShowWindow(hWnd, nCmdShow);

UpdateWindow(hWnd);

return TRUE;

}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{

int wmId, wmEvent,i;

PAINTSTRUCT ps;

HDC hdc;

TCHAR szHello[MAX_LOADSTRING];

LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING);

float p(int point0,int point1,int point2,int point3 ,float t);

switch (message)

{

case WM_COMMAND:

wmId = LOWORD(wParam);

wmEvent = HIWORD(wParam);

switch (wmId)

{

case IDM_ABOUT:

DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);

break;

case IDM_EXIT:

DestroyWindow(hWnd);

break;

default:

return DefWindowProc(hWnd, message, wParam, lParam);

}

break;

case WM_PAINT:

hdc = BeginPaint(hWnd, &ps);

// TODO: Add any drawing code here...

RECT rt;

GetClientRect(hWnd, &rt);

//DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);

for(i=0;i<1000;i++)

{

SetPixel(hdc,800-Pt(237,237,237,237,0.001*i),680-Pt(620,620,120,120,0.001*i),RGB(250,0,0)); SetPixel(hdc,800-Pt(237,237,226,143,0.001*i),680-Pt(120,35 ,24 ,19 ,0.001*i),RGB(250,0,0)); SetPixel(hdc,800-Pt(143,143,143,143,0.001*i),680-Pt(19 ,19,0,0,0.001*i),RGB(250,0,0));

SetPixel(hdc,800-Pt(143,143,435,435,0.001*i),680-Pt( 0, 0, 0, 0,0.001*i),RGB(250,0,0));

SetPixel(hdc,800-Pt(435,435,435,435,0.001*i),680-Pt( 0, 0,19,19,0.001*i),RGB(250,0,0)); SetPixel(hdc,800-Pt(435,353,339,339,0.001*i),680-Pt(19,23,36,109,0.001*i),RGB(250,0,0)); SetPixel(hdc,800-Pt(339,339,339,339,0.001*i),680-Pt(109,108,620,620,0.001*i),RGB(250,0,0)); SetPixel(hdc,800-Pt(339,507,529,552,0.001*i),680-Pt(620,620,602,492,0.001*i),RGB(250,0,0)); SetPixel(hdc,800-Pt(552,552,576,576,0.001*i),680-Pt(492,492,492,492,0.001*i),RGB(250,0,0)); SetPixel(hdc,800-Pt(576,576,570,570,0.001*i),680-Pt(492,492,662,662,0.001*i),RGB(250,0,0));

SetPixel(hdc,800-Pt(570,570,6,6,0.001*i),680-Pt(662,662,662,662,0.001*i),RGB(250,0,0)); SetPixel(hdc,800-Pt(6,6,0,0,0.001*i),680-Pt(662,662,492,492,0.001*i),RGB(250,0,0));

SetPixel(hdc,800-Pt(0,0,24,24,0.001*i),680-Pt(492,492,492,492,0.001*i),RGB(250,0,0)); SetPixel(hdc,800-Pt(24,48,71,183,0.001*i),680-Pt(492,602,620,620,0.001*i),RGB(250,0,0)); SetPixel(hdc,800-Pt(183,183,237,237,0.001*i),680-Pt(620,620,620,620,0.001*i),RGB(250,0,0));

}

EndPaint(hWnd, &ps);

break;

case WM_DESTROY:

PostQuitMessage(0);

break;

default:

return DefWindowProc(hWnd, message, wParam, lParam);

}

return 0;

}

// Mesage handler for about box.

LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)

{

switch (message)

{

case WM_INITDIALOG:

return TRUE;

case WM_COMMAND:

if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)

{

EndDialog(hDlg, LOWORD(wParam));

return TRUE;

}

break;

}

return FALSE;

}

float p(int point0,int point1,int point2,int point3 ,float t)

{

float pp;

pp= point0* (1 - t) * (1 - t) * (1 - t) + point1* 3 * t * (1 - t) * (1 - t) + point2 * 3 * (t * t) * (1 - t) + point3 * (t * t * t);

return pp;

}

若要得到5字,只需改for循环那部分:

for(i=0;i<1000;i++)

{

SetPixel(hdc,500-Pt(-149,-149,-149,-345,0.001*i),700-Pt(597,597,597,597,0.001*i),RGB(0,255,0 ));

SetPixel(hdc,500-Pt(-345,-365,-365,-368,0.001*i),700-Pt(597,597,599,606,0.001*i),RGB(0,255,0 ));

SetPixel(hdc,500-Pt(-368,-406,-368,-406,0.001*i),700-Pt(606,695,606,695,0.001*i),RGB(0,255,0 ));

SetPixel(hdc,500-Pt(-406,-397,-406,-397,0.001*i),700-Pt(695,702,695,702,0.001*i),RGB(0,255,0 ));

SetPixel(hdc,500-Pt(-397,-382,-372,-351,0.001*i),700-Pt(702,681,676,676,0.001*i),RGB(0,255,0 ));

SetPixel(hdc,500-Pt(-351,-351,-351,-142,0.001*i),700-Pt(676,676,676,676,0.001*i),RGB(0,255,0 ));

SetPixel(hdc,500-Pt(-142,-33,-142,-33,0.001*i),700-Pt(676,439,676,439,0.001*i),RGB(0,255,0)); SetPixel(hdc,500-Pt(-33,-32,-32,-32,0.001*i),700-Pt(439,438,436,434,0.001*i),RGB(0,255,0)); SetPixel(hdc,500-Pt(-32,-32,-35,-44,0.001*i),700-Pt(434,428,426,426,0.001*i),RGB(0,255,0)); SetPixel(hdc,500-Pt(-44,-74,-109,-149,0.001*i),700-Pt(426,426,420,408,0.001*i),RGB(0,255,0)); SetPixel(hdc,500-Pt(-149,-269,-324,-324,0.001*i),700-Pt(408,372,310,208,0.001*i),RGB(0,255,0 ));

SetPixel(hdc,500-Pt(-324,-324,-264,-185,0.001*i),700-Pt(208,112,37,37,0.001*i),RGB(0,255,0)); SetPixel(hdc,500-Pt(-185,-165,-149,-119,0.001*i),700-Pt(37,37,44,44,0.001*i),RGB(0,255,0)); SetPixel(hdc,500-Pt(-119,-86,-65,-42,0.001*i),700-Pt(66,90,99,99,0.001*i),RGB(0,255,0)); SetPixel(hdc,500-Pt(-42,-14,-0,-0,0.001*i),700-Pt(99,99,87,62,0.001*i),RGB(0,255,0)); SetPixel(hdc,500-Pt(-0,-0,-46,-121,0.001*i),700-Pt(62,24,0,0,0.001*i),RGB(0,255,0);

SetPixel(hdc,500-Pt(-121,-205,-282,-333,0.001*i),700-Pt(0,0,27,78,0.001*i),RGB(0,255,0)); SetPixel(hdc,500-Pt(-333,-378,-399,-399,0.001*i),700-Pt(78,123,180,256,0.001*i),RGB(0,255,0)) ;

SetPixel(hdc,500-Pt(-399,-399,-381,-333,0.001*i),700-Pt(256,327,372,422,0.001*i),RGB(0,255,0 ));

SetPixel(hdc,500-Pt(-333,-288,-232,-112,0.001*i),700-Pt(422,468,491,512,0.001*i),RGB(0,255,0 ));

SetPixel(hdc,500-Pt(-112,-112,-149,-149,0.001*i),700-Pt(512,512,597,597,0.001*i),RGB(0,255,0 ));

}

运行结果显示为:

五、实验总结和体会

图形类实验,第一次,也是第一次成功。希望能在以后的编程生涯中打下坚实的基础。

南昌大学实验报告二

姓名:学号:专业班级:

实验类型:□验证□综合■设计□创新实验日期:实验成绩:

一、实验目的

用C语言或C++语言编程实现原子弹爆炸的能量估计。

二、实验基本原理和内容

1945年7月16 日,美国科学家在新墨西哥州Los Alamos 沙漠试爆了世界上第一颗原子弹,这一事件令全球震惊。但在当时有关原子弹爆炸的任何资料都是保密的,而很多其他国家的科学家非常想知道这次爆炸的威力有多大。

两年之后,美国政府首次公开了这次爆炸的录像带,而其他的数据和资料仍然不被外界所知,英国物理学家G.I.Taylor(1886-1975)通过研究原子弹爆炸的录像带,建立数学模型对爆炸所释放的能量进行了估计,得到估计值与若干年后正式公布的爆炸能量21kt 相当接近(1kt为1千吨TNT炸药的爆炸能量)。

Taylor是如何根据爆炸录像估计的呢?主要是通过测量爆炸形成的“蘑菇云”半径来进行估计的。因为爆炸产生的冲击波从中心点向外传播,爆炸的能量越大,在相同时间内冲击波传播得越远,蘑菇云的半径就越大,Taylor通过研究录像带,测量了从爆炸开始的不同时刻t所对应的蘑菇云半径r(t),如下表所示

t r(t) t r(t) t r(t) t r(t) t r(t)

0.10 11.1 0.80 34.2 1.50 44.4 3.53 61.1 15.0 106.5

0.24 19.9 0.94 36.3 1.65 46.0 3.80 62.9 25.0 130.0

0.38 25.4 1.08 38.9 1.79 46.9 4.07 64.3 34.0 145.0

0.52 28.8 1.22 41.0 1.93 48.7 4.34 65.6 53.0 175.0

0.66 31.9 1.36 42.8 3.26 59.0 4.61 97.3 62.0 185.0

*t的单位为ms,r的单位为m。

然后通过量纲分析法建立了蘑菇云半径r与时间t和爆炸能量E的关系,利用上述数据最后求出了爆炸的能量。

三、主要仪器设备及耗材

PC机一台PC微机

Windows 操作系统

Microsoft Visual Studio 6.0集成开发环境

一、实验程序及运行结果

实验程序代码如下:

#include "stdio.h"

#include "math.h"

#define e 2.718281828459

int i,m=24;

double neiji(double *g,double *h){

double sum=0;

for(i=0;i<=m;i++){

sum+=g[i]*h[i];

}

return sum;

}

main()

{

double t=0;

double A,a,b,p=1.25;

double a0,a1,a2,b0,b1,c,E;

double s0[25];

double

s1[25]={0.1,0.24,0.38,0.52,0.66,0.8,0.94,1.08,1.22,1.36,1.5,1.65,1.79,1.93,3.26,3.53,3.8,4.07,4.34 ,4.61,15,25,34,53,62};

double

f[25]={11.1,19.9,25.4,28.8,31.9,34.2,36.3,38.9,41,42.8,44.4,46,46.9,48.7,59,61.1,62.9,64.3,65.6,9 7.3,106.5,130,145,175,185};

double k[25];

for(i=0;i<=24;i++){

s0[i]=1;

s1[i]=0.001*s1[i]; //单位由毫秒变为秒

}

a0=neiji(s0,s0);

a1=neiji(s0,s1);

a2=neiji(s1,s1);

b0=neiji(s0,f);

b1=neiji(s1,f);

printf("(s0,s0)=%lf\n",neiji(s0,s0));

printf("(s0,s1)=(s1,s0)=%lf\n",neiji(s0,s1));

printf("(s1,s1)=%lf\n",neiji(s1,s1));

printf("(s0,f)=%lf\n",neiji(s0,f));

printf("(s1,f)=%lf\n",neiji(s1,f));

b=(a0*b1-a1*b0)/(a2*a0-a1*a1);

A=(b0-a2*b)/a0;

printf("b=%lf\n",b);

a=pow(e,A);

printf("A=%lf,b=%lf\n",A,log(b));

for(i=0;i<=25;i++){

k[i]=5*log(f[i])-2*log(s1[i]);

}

c=neiji(k,s0)/a0;

E=p*pow(e,c);

printf("E=%e,爆炸能量=%ekt\n",E,E/(4.184*pow(10,12)));

return 0;

}

结果及截图:

五、实验总结及体会

以前只觉得数值分析这门课程只是一门十分繁琐的课程,高数线代等代数内容都攘括在内,而且都是一些非常复杂的代数算法公式,学习起来十分不情愿。但通过此次试验让我了解到,尽管课程十分繁琐,但同样能解决非常繁琐的问题,像本实验中原子弹爆炸的能量估算问题,受益匪浅。

南昌大学实验报告三

姓名: 学 号: 专业班级:

实验类型:□验证 □ 综合■设计 □创新 实验日期: 实验成绩:

一、 实验目的

用C 语言或C++编程实现Google 的PageRank 算法

二、 实验基本原理和内容

PageRank 技术的基本原理是:如果网页A 链接到网页B ,则认为“网页A 投了网页B 一票”,而且如果网页A 是级别高的网页,则网页B 的级别也相应地高。

要计算PageRank ,可假设一个随机上网“冲浪”的过程,即每次看完当前网页后,有两种选择:

(1) 在当前网页中随机选一个超链接进入下一个网页; (2) 随机地新开一个网页。

这在数学上称为马尔可夫过程,若这样的随机“冲浪”一直进行下去,某个网页被访问到的极限概率就是它的PageRank 。

设p 为选择当前网页上链接的概率(比如,p=0.85),则1-p 为不选当前网页的链接而随机打开一个网页的概率。若当前网页是网页j ,则如何计算下一步浏览到达网页i 的概率(网页j 到i 的转移概率)?它有两种可能性:

(1) 若网页i 在网页j 的链接上,其概率为p ×1/c j +(1-p) ×1/n ; (2)若网页i 不在网页j 的链接上,其概率为(1-p) ×1/n

由于网页i 是否在网页j 的链接上由g ij 决定,网页j 到i 的转移概率为:

[

]

[]n p j

c ij

pg n

ij n

j

c ij ij p g p p g a -+=

?

--+?-+?

=1111)1()1()1( 应注意到的是,若c j =0意味着g ij =0,上式改为a ij =1/n 。任意两个网页之间的转移概率形成了一个转移矩阵A=(a ij ),设矩阵D 为各个网页出度的倒数(若没有出度,设为1)构成的n 阶对角阵,e 为全是1的n 维向量,则:

T n p

e pGD A e 1-+=

设n i x k i

,,2,1,)( =表示某时刻k 浏览网页i 的概率)1()(=∑k i x ,向量x

(k)

示当前时刻浏览各网页的概率分布。那么下一时刻浏览到网页i 的概率为

∑=n

j k j

ij x a 1

)

(,此

时浏览各网页的概率分布为x (k+1)=Ax (k)

当这个过程无限进行下去,达到极限情况,即网页访问概率x (k)收敛到一个极限值,这个极限向量x 为各网页的PageRank ,它满足Ax=x,且∑==n

i i x 1

1

三、 主要仪器设备及耗材

PC机一台

四、实验程序及运行结果

PageRank.h

#include

#include

#include

#include

using namespace std;

// use graph store webpage, weight representlink times

class Node

{

public:

explicit Node(string name, double pr = 1):name_(name), page_rank_(pr){}

~Node()

{

linkin_nodes_.clear();

}

void InsertLinkdInNode(Node* node)

{

//如果没有链接

if (linkin_nodes_.find(node) == linkin_nodes_.end())

{

linkin_nodes_.insert(node);

}

node->InsertLinkOutNode(this);

}

void InsertLinkOutNode(Node* node)

{

//如果没有链接

if (linkout_nodes_.find(node) == linkout_nodes_.end())

{

linkout_nodes_.insert(node);

}

}

double GetPageRank()

{

return page_rank_;

}

void SetPageRank(double pr)

{

page_rank_ = pr;

}

double CalcRank()

{

double pr = 0;

set::const_iterator citr = linkin_nodes_.begin();

for (; citr != linkin_nodes_.end(); ++citr)

{

Node * node = *citr;

pr += node->GetPageRank()/node->GetOutBoundNum();

}

return pr;

}

size_t GetOutBoundNum()

{

return linkout_nodes_.size();

}

size_t GetInBoundNum()

{

return linkin_nodes_.size();

}

void PrintNode()

{

cout << "Node:" << name_ << " 's pagerank is: " << page_rank_ << endl;

}

private:

string name_;

set linkin_nodes_;

set linkout_nodes_;

double page_rank_;

};

class PageRank

{

public:

PageRank(double q=0.85);

~PageRank(void);

void Calc(vector & nodes, int n);

double Calc(Node* node);

void PrintPageRank(vector & nodes);

private:

double q_; //阻尼系数

};

PageRank.cpp

#include "pagerank.h"

#include

PageRank::PageRank(double q) : q_(q)

{

// q_ must < 1

}

PageRank::~PageRank(void)

{

}

// 迭代计算n次

void PageRank::Calc(vector & nodes, int n)

{

for (int i=0; i

{

vector::const_iterator citr = nodes.begin();

for (; citr!=nodes.end(); ++citr)

{

Node * node = *citr;

Calc(node);

}

}

}

void PageRank::PrintPageRank(vector & nodes)

{

double total_pr = 0;

vector::const_iterator citr = nodes.begin();

for (; citr!=nodes.end(); ++citr)

{

Node * node = *citr;

node->PrintNode();

total_pr += node->GetPageRank();

}

cout << "Total PR:" << total_pr << endl;

}

double PageRank::Calc(Node * node)

{

double pr = node->CalcRank();

if (pr < 0.00000000000000000000001 && pr > -0.00000000000000000000001) //pr

- 16 -

== 0

{

pr = 1-q_;

}

else

{

pr = pr * q_ + 1-q_;

}

node->SetPageRank(pr);

return pr;

}

main.cpp

#include

#include

#include

#include

#include "pagerank.h"

using namespace std;

void InitGraph(vector & nodes)

{// 邻接表存储方式

// example 1

Node * a = new Node("A");

Node * b = new Node("B");

Node * c = new Node("C");

Node * d = new Node("D");

nodes.push_back(a);

nodes.push_back(b);

nodes.push_back(c);

nodes.push_back(d);

// link in node

// a <- b, c, d

a->InsertLinkdInNode(b);

a->InsertLinkdInNode(c);

a->InsertLinkdInNode(d);

// b <- d

b->InsertLinkdInNode(d);

// c <- b, d

c->InsertLinkdInNode(b);

c->InsertLinkdInNode(d);

}

void TestPageRank()

- 17 -

{

// build graph

vector nodes;

InitGraph(nodes);

PageRank pr;

// 迭代计算5次pagerank

pr.Calc(nodes, 40);

pr.PrintPageRank(nodes);

}

int main(int argc, const char ** argv)

{

TestPageRank();

return 0;

}

运行结果为:

五、实验体会

计算机编程实现复杂算法解决复杂问题真是百试不爽。这让我在以后的编程生涯中增强了足够的信心。

南昌大学《材料性能学》课后答案

《工程材料力学性能》(第二版)课后答案 第一章材料单向静拉伸载荷下的力学性能 一、解释下列名词 滞弹性:在外加载荷作用下,应变落后于应力现象。 静力韧度:材料在静拉伸时单位体积材科从变形到断裂所消耗的功。 弹性极限:试样加载后再卸裁,以不出现残留的永久变形为标准,材料能够完全弹性恢复的最高应力。 比例极限:应力—应变曲线上符合线性关系的最高应力。 包申格效应:指原先经过少量塑性变形,卸载后同向加载,弹性极限(ζP) 或屈服强度(ζS)增加;反向加载时弹性极限(ζP)或屈服强度(ζS) 降低的现象。 解理断裂:沿一定的晶体学平面产生的快速穿晶断裂。晶体学平面--解理面,一般是低指数,表面能低的晶面。 解理面:在解理断裂中具有低指数,表面能低的晶体学平面。 韧脆转变:材料力学性能从韧性状态转变到脆性状态的现象(冲击吸收功明显下降,断裂机理由微孔聚集型转变微穿晶断裂,断口特征由纤维状转变为结晶状)。静力韧度:材料在静拉伸时单位体积材料从变形到断裂所消耗的功叫做静力韧度。是一个强度与塑性的综合指标,是表示静载下材料强度与塑性的最佳配合。 二、金属的弹性模量主要取决于什么?为什么说它是一个对结构不敏感的力学姓能? 答案:金属的弹性模量主要取决于金属键的本性和原子间的结合力,而材料的成分和组织对它的影响不大,所以说它是一个对组织不敏感的性能指标,这是弹性模量在性能上的主要特点。改变材料的成分和组织会对材料的强度(如屈服强度、抗拉强度)有显著影响,但对材料的刚度影响不大。 三、什么是包辛格效应,如何解释,它有什么实际意义? 答案:包辛格效应就是指原先经过变形,然后在反向加载时弹性极限或屈服强度降低的现象。特别是弹性极限在反向加载时几乎下降到零,这说明在反向加载时塑性变形立即开始了。 包辛格效应可以用位错理论解释。第一,在原先加载变形时,位错源在滑移

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

数值分析实验报告模板

数值分析实验报告模板 篇一:数值分析实验报告(一)(完整) 数值分析实验报告 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.认识铁磁物质的磁化规律,比较两种典型的铁磁物质的动态磁化特性。 2.测定样品的基本磁化曲线,作μ-H曲线。 3.测定样品的H D、B r、B S和(H m·B m)等参数。 4.测绘样品的磁滞回线,估算其磁滞损耗。 二、实验原理: 铁磁物质是一种性能特异,用途广泛的材料。铁、钴、镍及其众多合金以及含铁的氧化物(铁氧体)均属铁磁物质。其特征是在外磁场作用下能被强烈磁化,故磁导率μ很高。另一特征是磁滞,即磁化场作用停止后,铁磁质仍保留磁化状态,图1为铁磁物质的磁感应强度B与磁化场强度H之间的关系曲线。 图中的原点O表示磁化之前铁磁物质处于磁中性状态,即B=H=O,当磁场H从零开始增加时,磁感应强度B随之缓慢上升,如线段oa所示,继之B随H迅速增长,如ab所示,其后B的增长又趋缓慢,并当H增至H S时,B到达饱和值B S,oabs称为起始磁化曲线。图1表明,当磁场从H S逐渐减小至零,磁感应强度B并不沿起始磁化曲线恢复到“O”点,而是沿另一条新的曲线SR下降,比较线段OS和SR可知,H减小B相应也减小,但B的变化滞后于H的变化,这现象称为磁滞,磁滞的明显特征是当H=O时,B不为零,而保留剩磁Br。 当磁场反向从O逐渐变至-H D时,磁感应强度B消失,说明要消除剩磁,必须施加反向磁场,H D称为矫顽力,它的大小反映铁磁材料保持剩磁状态的能力,线段RD称为退磁曲线。 图1还表明,当磁场按H S→O→H D→-H S→O→H D′→H S次序变化,相应的磁感应强度B则沿闭合曲线S SRD'S D R' '变化,这闭合曲线称为磁滞回线。所以,当铁磁材料处于交变磁场中时(如变压器中的铁心),将沿磁滞回线反复被磁化→去磁→反向磁化→反向去磁。在此过程中要消耗额外的能量,并以热的形式从铁磁材料中释放,这种损耗称为磁滞损耗,可以证明,磁滞损耗与磁滞回线所围面积成正比。 应该说明,当初始态为H=B=O的铁磁材料,在交变磁场强度由弱到强依次进行磁化,可以得到面积由小到大向外扩张的一簇磁滞回线,如图2所示,这些磁滞回线顶点的连线称为铁磁材料的基本磁化曲线,由此可近似确定其磁导率 H B μ=,因B与H非线性,故铁磁材料的μ不是常数而是随H而变化(如图3所示)。铁磁材料的相对磁导率可高达数千乃至数万,这一特点是它用途广泛的主要原因之一。 可以说磁化曲线和磁滞回线是铁磁材料分类和选用的主要依据,图4为常见的两种典型的磁滞回线,其中软磁材料的磁滞回线狭长、矫顽力、剩磁和磁滞损耗均较小,是制造变压器、电机、和交流磁铁的主要材料。而硬磁材料的磁滞回线较宽,矫顽力大,剩磁强,可用来制造永磁体。 图2 同一铁磁材料的 一簇磁滞回线 图1 铁磁质起始磁化 曲线和磁滞回线 图 3 铁磁材料μ与H并系曲

数值分析实验报告

数值分析实验报告 姓名:周茹 学号: 912113850115 专业:数学与应用数学 指导老师:李建良

线性方程组的数值实验 一、课题名字:求解双对角线性方程组 二、问题描述 考虑一种特殊的对角线元素不为零的双对角线性方程组(以n=7为例) ?????????? ?????? ? ???? ?d a d a d a d a d a d a d 766 55 44 3 32 211??????????????????????x x x x x x x 7654321=?????????? ? ???????????b b b b b b b 7654321 写出一般的n (奇数)阶方程组程序(不要用消元法,因为不用它可以十分方便的解出这个方程组) 。 三、摘要 本文提出解三对角矩阵的一种十分简便的方法——追赶法,该算法适用于任意三对角方程组的求解。 四、引言 对于一般给定的d Ax =,我们可以用高斯消去法求解。但是高斯消去法过程复杂繁琐。对于特殊的三对角矩阵,如果A 是不可约的弱对角占优矩阵,可以将A 分解为UL ,再运用追赶法求解。

五、计算公式(数学模型) 对于形如????? ?? ????? ??? ?---b a c b a c b a c b n n n n n 111 2 2 2 11... ... ...的三对角矩阵UL A =,容易验证U 、L 具有如下形式: ??????? ????? ??? ?=u a u a u a u n n U ...... 3 3 22 1 , ?? ????? ? ?? ??????=1 (1) 1132 1l l l L 比较UL A =两边元素,可以得到 ? ?? ??-== = l a b u u c l b u i i i i i i 111 i=2, 3, ... ,n 考虑三对角线系数矩阵的线性方程组 f Ax = 这里()T n x x x x ... 2 1 = ,()T n f f f f ... 2 1 = 令y Lx =,则有 f Uy = 于是有 ()?????-== --u y a f y u f y i i i i i 1 1 11 1 * i=2, 3, ... ,n 再根据y Lx =可得到

数值分析实验报告

实验一 误差分析 实验(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 )1.1() ()20()2)(1()(20 1∏=-=---=k k x x x x x p Λ 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 )2.1(0 )(19=+x x p ε 其中ε是一个非常小的数。这相当于是对()中19x 的系数作一个小的扰动。我们希望比较()和()根的差别,从而分析方程()的解对扰动的敏感性。 实验内容:为了实现方便,我们先介绍两个Matlab 函数:“roots ”和“poly ”。 roots(a)u = 其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。设a 的元素依次为121,,,+n a a a Λ,则输出u 的各分量是多项式方程 01121=+++++-n n n n a x a x a x a Λ 的全部根;而函数 poly(v)b = 的输出b 是一个n+1维变量,它是以n 维变量v 的各分量为根的多项式的系数。可见“roots ”和“poly ”是两个互逆的运算函数。 ;000000001.0=ess );21,1(zeros ve = ;)2(ess ve = ))20:1((ve poly roots +

数值计算实验报告

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

数值分析实验报告

实验一、误差分析 一、实验目的 1.通过上机编程,复习巩固以前所学程序设计语言及上机操作指令; 2.通过上机计算,了解误差、绝对误差、误差界、相对误差界的有关概念; 3.通过上机计算,了解舍入误差所引起的数值不稳定性。 二.实验原理 误差问题是数值分析的基础,又是数值分析中一个困难的课题。在实际计算中,如果选用了不同的算法,由于舍入误差的影响,将会得到截然不同的结果。因此,选取算法时注重分析舍入误差的影响,在实际计算中是十分重要的。同时,由于在数值求解过程中用有限的过程代替无限的过程会产生截断误差,因此算法的好坏会影响到数值结果的精度。 三.实验内容 对20,,2,1,0 =n ,计算定积分 ?+=10 5dx x x y n n . 算法1:利用递推公式 151--=n n y n y , 20,,2,1 =n , 取 ?≈-=+=1 00182322.05ln 6ln 51dx x y . 算法2:利用递推公式 n n y n y 51511-= - 1,,19,20 =n . 注意到 ???=≤+≤=10 10202010201051515611261dx x dx x x dx x , 取 008730.0)12611051(20120≈+≈y .: 四.实验程序及运行结果 程序一: t=log(6)-log(5);

n=1; y(1)=t; for k=2:1:20 y(k)=1/k-5*y(k-1); n=n+1; end y y =0.0884 y =0.0581 y =0.0431 y =0.0346 y =0.0271 y =0.0313 y =-0.0134 y =0.1920 y =-0.8487 y =4.3436 y =-21.6268 y =108.2176 y =-541.0110 y =2.7051e+003 y =-1.3526e+004 y =6.7628e+004 y =-3.3814e+005 y =1.6907e+006 y =-8.4535e+006 y =4.2267e+007 程序2: y=zeros(20,1); n=1; y1=(1/105+1/126)/2;y(20)=y1; for k=20:-1:2 y(k-1)=1/(5*k)-(1/5)*y(k); n=n+1; end 运行结果:y = 0.0884 0.0580 0.0431 0.0343 0.0285 0.0212 0.0188 0.0169

南昌大学材料分析方法期末样卷

试卷编号:(A)卷课程编号:H57010004课程名称:材料现代测试分析技术考试形式:闭卷 适用班级:姓名:学号:班级: 学院:专业:考试日期: 题号一二三四五六七八九十总分累分人 签名题分100 得分 考生注意事项:1、本试卷共页,请查看试卷中是否有缺页或破损。如有立即举手报告以便更换。 2、考试结束后,考生不得将试卷、答题纸和草稿纸带出考场。 一、填空题(每空1分,共20分) 得分评阅人 1、当波长为λ的X射线照射到晶体并出现衍射线时,相邻两个(hkl)反射线的波程 差为,相邻两个(HKL)反射线的波程差为。 2、X射线管靶材的选择原则为,滤波片 的选择原则为。 3、在利用X射线衍射仪进行衍射实验时,时间常数的选择对实验的影响较大,时间 常数的增大导致衍射线的,,。这些变化给测量结果带来不利的影响。因此,为了提离测量的精确度,一般希望选用尽可能小的时间常数。 4、透射电镜的物镜光栏装在物镜背焦面,直径20—120um,由无磁金属制成。其作 用是:;;。 5、透射电镜的主要特点是可对试样进行与同位分析.使中间镜 物平面与物镜重合时,在观察屏上得到的是反映试样的图像;当中间镜物平面与物镜重合时,在观察屏上得到的是反映试样 花样。 6、扫描电子显微镜通过接收试样表面发出的二次电子成像.试样表面凸出的尖棱或小 颗粒、陡斜面处,二次电子产额,在荧光屏上这些部位的亮度而平面、凹槽底部处二次电子的产额,荧光屏上相应部位的亮度。

二、辨析并解释下列概念(每题5分,共20分) 得分评阅人 1、光电效应、俄歇效应 2、相干散射、非相干散射 3、质厚衬度、衍射衬度 4、二次电子、背散射电子

(完整版)哈工大-数值分析上机实验报告

实验报告一 题目:非线性方程求解 摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。 前言:(目的和意义) 掌握二分法与Newton法的基本原理和应用。 数学原理: 对于一个非线性方程的数值解法很多。在此介绍两种最常见的方法:二分法和Newton法。 对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b)<0,且f(x)在[a,b]内仅有一个实根x*,取区间中点c,若,则c恰为其根,否则根据f(a)f(c)<0是否成立判断根在区间[a,c]和[c,b]中的哪一个,从而得出新区间,仍称为[a,b]。重复运行计算,直至满足精度为止。这就是二分法的计算思想。

Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式 产生逼近解x*的迭代数列{x k},这就是Newton法的思想。当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。另外,若将该迭代公式改进为 其中r为要求的方程的根的重数,这就是改进的Newton法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。 程序设计: 本实验采用Matlab的M文件编写。其中待求解的方程写成function的方式,如下 function y=f(x); y=-x*x-sin(x); 写成如上形式即可,下面给出主程序。 二分法源程序: clear %%%给定求解区间 b=1.5; a=0;

%%%误差 R=1; k=0;%迭代次数初值 while (R>5e-6) ; c=(a+b)/2; if f12(a)*f12(c)>0; a=c; else b=c; end R=b-a;%求出误差 k=k+1; end x=c%给出解 Newton法及改进的Newton法源程序:clear %%%% 输入函数 f=input('请输入需要求解函数>>','s') %%%求解f(x)的导数 df=diff(f);

数值分析实验报告总结

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

如果 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 ,那 外,还规定其必须满足相容性: 所以

南昌大学实验报告-声速测量资料

声速测量(实验报告格式) 课程名称:大学物理实验 实验名称:声速测量 学院:专业班级: 学生姓名:学号: 实验地点:104 座位号: 实验时间:第周星期一下午16点开始 一、实验项目名称:声速测量 二、实验目的: 1、学会测量超声波在空气中的传播速度方法。 2、理解驻波和振动合成理论。 3、学会逐差法进行数据处理。 4、了解压电换能器的功能和培养综合使用仪器的能力。 三、实验原理: 根据声速、声波频率、波长间的关系:λf v=,测得声波

的频率和波长,就可求的声速。声波频率由信号发生器产生,可直接显示,故只需测得声波波长即可。有驻波法和相位法。 1、驻波法 实验时将信号发生器输出的正弦电压信号接到发射超声换能器上,超声发射换能器通过电声转换,将电压信号变为超声波,以超声波形式发射出去。接收换能器通过声电转换,将声波信号变为电压信号后,送入示波器观察。设沿x 方向射出的入射波方称为:)2cos(1x wt A y λ π -=,反射方程: )2cos(2x wt A y λ π + =,A 为声源振幅,w 为角频率,x λ π2为由于波 动传播到坐标x 处引起的相位变化。所以合振动方程:y=y1+y2=wt x A cos )2cos 2(λ π ;在声驻波中,波腹处声压(空气中 由于声扰动而引起的超出静态大气压强的那部分压强)最小,而波节处声压最大。当接收换能器的反射界面处为波节时,声压效应最大,经接收器转换成电信号后从示波器上观察到的电压信号幅值也是极大值,所以可从接收换能器端面声压的变化来判断超声波驻波是否形成。移动卡尺游标,改变两只换能器端面的距离,在一系列特定的距离上,媒质中将出现稳定的驻波共振现象,此时,两换能器间的距离等于半波长的整数倍,只要我们监测接收换能器输出电压幅度的变化,记录下相邻两次出现最大电压数值时(即接收器位于波节处)卡尺的读数(两读数之差的绝对值等于半波长),

数值分析实验报告

学生实验报告实验课程名称 开课实验室 学院年级专业班 学生姓名学号 开课时间至学年学期

if(A(m,k)~=0) if(m~=k) A([k m],:)=A([m k],:); %换行 end A(k+1:n, k:c)=A(k+1:n, k:c)-(A(k+1:n,k)/ A(k,k))*A(k, k:c); %消去end end x=zeros(length(b),1); %回代求解 x(n)=A(n,c)/A(n,n); for k=n-1:-1:1 x(k)=(A(k,c)-A(k,k+1:n)*x(k+1:n))/A(k,k); end y=x; format short;%设置为默认格式显示,显示5位 (2)建立MATLAB界面 利用MA TLAB的GUI建立如下界面求解线性方程组: 详见程序。 五、计算实例、数据、结果、分析 下面我们对以上的结果进行测试,求解:

? ? ? ? ? ? ? ? ? ? ? ? - = ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? - - - - - - 7 2 5 10 13 9 14 4 4 3 2 1 13 12 4 3 3 10 2 4 3 2 1 x x x x 输入数据后点击和,得到如下结果: 更改以上数据进行测试,求解如下方程组: 1 2 3 4 43211 34321 23431 12341 x x x x ?? ???? ?? ???? ?? ???? = ?? ???? - ?? ???? - ???? ?? 得到如下结果:

南昌大学材料学院毕业设计开题报告

本科生毕业论文开题报告题目:太阳电池表面光谱响应增强研究 学院:材料科学与工程 专业:材料物理 班级:材料物理102班 学号:5703110048 姓名:涂志明 指导教师:孙喜莲 填表日期:2014 年 2 月25 日

一、选题的依据及意义 从太阳电池的应用角度来说,太阳电池的光谱响应特性与光源的辐射光谱特性相匹配是非常重要的,这样可以更充分地利用光能和提高太阳电池的光电转化效率。最佳状态当然是全太阳光谱响应都是100%,但这是不可能实现的。那么就要让太阳光能量集中的光谱波段(STC标准是400-1100nm)得到尽量大的光谱响应百分比。 研究证明,利用各种金属纳米微粒在薄膜太阳电池表面产生的等离子光散射与俘获效应,可以有效地增加太阳电池对入射光子能量的吸收,由此达到提升太阳电池效率的目的。 对太阳电池表面光谱响应增强研究能够有效提高太阳电池光吸收效率。这对太阳能能源应用,普及,科研具有重要的意义。 二、国内外研究现状及发展趋势(含文献综述) 晶硅太阳电池研究中为了提高太阳电池对太阳光各波段的吸收,太阳能工作者一直致力于提高太阳电池的光谱响应。其中提高短波响应的方法主要有扩散浅结、在电池片光照面制减反射膜。扩散浅结可以减少“死层”的影响,增加光生载流子的收集率,提高短波响应。提高长波响应的方法主要制作背场电池,高低结减少了表面复合损失,在铝深扩散尾部的吸杂作用有助于增加体少子寿命,高温处理形成的金属间相有利于光的囚禁,从而增强了光谱近红外区的响应比。国外对太阳电池的光谱响应非常重视,国内主要在光谱响应测试方法的改进上进行了一些研究!,而在提高太阳电池的光谱响应上还有大量工作要做【1】。 而对于有机太阳电池,目前人们主要通过合成窄带隙的有机共轭分子来提高太阳光的吸收效率【2】同无机半导体的宽光谱吸收不同, 有机共轭半导体材料的光谱吸收通常为谱带式吸收, 因而具有吸收波峰及波谷位置.因此, 传统的单一共混异质结结构的太阳电池器件的外量子效率(EQE)会在材料吸收的波谷处较低, 不能充分利用这个波段的光子能量. 例如,Yu 【3】报道了(4,8-二烷氧基苯并二噻吩)-(4-氟代噻并[3,4-b]噻吩)共聚合物(PTB4), 其薄膜光谱吸收带在600-750 nm, 而在400-550 nm处的吸光较弱, 利用其与PC61BM 制得的光伏器件在400-550 nm 处的外量子效率仅为40%左右在一定程度上限制了器件的整体效率. 利用在可见光区有更强吸收能力的C70富勒烯衍生物PC71BM 替代吸收较弱的PC61BM 可以在一定程度上弥补对光谱响应能力的不足, 提高器件整体

数值分析2016上机实验报告

序言 数值分析是计算数学的范畴,有时也称它为计算数学、计算方法、数值方法等,其研究对象是各种数学问题的数值方法的设计、分析及其有关的数学理论和具体实现的一门学科,它是一个数学分支。是科学与工程计算(科学计算)的理论支持。许多科学与工程实际问题(核武器的研制、导弹的发射、气象预报)的解决都离不开科学计算。目前,试验、理论、计算已成为人类进行科学活动的三大方法。 数值分析是计算数学的一个主要部分,计算数学是数学科学的一个分支,它研究用计算机求解各种数学问题的数值计算方法及其理论与软件实现。现在面向数值分析问题的计算机软件有:C,C++,MATLAB,Python,Fortran等。 MATLAB是matrix laboratory的英文缩写,它是由美国Mathwork公司于1967年推出的适合用于不同规格计算机和各种操纵系统的数学软件包,现已发展成为一种功能强大的计算机语言,特别适合用于科学和工程计算。目前,MATLAB应用非常广泛,主要用于算法开发、数据可视化、数值计算和数据分析等,除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。 本实验报告使用了MATLAB软件。对不动点迭代,函数逼近(lagrange插值,三次样条插值,最小二乘拟合),追赶法求解矩阵的解,4RungeKutta方法求解,欧拉法及改进欧拉法等算法做了简单的计算模拟实践。并比较了各种算法的优劣性,得到了对数值分析这们学科良好的理解,对以后的科研数值分析能力有了极大的提高。

目录 序言 (1) 问题一非线性方程数值解法 (3) 1.1 计算题目 (3) 1.2 迭代法分析 (3) 1.3计算结果分析及结论 (4) 问题二追赶法解三对角矩阵 (5) 2.1 问题 (5) 2.2 问题分析(追赶法) (6) 2.3 计算结果 (7) 问题三函数拟合 (7) 3.1 计算题目 (7) 3.2 题目分析 (7) 3.3 结果比较 (12) 问题四欧拉法解微分方程 (14) 4.1 计算题目 (14) 4.2.1 方程的准确解 (14) 4.2.2 Euler方法求解 (14) 4.2.3改进欧拉方法 (16) 问题五四阶龙格-库塔计算常微分方程初值问题 (17) 5.1 计算题目 (17) 5.2 四阶龙格-库塔方法分析 (18) 5.3 程序流程图 (18) 5.4 标准四阶Runge-Kutta法Matlab实现 (19) 5.5 计算结果及比较 (20) 问题六舍入误差观察 (22) 6.1 计算题目 (22) 6.2 计算结果 (22) 6.3 结论 (23) 7 总结 (24) 附录

数值分析实验报告资料

机电工程学院 机械工程 陈星星 6720150109 《数值分析》课程设计实验报告 实验一 函数插值方法 一、问题提出 对于给定的一元函数)(x f y =的n+1个节点值(),0,1,,j j y f x j n ==。试用Lagrange 公式求其插值多项式或分段二次Lagrange 插值多项式。 数据如下: (1 求五次Lagrange 多项式5L ()x ,计算(0.596)f ,(0.99)f 的值。(提示:结果为(0.596)0.625732f ≈, (0.99) 1.05423f ≈) 实验步骤: 第一步:先在matlab 中定义lagran 的M 文件为拉格朗日函数 代码为: function[c,l]=lagran(x,y) w=length(x); n=w-1; l=zeros(w,w); for k=1:n+1 v=1; for j=1:n+1 if(k~=j) v=conv(v,poly(x(j)))/(x(k)-x(j)); end end l(k,:)=v; end c=y*l; end

第二步:然后在matlab命令窗口输入: >>>> x=[0.4 0.55 0.65 0.80,0.95 1.05];y=[0.41075 0.57815 0.69675 0.90 1.00 1.25382]; >>p = lagran(x,y) 回车得到: P = 121.6264 -422.7503 572.5667 -377.2549 121.9718 -15.0845 由此得出所求拉格朗日多项式为 p(x)=121.6264x5-422.7503x4+572.5667x3-377.2549x2+121.9718x-15.0845 第三步:在编辑窗口输入如下命令: >> x=[0.4 0.55 0.65 0.80,0.95 1.05]; >> y=121.6264*x.^5-422.7503*x.^4+572.5667*x.^3-377.2549*x.^2+121.9718 *x-15.0845; >> plot(x,y) 命令执行后得到如下图所示图形,然后 >> x=0.596; >> y=121.6264*x.^5-422.7503*x.^4+572.5667*x.^3-377.2549*x.^2+121.9718 *x-15.084 y =0.6257 得到f(0.596)=0.6257 同理得到f(0.99)=1.0542

[工学]南昌大学材料热力学答案

The problems of the first law 1.1 a lead bullet is fired at a frigid surface. At what speed must it travel to melt on impact, if its initial temperature is 25℃ and heating of the rigid surface of the rigid surface is neglected? The melting point of lead is 327℃. The molar heat of fusion of the lead is 4.8kJ/mol. The molar heat capacity C P of lead may be taken as 29.3J/(mol K) Solution: ) /(363102.2072 1 ]108.4)25327(3.29[2 1 21) (2332 2s m V v n n W Q nMv mv W H T C n Q Q Q absorb melting p melt increase absorb =?=?+-?=== ?+?=+=- 1.2 what is the average power production in watts of a person who burns 2500 kcal of food in a day? Estimate the average additional powder production of 75Kg man who is climbing a mountain at the rate of 20 m/min Solution ) /(24560 208.975)/(12160 602410467000 //) (104670001868.4102500sin 3S J t h mg P S J t Q t W P J Q g increa Burning Burning =??=?==??= ===??= 1.3 One cubic decimeter (1 dm 3) of water is broken into droplets having a diameter of one micrometer (1 um) at 20℃. (a) what is the total area of the droplets? (b) Calculate the minimum work required to produce the droplets. Assume that the droplets are rest (have zero velocity) Water have a surface tension of 72.75 dyn/cm at 20℃ (NOTES: the term surface energy (ene/cm 2) is also used for surface tension dyn/cm) Solution ) (6.436)106103(1075.72) (106)105.0(4)105.0(3 4 )101(23252326363 1J S W m nS S Single total =?-???=?=?=????????= =-+----σππ 1.4 Gaseous helium is to be used to quench a hot piece of metal. The helium is in storage in an insulated tank with a volume of 50 L and a temperature of 25℃, the pressure is 10 atm. Assume that helium is an ideal gas. (a) when the valve is opened and the gas escapes into the quench chamber (pressure=1 atm), what will be the temperature of the first gas to hit the specimen? (b) As the helium flows, the pressure in the tank drops. What will be the temperature of the helium entering the quench chamber when the pressure in the tank has fallen to 1 atm?

南昌大学历年考研专业课资料

2012 南昌大学管理学考研试题 一、名词解释(每题4分) 1.管理 2.网络图 3.领导 4.部门化 5.组织文化 二、单选(20题,每题1分) 三、问答题(5题,每题6分) 1.人际关系理论的要点 2.领导方式是哪三个函数的变量 3.比较书面沟通与口头沟通 4.管理者与被管理者的职能是如何影响管理幅度的 四、辨析题(每题10分) 1.从决策的角度辨析,“自古华山一条路”和“条条大路通罗马” 2.辨析“计划是事前的事,控制是事后的事” 五、论述题(每题15分) 1.假如你是企业的领导者,你如何培养及发挥你的领导艺术 2.有人说企业应该尽量避免冲突,你怎么认为,并说明如何减少和避免冲突 六、材料分析题 案例一(五道选择,每题2分) 案例二 1.论述目标管理的基本思想及目标管理的实施步骤(6分) 2.从案例分析该企业CEO在执行目标管理的哪些方面存在问题(8分) 3.如果目标管理的实施没有得到成功,你认为有哪些原因(6分) 2010年南昌大学管理学考研试题 1.把以前的看熟悉 2.论述题第二题试论组织文化的功能及塑造途径、第三题有效沟通的障碍及障碍的消除方式 2010年南昌大学行政学考研试题

一、名词解释 6×5 1.政治行政二分法 2.公共组织 3.公共预算 4.公共物品 二、简答题 5×15 1.西方公务员制度的基本特征 2.学习型组织 3.公共行政的科学化与民主化 4.什么是行政问责制 5.民主行政与非政府组织的参与理论 三、论述题(前面两题每题各15分,后面一题30分) 1.我国目前环境治理中存在的问题以及如何有效的治理环境2.论述网络时代的舆论对公共管理的作用 3.论述我国公共行政中的问题并提出改革思路 2009年南昌大学管理学考研试题 一、简述题(每题15分) 1.简述马克斯。韦伯的官僚制的主要特征。 2.简要评述公平理论。 3.简述领导与管理的异同。 4.简述现代管理的决策过程。 5.简述员工外部招聘的优劣。 6.简述控制的必要性。 二、分析、论述题(每题20分) 1.试分析现代管理的战略环境。 2.试论组织文化的核心内容与塑造途径。 3.试分析组织内冲突的原因与冲突管理方式。 2009年南昌大学行政学考研试题

数值分析实验报告1

实验一 误差分析 实验1.1(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 )1.1() ()20()2)(1()(20 1∏=-=---=k k x x x x x p 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 )2.1(0 )(19=+x x p ε 其中ε是一个非常小的数。这相当于是对(1.1)中19x 的系数作一个小的扰动。我们希望比较(1.1)和(1.2)根的差别,从而分析方程(1.1)的解对扰动的敏感性。 实验内容:为了实现方便,我们先介绍两个Matlab 函数:“roots ”和“poly ”。 roots(a)u = 其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。设a 的元素依次为121,,,+n a a a ,则输出u 的各分量是多项式方程 01121=+++++-n n n n a x a x a x a 的全部根;而函数 poly(v)b = 的输出b 是一个n+1维变量,它是以n 维变量v 的各分量为根的多项式的系数。可见“roots ”和“poly ”是两个互逆的运算函数。 ;000000001.0=ess );21,1(zeros ve = ;)2(ess ve =

相关主题
文本预览
相关文档 最新文档