Doolittle法求解方程

2022-11-28 04:30:08 字數 2566 閱讀 3767

班級:09醫軟一班

製作人:方遠(主選單及列印及除錯)

方艷豔(矩陣u的計算及輸出)

方天白(演算法的編寫)

胡婷娟(矩陣l的計算及輸出)

韓建(x、y值的計算及輸出、整體函式的構造、說明書的編寫)

一實驗名稱

doolitle解方程的c++實現

二實驗目的

理解各種方法的基本思想及公式的推導過程

用c語言實現方程組地求解。

三實驗原理

若矩陣a為n階方陣,則可將矩陣a分解為a=lu其中l是下三角矩陣,u是對角元素為1的上三角矩陣即單位上三角矩陣

源程式**:

#include<>

#include<>

#include<>

#include<>

全域性變數定義區

const int number = 20; //方程最大個數

float a[number][number], b[number], copy_a[number][number], copy_b[number]; //係數行列式

int a_y[number]; //a中隨著橫座標增加列座標的排列順序,如a[0][0],a[1][2],a[2][1]...則a_y=;

int lenth, copy_lenth; //方程的個數

char *x; //未知量a,b,c的載體

函式宣告區

void input輸入方程組

void print_menu列印主選單

void doolittle();

//主函式

void main()

//函式定義區

void print_menu()

cout << "\n---解線性方程組 09醫藥軟體開發(1)班學號:09713016 指導老師:金力老師--- ";

cout << "\n\ndoolittle分解法方程解答的方案n"; }

void input()

x = new char[lenth];

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

x[i] = 'a' + i;

//輸入方程矩陣

//提示如何輸入

cout < cout << "請在每個方程裡輸入" << lenth << "係數和乙個常數:\n";

cout << "例:\n方程:a";

for(i = 1; i < lenth; i++)

cout << "=10\n";

cout << "應輸入:";

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

cout << i + 1 << " ";

cout << "10\n";

cout < //輸入每個方程

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

//備份資料

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

for(j = 0; j < lenth; j++)

copy_a[i][j] = a[i][j];

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

copy_b[i] = b[i];

copy_lenth = lenth;

}void doolittle() //doolittle消去法計算方程組

for(i=1;i

for(i=1;i

for(j=i+1;j

}for(i=1;i

for(i=0;i

for(i=0;i

cout<<"l=\n";

for(i=0;i

cout<<"\n\n";

for(j=0;j

cout<<"u=\n";

for(i=0;i

cout<<"\n";

y[0]=b[0];

for(i=1;i

cout<<"y"< }

cout<<"\n";

x[lenth-1]=y[lenth-1]/u[lenth-1][lenth-1];

for(i=lenth-2;i>=0;i--)

x[i]=x[i]/u[i][i];

}for(i=0;i

}lu分解在本質上是高斯消元法的一種表達形式。實質上是將a通過初等行變換變成乙個上三角矩陣,其變換矩陣就是乙個單位下三角矩陣。這正是所謂的杜爾里特演算法(doolittle algorithm):

從下至上地對矩陣a做初等行變換,將對角線左下方的元素變成零,然後再證明這些行變換的效果等同於左乘一系列單位下三角矩陣,這一系列單位下三角矩陣的乘積的逆就是l矩陣,它也是乙個單位下三角矩陣。

這類演算法的複雜度一般在左右,對充分消元的分解則不然。

杜爾里特演算法

對給定的n × n矩陣

a = (an,n)

有a(0): = a

然後定義對於n = 1,...,n-1的情況如下:

在第n步,消去矩陣a(n-1)的第n列主對角線下的元素:將a(n-1)的第n行乘以之後加到第i行上去。其中。

於是,定義為:設

a(n): = lna(n 1).

迭代法求解方程問題實驗報告

姓名 殷伯旭班級 信計0801班學號 u200810065 一 實驗目的 運用數學知識與matlab相結合,運用數學方法,建立數學模型,用matlab軟體輔助求解模型,解決實際問題。二 實驗任務 求方程的乙個近似解,誤差不超過,要求 設計4種求解的迭代法,討論其收斂性,並求出滿足精度的近似解 三 實...

解方程練習

一 解下列方程。2x 1.5x 75 2.13 0.8 2x 4.9 15.6 4x 1.56 10 15 x 12 32 7x 5x 20 6.14 5 6x 11.2 x 0.18 6.3 3x 4 6.5 7.6 二 列出方程,並求出方程的解。1 4個x與32.7的和是48.1,求x.2 乙個...

加減消元法解方程組案例

用加減法解二元一次方程組 第二課時 一 背景分析 本課是滬科版七年級數學第三章消元的第二課時加減法。在此之前,學生已學習了用代入消元法解二元一次方程組和簡單的加減消元法。對消元的解題思想已有了一定的了解。本課的加減法的學習,繼續深入 二元 化 一元 的新方法。根據本課教學內容的特點,本課教學將達到的...