1. 程式人生 > >解線性方程組的完整程式碼

解線性方程組的完整程式碼

// Det.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#define M 10//矩陣大小
#include <stdio.h>
#include <iostream.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
float  hanglieshi(float array[M][M])
{//計算行列式
   float temp[M][2*M];
   int i,j,c,c1;
   float result=0,t=1;
   for(i=0;i<M;i++)
   {//構造臨時矩陣,用來計算行列式
      for(j=0;j<2*M;j++)
      {
          temp[i][j]=array[i][j%M];
      }
   }
   for(c1=0;c1<M;c1++)
   {//計算正值
      i=0;
      j=c1;
      t=1;
      for(c=0;c<M;c++)
      {
         t*=temp[i][j];
         i++;
         j++;
      }
      result+=t;
   }
   for(c1=0;c1<M;c1++)
   {//計算負值
      i=M-1;
      j=c1;
      t=1;
      for(c=0;c<M;c++)
      {
          t*=temp[i][j];
          i--;
          j++;
      }
      result-=t;
   }
   return result;
}
void init(float array[M][M])
{//初始化矩陣,用隨機值填充矩陣
   int i,j;
   float m=3.0;
   //randomize();
   for(i=0;i<M;i++)
      for(j=0;j<M;j++)
         array[i][j]=rand()%20000;
}
void output(float array[M][M])
{//輸出矩陣
   int i,j;
   for(i=0;i<M;i++)
   {
      printf("\n\n");
      for(j=0;j<M;j++)
          printf("%4f",array[i][j]);
   }
}
//非齊次方程
bool jieXianXingFangCheng(float xishu[M][M+1],float fangChengjie[M])
{
	//函式所佔用的空間量應該動態fenp
	float D[M][M];
	float Dn[M][M];
	//根據克萊姆法則,求得D
	for(int i=0;i<M;i++)
			for(int j=0;j<M;j++)
			{
				D[i][j]=xishu[i][j];	
			    Dn[i][j]=xishu[i][j];	
			}
			if(hanglieshi(D)==0)return false;
    float tempVect[M];
	//下面求解:
    for(int m=0;m<M;m++)
	{	//替換第m列的值
		for(i=0;i<M;i++)
		{
            tempVect[i]=Dn[i][m];
		    Dn[i][m]=xishu[i][M];
			
		}
		fangChengjie[m]=hanglieshi(Dn)/hanglieshi(D);
		for(i=0;i<M;i++)
		{
            Dn[i][m]=tempVect[i];	
		}
		cout<<fangChengjie[m]<<endl;
	}
}
void main()
{
   float xishu[M][M+1];
   float fangchengjie[M];
   for(int i=0;i<M;i++)
   {
   for(int j=0;j<M;j++)
   {
	   if(i!=j)xishu[i][j]=0;
	   else xishu[i][j]=1;
   }
   }
   for(i=0;i<M;i++)
	   xishu[i][M]=1;
   jieXianXingFangCheng(xishu,fangchengjie);
  // float array[M][M];
 //  clrscr();
  // init(array);
  // output(array);
  // printf("\n%d",hanglieshi(array));//輸出矩陣行列式的值
}

 以上程式碼求解M維線性方程組

相關推薦

線性方程組完整程式碼

// Det.cpp : Defines the entry point for the console application. // #include "stdafx.h" #define M 10//矩陣大小 #include <stdio.h> #inc

數學-線性代數-#2 用消元法線性方程組

結合 單純 方框 法則 基本 步驟 滿足 原則 log 線性代數-#2 用消元法解線性方程組 #2實現了#1中的承諾,介紹了求解線性方程組的系統方法——消元法。 既然是一種系統的方法,其基本步驟可以概括如下: 1.將方程組改寫為增廣矩陣: 為了省去傳統消元法中反復出現但

Eigen線性方程組

res tps n) matrix pos 三角形 語法 lar ast 一. 矩陣分解: 矩陣分解 (decomposition, factorization)是將矩陣拆解為數個矩陣的乘積,可分為三角分解、滿秩分解、QR分解、Jordan分解和SVD(奇異值)分解等,常見

矩陣 LUP 分解 線性方程組 求行列式值 矩陣求逆 演算法說

演算法:矩陣 LUP 分解 本文著筆於矩陣 LUP 分解演算法,以及利用矩陣的 LUP 分解來解線性方程組、求矩陣對應行列式的值、求逆矩陣。 對於矩陣的定義程式碼如下: struct Matrix { double dat[MAX_N][MAX_N],det,

[CF917D]Stranger Trees[矩陣樹定理+線性方程組]

題意 給你 \(n\) 個點的無向完全圖,指定一棵樹 \(S\),問有多少棵生成樹和這棵樹的公共邊數量為 \(k\in[0,n-1]\) \(n\leq 100\) 分析 考慮矩陣樹定理,把對應的樹邊的邊權設定成 \(x\) 然後構造基爾霍夫矩陣, 結果記為 \(val\) ,有 \[val=\

用Python線性方程組——Scipy包和自己寫

## 一、基於SymPy庫  用Python解決方程組、微積分等問題,主要是用到Python的一個庫——SymPy庫。可以說這個專案也主要是學習SymPy庫的用法。 解二元一次方程功能實現 解方程的功能主要是使用Sympy中solve函式實現。 示例題目是: 

使用OpenCASCADE的Math功能線性方程組

Use Math Utilities in the OpenCASCADE OpenCASCADE由七個模組組成,分別如下: Module FoundationClasses; 基礎類; Module ModelingData; 造型資料; Module ModelingAlgorihtms; 造型演算

C語言實現直接法線性方程組

  利用線性方程組初等變換中的一種變換,即用一個不為零的數乘以一個方程加至 另一個方程,使方程組變成同解的上三角方程組,然後再自上而下對上三角方程組求解。 二.兩個過程 順序高斯消去法分為“消去”和“回代”兩個過程。 三.一般求解過程 四.使用條件 因為這裡涉及到對角線元素的除法

高斯消去法線性方程組C++實現

       一.問題分析:高斯消去法解線性方程組主要面對的問題是矩陣的運算,所以可以定義一個矩陣類Matrix類作為基類,然後由矩陣類Matrix類派生出一個線性方程組類LinearEqu類。    &n

Matlab的Gauss_Seidel迭代方法線性方程組

用Matlab實現Gauss_Seidel迭代法解線性方程組 今天中午看見代做群有個題目,就是做一個G-S迭代,本來想接下來,可是就慢了幾分鐘就被別人搶走。不過我反正也沒事幹就把程式碼敲了。 高斯-賽德爾迭代(Gauss–Seidel method)是數值

雅可比迭代法線性方程組(matlab程式)

A=[4,3,0;3,4,-1;0,-1,4]; b=[24,30,-24]; x=jokebi(A,b); function  x2=jokebi(B,c) D=diag(diag(B)); U=D-triu(B); L=D-(triu(B))'; x1=(rand(1,

SVD線性方程組——祕密大起底

奇異值分解(SVD)是計算機視覺領域中一種使用最為廣泛的矩陣分解技術。我們已經知道了一個矩陣A可以分解為下面這樣一種形式: A = VDV' (1),這裡V是一個正交矩陣(AA' = I),V' 代表V的轉置, D是一個對角矩陣, 對角矩陣A中的每一個對角元都是A的特徵值。

線性方程組——高斯消元の板子

ATP記得它在很久以前看過一點點高斯消元的東西然後做過一點點題目。。但是當時實在是太zz了所以本來就沒有很懂這個東西現在更是忘得差不多了。。 所以現在就當重新學一遍了QwQ 一點口胡的解釋 高斯消元。。聽起來這個名字很高大上實際上它也確實很

Python計算——高斯消元法線性方程組

#!/usr/bin/env python # coding=gb2312 # 以上的資訊隨自己的需要改動吧 def print_matrix( info, m ): # 輸出矩陣 i = 0; j = 0; l = len(m) print info

共軛梯度法線性方程組(Matlab程式)

%-------共軛梯度法解線性方程組----------- %---Conjugate Gradient method------- %參考教材《數值分析》李乃成&梅立泉,科學出版社2011 clear;clc; % A=[10,-1,-2;-1,10,-2;-1

SVD線性方程組(非齊次)

    對於任一給定的矩陣A(m * n),都存在這樣的分解:        其中, U是一個m * m的酉矩陣,S是一個m * n的矩陣,除了主對角線上的元素以外全為0,主對角線上的每個元素都稱為奇異值, V是一個n * n的酉矩陣。求解解線性方程組    Ax=b   

線性同余方程組

得到 cst 條件 合並 markdown long cti 線性同余方程組 code 想必學完exgcd的各位dalao們都已經明白如何求解同余方程了 今天本蒟蒻只是想講講線性同余方程組的解法供各位大佬批評指錯 我們現在有一些線性同余方程 X=b1 (mod a1) X=

POJ 1061 青蛙的約會(拓展歐幾裏得算法求解模線性方程組

scrip 坐標 出發點 開心 以及 NPU tdi 青蛙的約會 方程組 題目鏈接: BZOJ: https://www.lydsy.com/JudgeOnline/problem.php?id=1477 POJ: https://cn.vjudge.net/problem

如何使用拓展歐幾裏得算法求解模線性方程組(詳

得出 bsp 次方 及其 根據 約數 www 求解 回退   式子a≡b(mod n)稱為a和b關於模n同余,它的充要條件是a-b是n的整數倍,即a-b=zn(其中z取整數)。 而模線性方程組ax≡b(mod n)可以寫成ax-b=zn(其中z取整數),移項可得 ax-zn

使用裴蜀公式來求解線性方程組的第一個大於零的

1. 假設方程組為ax + by = m ​在數論中,裴蜀定理是一個關於最大公約數(或最大公約式)的定理。裴蜀定理得名於法國數學家艾蒂安·裴蜀,說明了對任何整數a、b和它們的最大公約數d,關於未知數x和y的線性丟番圖方程(稱為裴蜀等式): ax + by = m 有解當且僅當m是d的倍數