數值分析實驗報告

2021-05-31 00:19:46 字數 2927 閱讀 2557

班級姓名

學號:佛山科學技術學院計算機系

2023年12月

實驗一 lagrange插值

一、實驗目的及要求

1.掌握利用lagrange插值法及newton插值法求函式值並程式設計實現。

2.程式具有一定的通用性,程式執行時先輸入節點的個數n,然後輸入各節點的值(),最後輸入要求的自變數x的值,輸出對應的函式值。

二、實驗裝置和實驗環境

安裝有c、c++或matlab的計算機。

三、演算法描述

1. 插值的基本原理(求解插值問題的基本思路)

構造乙個函式y=f(x)通過全部節點,即(i=0、1、… n)

再用f(x)計算插值,即

2. 拉格朗日(lagrange)多項式插值

lagrange插值多項式:

3.牛頓(newton)插值公式

四、實驗內容

1.給定,構造lagrange插值函式計算。

2.已知4個點的函式值如下表,用newton插值法求x=0.596時的函式值。

五、源程式

1.#include

#include

#include

float lagrange(float *x,float *y,float xx,int n)

free(a);

return yy;

}main()

printf("\n");

for(i=0;i<=n-1;i++)}2.

#include

#include

#include

void difference(float *x,float *y,int n)

return;

} main()

if(n<=0)

for(i=0;i<=n-1;i++)

printf("\n");

for(i=0;i<=n-1;i++)

printf("\n");

difference(x,(float *)y,n);

printf("input xx:");

scanf("%f",&xx);

yy=y[20];

for(i=n-1;i>=0;i--) yy=yy*(xx-x[i])+y[i];

printf("newtoninter(%f)=%f",xx,yy);

getch();

} 六、計算結果

圖1 lagrange插值函式計算結果

圖2 newton插值法計算結果

七、結果分析

實驗二高斯消去法解方程組

一、實驗目的及要求

1.掌握求解線性方程組的高斯消去法---列選主元在計算機上的演算法實現。

2.程式具有一定的通用性,程式執行時先輸入乙個數n表示方程含有的未知數個數,然後輸入每個線性方程的係數和常數,求出線性方程組的解。

二、實驗裝置和實驗環境

安裝有c、c++或matlab的計算機。

三、演算法描述

1.高斯消去法基本思路

設有方程組,設是可逆矩陣。高斯消去法的基本思想就是將矩陣的初等行變換作用於方程組的增廣矩陣,將其中的變換成乙個上三角矩陣,然後求解這個三角形方程組。

2.列主元高斯消去法計算步驟

將方程組用增廣矩陣表示。

步驟1:消元過程,對

(1) 選主元,找使得

(2) 如果,則矩陣奇異,程式結束;否則執行(3)。

(3) 如果,則交換第行與第行對應元素位置,,。

(4) 消元,對,計算對,計算

步驟 2:回代過程:

(1) 若則矩陣奇異,程式結束;否則執行(2)。

(2) 對,計算

四、實驗內容

利用列選主元高斯消去法求解線性方程組

5、源程式

#include

#include

#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)

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)

void main()

,,};

//float b[n] = ;

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

printf("請輸入右端項:");

for(i=0; i

/*顯示原始矩陣*/

printf("\n原始矩陣\n");

for(i=0; i

printf("\n\n");

/*進行高斯消去*/

for(j=0; j

}/*顯示處理後矩陣*/

數值分析實驗報告

實驗一題目一 已知函式表如下 試用三次lagrange插值多項式求x 0.5635時的函式值。解 lagrange插值法公式 程式框圖如下 本題中n 4 分析設計思想 設計思路如上面的流程圖所示,用我們學過的c語言程式設計實現。程式清單 include include include float l...

數值分析實驗報告

數值分析 課程設計實驗報告模板 常微分方程資料值解 用龍格 庫塔法分析lorenz方程的特性 一 考慮著名的lorenz方程 其中s,r,b為變化區域內有一定限制的實引數,該方程形式簡單,表面上看並無驚人之處,但由該方程揭示出的許多現象,促使 混沌 成為數學研究的嶄新領域,在實際應用中產生了巨大的影...

數值分析實驗報告

實驗專案 a 列主元高斯消去法 b 矩陣直接三角分解法 c 雅可比迭代法 d 高斯 賽德爾迭代法 e sor迭代法 f 冪法求最大特徵值 實驗名稱 列主元高斯消去法 實驗目的 熟悉了解高斯消去法的原理,並知道如何用高斯消去法求方程組的解 實驗所用的軟體 win tc 版本 1.9.0.0 例項用高斯...