1341901124-武易-计算方法

更新时间:2023-12-08 04:56:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

计算方法实验报告

1341901124

武易

计算机科学与技术

实验一——插值方法

一实验目的

通过本次上机实习,能够进一步加深对各种插值算法的理解;学会使用用三种类型的插值函数的数学模型、基本算法,结合相应软件(如VC/VB/Delphi/Matlab/JAVA/Turbo C)编程实现数值方法的求解。并用该软件的绘图功能来显示插值函数,使其计算结果更加直观和形象化。

二实验内容

通过程序求出插值函数的表达式是比较麻烦的,常用的方法是描出插值曲线上尽量密集的有限个采样点,并用这有限个采样点的连线,即折线,近似插值曲线。取点越密集,所得折线就越逼近理论上的插值曲线。本实验中将所取的点的横坐标存放于动态数组于动态数组Y[n]中。

X[n]中,通过插值方法计算得到的对应纵坐标存放

三 源程序清单

Cahzhi.cpp

// cahzhi.cpp : 定义应用程序的入口点。 //

#include\ #include\ #include\ #include\ #include #include usingnamespace std; #defineMAX_LOADSTRING 100

// 全局变量:

HINSTANCE hInst; // 当前实例 WCHAR szTitle[MAX_LOADSTRING]; // 标题栏文本 WCHAR szWindowClass[MAX_LOADSTRING]; // 主窗口类名 WCHAR errorMsg[MAX_LOADSTRING];

vector vp; vector wvp;

//取点

//相应窗体点

POINT oriWin;

//原点

// 此代码模块中包含的函数的前向声明:

ATOM MyRegisterClass(HINSTANCE hInstance); BOOL InitInstance(HINSTANCE, int); LRESULTCALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); INT_PTRCALLBACK About(HWND, UINT, WPARAM, LPARAM);

intAPIENTRY wWinMain(_In_HINSTANCEhInstance, _In_opt_HINSTANCEhPrevInstance, _In_LPWSTRlpCmdLine, _In_intnCmdShow) {

UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine);

// TODO: 在此放置代码。 // 初始化全局字符串

LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); LoadStringW(hInstance, IDC_CAHZHI, szWindowClass, MAX_LOADSTRING);

// 执行应用程序初始化:

if (!InitInstance (hInstance, nCmdShow)) { returnFALSE; }

HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_CAHZHI));

MSG msg;

// 主消息循环:

while (GetMessage(&msg, nullptr, 0, 0)) {

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

TranslateMessage(&msg); DispatchMessage(&msg); } }

return (int) msg.wParam;

LoadStringW(hInstance, IDS_ERROR, errorMsg, MAX_LOADSTRING); MyRegisterClass(hInstance);

} //

// 函数: MyRegisterClass() //

// 目的: 注册窗口类。 //

ATOM MyRegisterClass(HINSTANCEhInstance) {

WNDCLASSEXW wcex;

wcex.cbSize = sizeof(WNDCLASSEX);

wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = WndProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0;

wcex.hInstance = hInstance;

wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_CAHZHI)); wcex.hCursor = LoadCursor(nullptr, IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_CAHZHI); wcex.lpszClassName = szWindowClass;

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

return RegisterClassExW(&wcex); } //

// 函数: InitInstance(HINSTANCE, int) //

// 目的: 保存实例句柄并创建主窗口 //

// 注释: //

// 在此函数中,我们在全局变量中保存实例句柄并 // 创建和显示主程序窗口。 //

BOOL InitInstance(HINSTANCEhInstance, intnCmdShow) {

hInst = hInstance; // 将实例句柄存储在全局变量中

HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);

if (!hWnd) {

returnFALSE; }

ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd);

returnTRUE; } //

// 函数: WndProc(HWND, UINT, WPARAM, LPARAM) //

// 目的: 处理主窗口的消息。 //

// WM_COMMAND - 处理应用程序菜单 // WM_PAINT - 绘制主窗口

// WM_DESTROY - 发送退出消息并返回 // //

LRESULTCALLBACK WndProc(HWNDhWnd, UINTmessage, WPARAMwParam, LPARAMlParam) {

staticint cxClient, cyClient; staticPOINT curPoint;

staticuint16_t choiceL=0, choiceN=0, choiceS=0; staticTCHAR curCoor[10]; staticint coorLen; staticRECT txtRect;

SetRect(&txtRect, 0, 0, 100,20); vLConverToW(vp, oriWin, wvp); staticvector vpDeal; vpDeal.clear();

vpDeal = pointDeal(vp);

switch (message) {

caseWM_COMMAND: {

int wmId = LOWORD(wParam); // 分析菜单选择: switch (wmId)

{ 5);

InvalidateRect(hWnd, NULL, true); break;

if (vp.size()) { } break;

if (vp.size()) { } break;

if (vp.size()) { } break; vp.clear();

choiceL = choiceN = choiceS = false; InvalidateRect(hWnd, NULL, true); break;

choiceS = true;

InvalidateRect(hWnd, NULL, false); choiceN = true;

InvalidateRect(hWnd, NULL, false); choiceL = true;

InvalidateRect(hWnd, NULL, false);

caseID_RDPT:

rnPointCt(vp, -cxClient / 2, cxClient / 2, -cyClient / 2, cyClient / 2,

caseID_LARGERANGE:

caseID_NEWTON:

caseID_SPLINE:

caseID_CLEAR:

caseIDM_ABOUT:

DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); break; caseIDM_EXIT:

DestroyWindow(hWnd); break; default:

returnDefWindowProc(hWnd, message, wParam, lParam); } } break;

caseWM_SIZE: {

cxClient = LOWORD(lParam); cyClient = HIWORD(lParam);

本文来源:https://www.bwwdw.com/article/493t.html

Top