當前位置:首頁 » 編程語言 » c語言lu分解

c語言lu分解

發布時間: 2022-07-05 19:21:35

c語言 求解矩陣條件數的函數

其實主要是求逆矩陣罷了
求完逆矩陣其他都很簡單,自己下載個求逆矩陣的代碼,然後把范數求一下就完了
其實很簡單嘛

我這到有現成的代碼,是我自己寫的矩陣函數,不只是求逆的,還有什麼求行列式,矩陣乘法,LU分解等,如果你要的話,可以發給你

㈡ petsc能做有填充的不完全lu分解嗎

petsc能做有填充的不完全lu分解
PETSC( Portable, Extensible Toolkit for Scientific Computation)是美國能源部
ODE2000支持開發的20多個ACTS工具箱之一,由 argonne國家實驗室開發
的可移植可擴展科學計算工具箱,主要用於在分布式存儲環境_效求解偏微分
方程組及相關問題。 PETSC所有消息傳遞通信均採用MPI標准實現。
PETSC用C語言開發,遵循面向對象設計的基本特徵,用戶基於 PETSC對象可
以靈活開發應用程序。目前, PETSC支持 Fortran7790、C和C++編寫的串列
和並行代碼。
PETSC是系列軟體和庫的集合,三個基木組件SLES、SNES和TS木身基於
BLAS、 LAPACK、MPI等庫實現,同時為TAO、 ADIC/ADIFOR、Maab、ESI
等工具提供數據介面或互操作功能,並具有極好的_擴展性能。 PETSC為用戶
提供了豐富的 Krylov子空間迭代方法和預條件子,並提供錯誤檢測、性能統計
和圖形列印等功能。

㈢ c語言解線性方程組的編程題 【做的好會多給分】

以下演算法的適用條件:A的各階主子式不為零
另外還可以採用
直接法:
消元法:Gauss-Jordan消元法,
分解法:Dolittle分解 (我用的是Courant分解法),追趕法,對稱正定矩陣的LDL『分解
----------
迭代法:
Jacobi迭代
Gauss-Seidel迭代
鬆弛迭代
-----------------
你上網可以搜索一下,或者看看數值計算方面的書

OK, 你看看這個, 另外還加了注釋 :
Courant分解演算法:
aX = b, 作 A=LU, L是下三角矩陣, U是上三角矩陣
即L =
| L11
| L21 L22
| L31 L32 L33
| ..............
| Ln1 Ln2 ........Lnn

U =
| 1 U12 ..... U1n
| 空格 1 ..... U2n
| 空格 空格 ........
| 空格 空格 空格 空格 空格1
---------------------------------------------------
aX = b -----> LUX = b
記 UX = y,
由Ly = b得到
因為無法輸出數學符號,以下採用[i, j]Ai 表示對Ai從i到j求和
yi = (bi - [j=1, i-1]Lij yj) / Lii i = 1, 2, ..., n
由UX = y得到
xi = yi - [j=i+1, n]uij xj j = n, n-1, ..., 2, 1
你在紙上驗證一下就明白了
--------------------------------------------------------------

以下採用Courant分解 解 aX = b, 經檢查,程序運行正確
這是運行結果:
--------------------------------------------------------------
Input n value(dim of Ax=b): 3
Now input the matrix a(i, j), i, j = 0, ..., 2:
1 2 1 -2 -1 -5 0 -1 6
Now input the matrix b(i), i = 0, ..., 2:
24 -63 50
Solve...x_i =
7.000000
4.000000
9.000000
--------------------------------------------------------------
#include "stdafx.h"
#include <stdio.h>
#include <math.h>
#define MAX_N 20
int main(int argc, char* argv[])
{
int n; // 未知數個數
int i, j, k;
static double a[MAX_N][MAX_N], b[MAX_N], x[MAX_N], y[MAX_N];
static double l[MAX_N][MAX_N], u[MAX_N][MAX_N];
printf("\nInput n value(dim of Ax=b): ");
scanf("%d", &n);
if(n >MAX_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 matrix a(i, j), i, j = 0, ..., %d:\n", n-1);
for (i=0; i<n; i++)
for (j=0; j<n; j++)
scanf("%lf", &a[i][j]);
printf("Now input the matrix b(i), i = 0, ..., %d:\n", n-1);
for(i=0; i<n; i++)
scanf("%lf", &b[i]);
// }} 程序輸入
for(i=0; i<n; i++)
u[i][i] = 1; //
for(k=0; k<n; k++)
{
for(i=k; i<n; i++) // 計算L的第k列元素
{
l[i][k] = a[i][k];
for(j=0; j<=k-1; j++)
l[i][k] -= (l[i][j]*u[j][k]);
}
for(j=k+1; j<n; j++) //計算U的第k行元素
{
u[k][j] = a[k][j];
for(i=0; i<=k-1; i++)
u[k][j] -= (l[k][i]*u[i][j]);
u[k][j] /= l[k][k];
}
}
for(i=0; i<n; i++) // 解Ly = b
{
y[i] = b[i];
for(j=0; j<=i-1; j++)
y[i] -= (l[i][j]*y[j]);
y[i] /= l[i][i];
}
for(i=n-1; i>=0; i--) // 解UX = Y
{
x[i]=y[i];
for(j=i+1; j<n; j++)
x[i] -= (u[i][j]*x[j]);
}
printf("Solve...x_i = \n"); // 輸出結果
for(i=0; i<n; i++)
printf("%f\n", x[i]);
return 0;
}

㈣ 誰能幫我設計一個C語言程序,求解方程組的,急啊,哪位高手幫下咯,萬分感謝

假定你要的是線性方程組,下面的
float *GauseSeidel(float *a,int n)
是高斯賽德爾法求解線性方程組的通用子程序。
N 是 迭代次數極限。

main()里寫了調用的例子。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 100
float *GauseSeidel(float *a,int n)
{
int i,j,nu=0;
float *x,dx;
x=(float *)malloc(n*sizeof(float));
for(i=0;i<=n-1;i++)
x[i]=0.0;
do {
for(i=0;i<=n-1;i++) {
float d=0.0;
for(j=0;j<=n-1;j++)
d+=*(a+i*(n+1)+j)*x[j];
dx=(*(a+i*(n+1)+n)-d)/(*(a+i*(n+1)+i));
x[i]+=dx;
}
if(nu>=N)
{
printf("iter divergence\n");
exit(1);
}
nu++;
}
while(fabs(dx)>1e-6);
return x;
}
void main()
{
int i;
float *x;
float c[12]={5,2,1,8,2,8,-3,21,1,-3,-6,1};
float *GauseSeidel(float *,int);
x=GauseSeidel(c,3);
for(i=0;i<=2;i++)
printf("x[%d]=%f\n",i,x[i]);
getch();
}

㈤ C語言程序 LU分解如果考慮行交換要乘在哪裡

可以,只要保證時初等行變換即可!

㈥ 用C語言編寫線性方程組數值解法程序

題目就不懂……高斯消元倒是簡單

熱點內容
滑板鞋腳本視頻 發布:2025-02-02 09:48:54 瀏覽:433
群暉怎麼玩安卓模擬器 發布:2025-02-02 09:45:23 瀏覽:557
三星安卓12彩蛋怎麼玩 發布:2025-02-02 09:44:39 瀏覽:744
電腦顯示連接伺服器錯誤 發布:2025-02-02 09:24:10 瀏覽:537
瑞芯微開發板編譯 發布:2025-02-02 09:22:54 瀏覽:147
linux虛擬機用gcc編譯時顯示錯誤 發布:2025-02-02 09:14:01 瀏覽:240
java駝峰 發布:2025-02-02 09:13:26 瀏覽:652
魔獸腳本怎麼用 發布:2025-02-02 09:10:28 瀏覽:538
linuxadobe 發布:2025-02-02 09:09:43 瀏覽:212
sql2000資料庫連接 發布:2025-02-02 09:09:43 瀏覽:726