1. 程式人生 > >C#求解N元一次方程組

C#求解N元一次方程組

{
        
privatedouble[,] _data;

        
public Matrix(int size)
        
{
            
this._data =newdouble[size, size];
        }


        
public Matrix(int rows, int cols)
        
{
            
this._data =newdouble[rows, cols];
        }


        
public Matrix(double[,] data)
        
{
            
this
._data = data;
        }


        
publicstatic Matrix operator+(Matrix matrix1, Matrix matrix2)
        
{
            
int matrix1_Rows = matrix1.Data.GetLength(0);
            
int matrix1_Columns = matrix1.Data.GetLength(1);

            
int matrix2_Rows = matrix2.Data.GetLength(0);
            
int matrix2_Columns 
= matrix2.Data.GetLength(1);

            
if ((matrix1_Rows != matrix2_Rows) || (matrix1_Columns != matrix2_Columns))
            
{
                
thrownew Exception("Matrix Dimensions Don't Agree!");
            }


            
double[,] result =newdouble[matrix1_Rows, matrix1_Columns];
            
for (
int i =0; i < matrix1_Rows; i++)
            
{
                
for (int j =0; j < matrix1_Columns; j++)
                
{
                    result[i, j] 
= matrix1.Data[i, j] + matrix2.Data[i, j];
                }

            }


            
returnnew Matrix(result);
        }


        
publicstatic Matrix operator-(Matrix matrix1, Matrix matrix2)
        
{
            
int matrix1_Rows = matrix1.Data.GetLength(0);
            
int matrix1_Columns = matrix1.Data.GetLength(1);

            
int matrix2_Rows = matrix2.Data.GetLength(0);
            
int matrix2_Columns = matrix2.Data.GetLength(1);

            
if ((matrix1_Rows != matrix2_Rows) || (matrix1_Columns != matrix2_Columns))
            
{
                
thrownew Exception("Matrix Dimensions Don't Agree!");
            }


            
double[,] result =newdouble[matrix1_Rows, matrix1_Columns];
            
for (int i =0; i < matrix1_Rows; i++)
            
{
                
for (int j =0; j < matrix1_Columns; j++)
                
{
                    result[i, j] 
= matrix1.Data[i, j] - matrix2.Data[i, j];
                }

            }


            
returnnew Matrix(result);
        }


        
publicstatic Matrix operator*(Matrix matrix1, Matrix matrix2)
        
{
            
int matrix1_Rows = matrix1.Data.GetLength(0);
            
int matrix1_Columns = matrix1.Data.GetLength(1);

            
int matrix2_Rows = matrix2.Data.GetLength(0);
            
int matrix2_Columns = matrix2.Data.GetLength(1);

            
if (matrix1_Columns != matrix2_Rows)
            
{
                
thrownew Exception("Matrix Dimensions Don't Agree!");
            }


            
double[,] result =newdouble[matrix1_Rows, matrix2_Columns];
            
for (int i =0; i < matrix1_Rows; i++)
            
{
                
for (int j =0; j < matrix2_Columns; j++)
                
{
                    
for (int k =0; k < matrix2_Rows; k++)
                    
{
                        result[i, j] 
+= matrix1.Data[i, k] * matrix2.Data[k, j];
                    }

                }

            }


            
returnnew Matrix(result);
        }


        
publicstatic Matrix operator/(double i, Matrix matrix)
        
{
            
returnnew Matrix(ScaleBy(i, INV(matrix.Data)));
        }


        
publicstaticbooloperator==(Matrix matrix1, Matrix matrix2)
        
{
            
bool result =true;

            
int matrix1_Rows = matrix1.Data.GetLength(0);
            
int matrix1_Columns = matrix1.Data.GetLength(1);

            
int matrix2_Rows = matrix2.Data.GetLength(0);
            
int matrix2_Columns = matrix2.Data.GetLength(1);

            
if ((matrix1_Rows != matrix2_Rows) || (matrix1_Columns != matrix2_Columns))
            
{
                result 
=false;
            }

            
else
            
{
                
for (int i =0; i < matrix1_Rows; i++)
                
{
                    
for (int j =0; j < matrix1_Columns; j++)
                    
{
                        
if (matrix1.Data[i, j] != matrix2.Data[i, j]) result =false;
                    }

                }

            }

            
return result;
        }


        
publicstaticbooloperator!=(Matrix matrix1, Matrix matrix2)
        
{
            
return!(matrix1 == matrix2);
        }


        
public

相關推薦

C#求解N方程組

{        privatedouble[,] _data;        public Matrix(int size)        ...{            this._data =newdouble[size, size];        }        public Matrix(int

【數值計算】數值解析--n聯立方程組:直接解法

加減法(中學所學)是我們平常用的解法之一。 例如,現有如下所示的二元一次方程組。 將等式兩邊同乘以一個實數,上下係數合併,消去其中一元未知數的方法便是熟知的加減法。 之後,把帶入式1,解得。 把上式用行列式表示如下, 之後,第2行乘以,上下相減,得到 的形式。隨後,從最下面的式

n不定方程 解的個數 的 兩個版本和n種實現方法

版本1:  有方程a1*x1+a2*x2+...an*xn=N,給定n(1000=>n>=1)個係數ai(1000>=ai>=0)和N(1000>=N>0),求滿足這個方程的非負整數解(x1,x2...xn)的個數。(結果對10007取模)

poj 1091 跳蚤(n不定方程+斥容原理)

題意: 給一張卡片,上面寫著N + 1個自然數,其中最後一個數是M,並且前N個數不超過M,並允許數字相同。 一隻跳蚤每次可以選擇從卡片上任意選擇一個自然數S,向左或向右跳S個單位長度。 求最後能跳到左邊1個單位長度的N + 1元組個數是多少。 解析: 設卡片上的標號是a1

C語言第十作業--函數嵌套調用

功能 系統 題目 調試 markdown 本周 cnblogs 解決辦法 2.3 一、實驗作業 1.1 PTA題目 1.2 學生成績管理系統 1.2.1 畫函數模塊圖,簡要介紹函數功能 1.2.2 截圖展示你的工程文件 1.2.3 函數代碼部分截圖 1.2.4 調試結果展示

C語言第十博客作業---函數嵌套調用

指定 編譯預處理 define result 宏替換 多次 clu 菜單 tro 一、實驗作業 1.1 PTA題目 題目:遞歸實現順序輸出整數 1. 本題PTA提交列表 2. 設計思路 printdigits函數 定義整型變量result存放結果 if n是10的倍數

C高級地作業 函數題第一題

指針 獲得 post 整形 log class 第一題 作業 浮點型 函數題第一題 void splitfloat( float x, int *intpart, float *fracpart ) {int a; float b; a=x/1; b=x-a; *int

C高級地作業 編程題第一題

定義 長度 循環 一位 平移 gpo AI for循環 include #include<stdio.h>#define N 100int main(){ int a[N]; int i,j,k,n,m,temp=0; scanf("%d %d

c++讀檔案(全讀/每行讀/多讀)

我以為這些都很容易在網上找到,誰知網上亂七八糟的東西太多,讓我找了很久。。 開發環境為Windows,VS2013 一次全讀: std::ifstream t(path); //讀檔案ifstream,寫檔案ofstream,可讀可寫fstream std::stringstr

C#(.net)中的連線資料庫執行多條sql語句(兩種方法)

第一種方法: string str="server=.;uid=sa;pwd=111111;database=text_db";//連線字串 SqlConnection SCON = null;//連線物件 SqlCommand SCom=new SqlCommand();/

c# 程式只能執行

防止程式執行多個例項的方法有多種,如:通過使用互斥量和程序名等.而我想要實現的是:在程式執行多個例項時啟用的是第一個例項,使其獲得焦點,並在前端顯示. 主要用到兩個API 函式: ShowWindowAsync 該函式設定由不同執行緒產生的視窗的顯示狀態。 SetForeg

c# 程式只能執行(多執行只能開啟同一個程式) 並激活第一個例項,使其獲得焦點,並在最前端顯示.

防止程式執行多個例項的方法有多種,如:通過使用互斥量和程序名等.而我想要實現的是:在程式執行多個例項時啟用的是第一個例項,使其獲得焦點,並在前端顯示. 主要用到兩個API 函式: ShowWindowAsync 該函式設定由不同執行緒產生的視窗的顯示狀態。SetFore

資料庫char varchar nchar nvarchar,編碼Unicode,UTF8,GBK等,Sql語句中文前為什麼加N線上資料儲存亂碼排查)

## 背景 公司有一個數據處理線,上面的資料經過不同環境處理,然後上線到正式庫。其中一個環節需要將資料進行處理然後匯入到另外一個庫(Sql Server)。這個處理的程式是老大用python寫的,處理完後進入另外一個庫後某些欄位出現了亂碼。 比如這個字串:`1006⁃267X(2020)02⁃0548⁃1

遞迴求解走臺階問題,可以走步、兩步、三步、...、n步(經典面試題——增強版走臺階)

1、問題描述       現在有一個臺階,一共有n階,你一次性可以走1步、2步、3步、......、n步。問:一共有多少種走法。 2、求解思路       第一步走1階:那麼這種情況下的走法數量和剩下n-1階的走法數量有關;

用小於等於n去買100只雞,大雞5/只,小雞3/只,還有種1/3/只得小雞,分別記為下,x,y,z只,程式設計求解x,y,z所有可能解

/***************************************************** copyright (C), 2014-2015, Lighting Studio. Co., Ltd. File name: Author:

InputStream只能讀取的解決辦法 C# byte[] 和Stream轉換

eof nbsp pos 讀取 處理 搜索 post ... 還要 x 情景--->>> 導入文件的時候,前臺傳過來一個文件, 後臺接到: HttpPostedFileBase file = Request.Files[0];由於對這個文件後臺處理

C語言】推斷個數是否為2的n次方

post data- popu scanf scan ng- 輸入 ont print //推斷一個數是否為2的n次方 #include <stdio.h> int is_two_n(int num) { if ((num&(num - 1))

c++中ifstream讀取整個文件

轉載 .com code 讀取 include char pan ring 一次 轉載:http://www.cnblogs.com/kex1n/p/4028428.html 第一種方法: 讀取至std::string的情況: #include <string>

LightOJ 1248 - Dice (III) 給一個質地均勻的n的骰子, 求投擲出所有點數至少的期望次數。(概率)

pri std printf 有一個 return main tdi algorithm style 題意:http://www.lightoj.com/volume_showproblem.php?problem=1248   投擲出第一個未出現的點數的概率為n/n =

C語言程序設計(基礎)最後作業-- 總結報告

人際關系 領域 健康 作用 每次 收獲 會有 做出 理解 一、總體總結 1、當初你是如何做出選擇計算機專業的決定的?經過一個學期,你的看法改變了麽,為什麽? 你覺得計算機是你喜歡的領域嗎,它是你擅長的領域嗎? 為什麽? 當初填報誌願時,是我自己選擇的計算機專業,同時也采取