数值分析课程的实验报告.doc_第1页
数值分析课程的实验报告.doc_第2页
数值分析课程的实验报告.doc_第3页
数值分析课程的实验报告.doc_第4页
数值分析课程的实验报告.doc_第5页
免费预览已结束,剩余9页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数值分析课程的实验报告 实 验 报 告实验课程 学生姓名 学 号 专业班级 2012年 6 月 8 日目 录-1用C语言或C编程显示字母T与53-2原子弹爆炸能量估计11-3城市水管埋多深15-4实现PageRank算法18计算机系数值分析实验报告-1用C语言或C编程显示字母T与5学生姓名 学 号 专业班级 实验类型 验证 综合 设计 创新 实验日期2012420 实验成绩 一实验目的用C语言或C编程显示字母T与5二实验基本原理和内容Bezier曲线生成1确定曲线的阶次 2计算Bernstein基函数的表达式B03 t 1-t 3 B13 t 3t 1-t 2 B23 t 3t2 1-t B33 t t33把Bezier曲线中的Pk写成分量坐标的形式4确定一合适的步长控制t从0到1变化求出一系列 xy 坐标点将其用小线段顺序连接起来 三算法分析对于二维平面的情况只有xy坐标分量可以给出四点三次Bezier曲线如下的算法描述输入阶次3 控制顶点4个 x0y0 x3y3 begin x x0 y y0 moveto xy for t0 to 1 step t xB03 t x0B13 t x1B23 t x2B33 t x3 yB03 t y0B13 t y1B23 t y2B33 t y3 lineto xy endfor end三次Bezier曲线例子 设在平面上给定的7个控制点坐标分别为A100300B120200C220200D270100E370100 F420200G420300画出其曲线四实验内容和过程代码 xxcpp Defines the entry point for the applicationinclude stdafxhinclude resourcehdefine _LOADSTRING 100 Global VariablesHINSTANCE hInst current instanceTCHAR szTitle_LOADSTRING The title bar textTCHAR szWindowClass_LOADSTRING The title bar text Foward declarations of functions included in this code moduleATOMMyRegisterClass HINSTANCE hInstance BOOLInitInstance HINSTANCE int LRESULT CALLBACKWndProc HWND UINT WPARAM LPARAM LRESULT CALLBACKAbout HWND UINT WPARAM LPARAM 要我们加的数据 int xT154 237237237237237237226143143143143143143143435435435435435435435353339339339339339339339507529552552552576576576576570570570570666600002424244871183183183237237 int yT154 6206201201201203524191919000000001919192336109109108620620620620602492492492492492492492662662662662662662662662492492492492492492492602620620620620620620 int x5214 1491491493453453613563683684063684064063974063973973823723513513513511421423314233333232323232354444741091491492693243243243242641851851651491191198665424214000046121121205282333333378399399399399381333333288232112112112149149 int y5214 597597597597597597599606606695606695695702695702702681676676676676676676676439676439439438436434434428426426426426420408408372310208208112373737374466669099999999876262240000277878123180256256327372422422468491512512512597597 int APIENTRY WinMain HINSTANCE hInstance HINSTANCE hPrevInstance LPSTRlpCmdLine int nCmdShow TODO Place code hereMSG msgHACCEL hAccelTable Initialize global stringsLoadString hInstance IDS_APP_TITLE szTitle _LOADSTRING LoadString hInstance IDC_XX szWindowClass _LOADSTRING MyRegisterClass hInstance Perform application initializationif InitInstance hInstance nCmdShow return FALSE hAccelTable LoadAccelerators hInstance LPCTSTR IDC_XX Main message loopwhile GetMessage msg NULL 0 0 if TranslateAccelerator msghwnd hAccelTable msg TranslateMessage msg DispatchMessage msg return msgwParam FUNCTION MyRegisterClass PURPOSE Registers the window class COMMENTSThis function and its usage is only necessary if you want this code to be compatible with Win32 systems prior to the RegisterClassEx function that was added to Windows 95 It is important to call this function so that the application will get well formed small icons associated with itATOM MyRegisterClass HINSTANCE hInstance WNDCLASSEX wcexwcexcbSize sizeof WNDCLASSEX wcexstyle CS_HREDRAW CS_VREDRAWwcexlpfnWndProc WNDPROC WndProcwcexcbClsExtra 0wcexcbWndExtra 0wcexhInstance hInstancewcexhIcon LoadIcon hInstance LPCTSTR IDI_XX wcexhCursor LoadCursor NULL IDC_ARROW wcexhbrBackground HBRUSH COLOR_WINDOW1 wcexlpszMenuName LPCSTR IDC_XXwcexlpszClassName szWindowClasswcexhIconSm LoadIcon wcexhInstance LPCTSTR IDI_SMALL return RegisterClassEx wcex FUNCTION InitInstance HANDLE int PURPOSE Saves instance handle and creates main window COMMENTSIn this function we save the instance handle in a global variable and create and display the main program windowBOOL 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 FUNCTION WndProc HWND unsigned WORD LONG PURPOSE Processes messages for the main window WM_COMMAND- process the application menu WM_PAINT- Paint the main window WM_DESTROY- post a quit message and returnLRESULT CALLBACK WndProc HWND hWnd UINT message WPARAM wParam LPARAM lParam int wmId wmEventPAINTSTRUCT psHDC hdcTCHAR szHello_LOADSTRINGLoadString hInst IDS_HELLO szHello _LOADSTRING switch message case WM_COMMANDwmId LOWORD wParam wmEvent HIWORD wParam Parse the menu selectionsswitch wmId case IDM_ABOUT DialogBox hInst LPCTSTR IDD_ABOUTBOX hWnd DLGPROC About breakcase IDM_EXIT DestroyWindow hWnd breakdefault return DefWindowProc hWnd message wParam lParam breakcase WM_PAINThdc BeginPaint hWnd ps TODO Add any drawing code hereRECT rtGetClientRect hWnd rt 要我们加的代码 int xyidouble tfor i 0i 15i for t 000t 1t t000001 x int xTi0 1-t 1-t 1-t xTi13 1-t 1-t txTi23 1-t ttxTi3ttt 3y 300- int yTi0 1-t 1-t 1-t yTi13 1-t 1-t tyTi23 1-t ttyTi3ttt 3SetPixel hdc 100x yRGB 25500 for i 0i 21i for t 000t 10t t000001 x int x5i0 1-t 1-t 1-t x5i13 1-t 1-t tx5i23 1-t ttx5i3ttt 4y 300- int y5i0 1-t 1-t 1-t y5i13 1-t 1-t ty5i23 1-t tty5i3ttt 4SetPixel hdc 300x yRGB 25500 EndPaint hWnd ps breakcase WM_DESTROYPostQuitMessage 0 breakdefaultreturn DefWindowProc hWnd message wParam lParam return 0 Mesage handler for about boxLRESULT CALLBACK About HWND hDlg UINT message WPARAM wParam LPARAM lParam switch message case WM_INITDIALOGreturn TRUEcase WM_COMMANDif LOWORD wParam IDOK LOWORD wParam IDCANCEL EndDialog hDlg LOWORD wParam return TRUE break return FALSE 五实验结果截图六实验心得Bezier曲线的形状是通过一组多边折线特征多边形的各顶点唯一地定义出来的其中只有第一个点和最后一个点在曲线上其余的顶点则用定义曲线的导数阶次和形状来确定通过实验熟悉了在Microsoft Visual Studio 60集成开发环境下实现用样条插值的方法作出Bezier曲线实验刚开始时由于不熟悉操作平台不知道如何下手修改程序后询问同学然后自己再动手操作注意各坐标点的数据一定要细心最后终于成功生成字母T的曲线计算机系数值分析实验报告-2原子弹爆炸能量估计学生姓名 学 号 专业班级 实验类型 验证 综合 设计 创新 实验日期2012427 实验成绩 一实验目的用计算机估算出原子弹爆炸的能量二实验原理1问题背景1945年7月16日美国试爆第一颗原子弹1945年7月16日上午5时24分美国科学家在新墨西哥州阿拉莫戈夫的三一试验场内的一个30米高的铁塔上进行试验 试爆了全球第一颗原子弹两年以后美国政府首次公开了这次爆炸的录影带没有发布任何有关的数据如何对原子弹爆炸的能量进行估计Taylor通过研究这次爆炸的录影带建立数学模型对这次爆炸所释放的能量进行了估计Taylor知道爆炸是能量的释放过程在一点上突然释放大量的能量爆炸的表面形成一个球面以冲击波的形式在空气中向外传播冲击波通过爆炸形成的蘑菇云反映出来Taylor研究录影带测量出从爆炸开始不同时刻爆炸所产生的蘑菇云的半径 单位t ms r m t r t tr t tr t tr t t r t 010 111 080 com com com com com com com com com com com com com com com com com com com com com com com com模型假设1爆炸是在一点突然发生在压强为p的空气中传播2同一时间只有一点发生爆炸传播的空间没有大型障碍物阻止3爆炸开始的时间定位在t 0爆炸的能量完全释放模型建立与求解这是一个力学问题基本量纲选作长度L质量M时间T上述涉及到的物理量的量纲可表为r Le P t T且基本量纲数n 3 问题物理量数m 5可写出量纲矩阵A Rank A 3解齐次线性方程组 Ay 0方程组有mr 53 2个基本解可取上式给出了两个相互独立的无量纲量即由上得 Taylor认为对于原子弹爆炸来说经历时间非常短所释放的能量非常大 Taylor根据一些小型爆炸实验数据最终建议因此结果表明半径与大气压强无关当成正比3求解过程首先改写蘑菇晕半径的公式为r atb的形式通过测量数据拟合出参数a和b来验证量纲分析法得到的公式要作线性最小二乘拟合进一步改写公式为Lnr lnablnt根据测量数据我们得到lnr和lnt的数据将它们的函数关系拟合为一次多项式得到洗漱b 04094其值与前面分析的结果25非常接近从而验证了量纲分析得到的公式为了更为准确的计算爆炸能量E将蘑菇云半径公式改写为5lnr-2lnt lnEP c此时可根据测量数据得到5lnr-2lnt对应的一组数据将它拟合为0次多项式常数设得到拟合系数为c则EPec根据此方法算出E864181013单位为焦耳查表得1kt 41841012因此爆炸能量越等于2065kt三实验内容程序代码实现include include include void main int ifloat TNT_1kt 41841XXXXXXXXXX00float Ep 125float abfloat r25 11119925428831934236338941042844446046948759061162964365697310651300145017501850 float t25 0100001024000103800010520001066000108000010940001108000112200011360001150000116500011790001193000132600013530001380000140700014340001461000115000012500001340000153000016200001 float ln_r25ln_t25for i 0i 25i ln_ri log ri ln_ti log ti float m1 0m2 0m3 0n1 0n2 0for i 0i 25i m1 25m2 m2ln_tim3 m3ln_tiln_tin1 n1ln_rin2 n2ln_tiln_ri a n1m3-n2m2 m3m1-m2m2 b n1m2-n2m1 m2m2-m1m3 printf 由量纲法得到蘑菇云半径近似表达式为 r t2EP 15 n printf 蘑菇云半径公式改写为r atbn printf 做线性拟合公式进一步改写为ln_r abln_t 其中a ln Ep 15 n printf a fna printf b fnb printf ln_r ffln_tnab floatv 5ln_r5-2ln_t5E pexp v printf fnv float Ee pexp 5a printf fnE printf fnEe float TNT ETNT_1kt printf fTNT 最小二乘拟合线性无关族取0 x 11 x x权取x 10 x 00 m1 01 m2 11 m3 0y n1 1y n2四实验结果五实验心得通过这一次实验我对最小二乘法的了解更加深刻开始时不知道最小二乘拟合具体是什么意思所以搞不清楚题意通过查资料和询问同学了解到其是离散情形下的最佳平方逼近因蘑菇云半径的公式为r atb为非线性的表达式所以要转化为线性最小二乘来解决问题把公式化为lnr lnab lnt 的形式求拟合已知数据的最小二乘解的关键就是建立并求解法方程组计算机系数值分析实验报告-3城市水管埋多深学生姓名 学 号 专业班级 实验类型 验证 综合 设计 创新 实验日期 2012511 实验成绩 一实验目的用计算机算出城市水管应埋于地下多深二实验原理问题背景在冬季寒冷的大城市必须保证埋于地下的水管不冻结在寒冷季节地面土壤的温度很低而越深入地下温度越高因此水管应该埋得越深越好但相应的施工难度及成本也越大问在保证水管不冻结埋水管的深度如何确定建模由于土壤的热传导作用冬季寒流到来后地下土壤的温度会逐渐降低因此它既是深度x也是时间t的函数经仔细分析有如下方程说明T xt 土壤温度函数x为深度t为时间Ti 寒流到来前的正常土壤温度Ts 寒流季节的地面温度易知方程左端为0到1之间t 0时值为1x 0时值为0要确定最合适的深度可假设寒冷最长时间为tm 由于为结冰温度则T xt 0对度的x为所求于是有求解条件三实验内容 代码实现include include include void main double erf double x double pi 31415926double Ti 20Ts -15double a 0138e-6double tm 60243600double h 00001步长int i 1累加次数double zhi 0每步累加后值double c 0double d 1printf 积分的过程n while fabs d 000001 精度为000001 zhi herf cih zhid -Ts Ti-Ts - 2sqrt pi zhiiprintf f lfn ih d system cls 清屏double z 2sqrt atm i-1 hprintf 深度为lfnz printf a double erf double x double yy exp -xx return y 四实验结果截图五实验心得由于公式中含有变上限积分开始时总是积不出结果后来想到求导变上限积分后为原函数因此不用费力将积分积出结果然后就是将公式f x fd x 等给出的求解条件再用CC语言表达出来要实现迭代出正确结果的时候比较麻烦因为开始没有确定到底应该用哪种迭代法更加简便通过询问和参考同学的程序后了解到使用牛顿迭代可使计算简化还有就是注意深度初值的设定的合理性不然最后迭代出的结果就会不符合实际计算机系数值分析实验报告-4实现PageRank算法学生姓名 学 号 专业班级 实验类型 验证 综合 设计 创新 实验日期 2012525 实验成绩 一实验目的用C语言或C编程实现Google 的PageRank算法二实验原理PageRank技术的基本原理是如果网页A链接到网页B则认为网页A投了网页B一票而且如果网页A是级别高的网页则网页B的级别也相应地高要计算PageRank可假设一个随机上网冲浪的过程即每次看完当前网页后有两种选择在当前网页中随机选一个超链接进入下一个网页随机地新开一个网页这在数学上称为马尔可夫过程若这样的随机冲浪一直进行下去某个网页被访问到的极限概率就是它的PageRank设p为选择当前网页上链接的概率比如p 085则1-p为不选当前网页的链接而随机打开一个网页的概率若当前网页是网页j则如何计算下一步浏览到达网页i的概率网页j到i的转移概率它有两种可能性若网页i在网页j的链接上其概率为p1cj 1-p 1n2若网页i不在网页j的链接上其概率为 1-p 1n由于网页i是否在网页j的链接上由gij决定网页j到i的转移概率为 应注意到的是若cj 0意味着gij 0上式改为aij 1n任意两个网页之间的转移概率形成了一个转移矩阵A aij设矩阵D为各个网页出度的倒数若没有出度设为1构成的n阶对角阵e为全是1的n维向量则设表示某时刻k浏览网页i的概率向量x k 表示当前时刻浏览各网页的概率分布那么下一时刻浏览到网页i的概率为此时浏览各网页的概率分布为x k1 Ax k 当这个过程无限进行下去达到极限情况即网页访问概率x k 收敛到一个极限值这个极限向量x为各网页的PageRank它满足Ax x且三实验内容代码实现 PageRankhinclude include include include using namespace std use graph store webpage weight representlink timesclass 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 Node 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 Node linkin_nodes_ set Node linkout_nodes_ double page_rank_ class PageRank public PageRank double q 085 PageRank void void Calc vector Node nodes int n double Calc Node node void PrintPageRank vector Node nodes private double q_ 阻尼系数 PageRankcppinclude pagerankhinclude PageRankPageRank double q q_ q q_ must 1 PageRankPageRank void 迭代计算n次 void PageRankCalc vector Node nodes int n for in

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论