數學引擎標頭檔案中定義向量矩陣數學引擎標頭檔案中定義向量矩陣C

2021-03-05 09:21:55 字數 5617 閱讀 4897

1樓:匿名使用者

定義一個長度為n的int型向量

int *vec = new char[n]; //即開闢一個長度為n的int型陣列

定義一個n*m維的int型矩陣

int *matrix = new char[n][m]; //即定義一個n行m列的二維陣列

之後就可以使用對陣列的操作方法對其進行操作了。

使用完畢之後,記得要使用delete vec和delete matrix來釋放指標。不然就會造成記憶體洩露

2樓:屈偉軍

// matrix.h: inte***ce for matrix calculation functions.

#if !defined(afx_matrixcalculate_h__ccbc1d7d_4466_4e8b_87dd_0a98b462c18d__included_)

#define afx_matrixcalculate_h__ccbc1d7d_4466_4e8b_87dd_0a98b462c18d__included_

#if _msc_ver > 1000

#pragma once

#endif // _msc_ver > 1000

////求矩陣matrix的行列式值,n為維數

float calculateliner(float *matrix,int n);

////求矩陣matrix的第i行,j列的代數餘子式,n為維數

float calculatecofacter(float *matrix,int i,int j,int n);

////matrixat=(matrixa)t,m,n為matrixa的行、列數

void calculateat(float *matrixa,float *matrixat,int m,int n);

////matrixab=matrixa*matrixb,i,j為matrixa的行、列數,j,k為為matrixb的行、列數

void calculateab(float *matrixa,float *matrixb,float *matrixab,int i,int j,int k);

////matrixata=(matrixa)t*matrixa,m,n分別為matrixa的行、列數

void calculateata(float *matrixa,float *matrixata,int m,int n);

////matrixa_為matrixa的逆,m為matrixa的行、列數

void calculatea_(float *matrixa,float *matrixa_,int m);

///*矩陣求逆子程式(good)*/

int invers_matrix(float *m1,int n);

////求正定矩陣a的逆矩,n為階數

int matrixinversion(float *a, int n);

void matinversion(float *a,int n);

////解矩陣方程matrixa*matrixx=matrixl,m,n分別為matrixa矩陣的行,列數

void equationresolution(float *matrixa,float *matrixl,float *matrixx,int m,int n);

#endif // !defined(afx_matrixcalculate_h__ccbc1d7d_4466_4e8b_87dd_0a98b462c18d__included_)

// matrix.cpp: implementation of the matrix calculation functions.

#include "stdafx.h"

#include "matrix.h"

#include "math.h"

#ifdef _debug

#undef this_file

static char this_file=__file__;

#define new debug_new

#endif

////求矩陣matrix的行列式值,n為維數

float calculateliner(float *matrix,int n)}}

if(max_v==0.0)

if(is[k]!=k)

if(is[k]!=k)

for(i=0;i

}free(is); free(js);

return(1);

}void equationresolution(float *matrixa,float *matrixl,float *matrixx,int m,int n)

3樓:匿名使用者

哈哈,我告訴你一個最簡單的辦法,#include"d3d9.h",#include "d3d9math.h"把庫檔案也新增進去。

你要要處理什麼向量、矩陣、逆、轉置、投影、射線、子交併補一應俱全。微軟都給你寫好了,你還要自己費勁麼?

4樓:團是

求正定矩陣a的逆矩,n為階數

int matrixinversion(float *a, int n)

*/m = n - k - 1;

for(i = 1; i <= n - 1; i++)a[n * n - 1] = 1.0 / w;

for(i = 1; i <= n - 1; i++)a[(n - 1) * n + i - 1] = b[i];

}for(i = 0; i <= n - 2; i++)for(j = i + 1; j <= n - 1; j++)a[i * n + j] = a[j * n + i];

delete b;

return(2);

}////求正定矩陣a的逆矩,n為階數

void matinversion(float *a,int n)for(k=0;kmax_v)}}

if(max_v==0.0)

if(is[k]!=k)

if(is[k]!=k)

for(i=0;i

}free(is); free(js);

return(1);

}void equationresolution(float *matrixa,float *matrixl,float *matrixx,int m,int n)

向量,矩陣,陣列,他們之間是什麼關係(從數學角度來說)?

5樓:匿名使用者

不能說你的理解有問題,但我建議你這樣理解

向量是有方向的量,可表示成一維內陣列

他是矩陣的特殊形式(即只有容一列,或者一行)把向量看成矩陣後,向量的內積,加法等運算,都能對應成矩陣的相關運算。表示起來,更方便。

6樓:匿名使用者

leitingok正解,從數字角度,前兩者都是線性關係的一種表示方法——至於陣列...只是一種程式語言的名詞

7樓:匿名使用者

矩陣就是由多個向量組成的,把向量放在一起拼起來就是矩陣啊

如何在c++標頭檔案中定義函式,然後在原始檔中使用

8樓:大野瘦子

/*在text。h標頭檔案中進行宣告*/

#include

using namespace std;

void display(int,int);/*使用該函式來實現輸出*/

/*在texxt。cpp中進行定義,注意第一行,很重要因為不是c++標準庫中的標頭檔案,所以不能用<>,而要用""括起標頭檔案*/

#include "text.h"

void display(int x,int y)/*在主函式中進行呼叫函式*/

#include "text.h"

int main()

9樓:匿名使用者

一般為了安全性,只在標頭檔案中進行宣告,而不定義,在其它檔案中進行定義。給你個例子。因為我學了才一年,所以沒法給你說過多的理論,給你兩個例子你好好體會把。

簡單例子實現輸出兩個資料。

/*在text。h標頭檔案中進行宣告*/

#include

using namespace std;

void display(int,int);/*使用該函式來實現輸出*/

/*在texxt。cpp中進行定義,注意第一行,很重要因為不是c++標準庫中的標頭檔案,所以不能用<>,而要用""括起標頭檔案*/

#include "text.h"

void display(int x,int y)

下面這個例子實現類的標頭檔案中宣告,實現2*3矩陣的加法運算,並進行過載輸入輸出流。

在/*matrix。h中宣告*/

#include

class matrix

;/*在matrix。cpp中進行定義*/

#include "matrix.h"

return x;

}istream& operator>>(istream& w,matrix& y)

return w;

}ostream& operator <<(ostream & x,matrix& z)

10樓:匿名使用者

可以在原始檔中新增另一個原始檔嗎?好像只能新增標頭檔案哦,在c++中。你要程式執行正確,就要建一個標頭檔案,然後在標頭檔案中宣告函式,當然函式體的定義一般建義是在另一個原始檔中定義,在另一個原始檔中定義標頭檔案中宣告的函式時應使用#include語句把標頭檔案包含進來才行。

然後你在在主程式中的原始檔中使用#include把標頭檔案包含進來就沒錯了,下面舉個例子給你看下。

//標頭檔案hyong.h的內容如下

#ifndef hy //一般在標頭檔案都都使用這種格式以防止標頭檔案在同一檔案中被包含兩次。語名#ifndef hyong…..#endi表示僅當以前沒有使用前處理器編譯指令#define定義的名稱hyong時才處理#ifndef….

#endif之間的語句。

#define hy //在這裡用define定義一個名字hy,以便在下次訪問到該標頭檔案時,使該名字已經被定義,從而讓程式跳過#ifndef….#endif間的語句。

void g(); //在標頭檔案中宣告一個函式g();

#endif

//定義標頭檔案中宣告的函式的原始檔hyong.cpp的內容如下

#include "stdafx.h" //注意:在vc++中所有的原始檔中都要包含這條語句。

#include "hyong.h" //將標頭檔案hyong.h包含進來,這裡使用雙引號,而不是引號,以便能更快地檢查到該標頭檔案中定義的名字

#include

using namespace std;

void g() //定義標頭檔案hyong.h中宣告的函式g()

//主程式原始檔ff.cpp的內容如下

#include "stdafx.h"

#include

#include "hyong.h" //注意,主程式和hyong.cpp的檔案中都包含了這個標頭檔案。

using namespace std;

int main()

如何在c標頭檔案中定義函式然後在原始檔中使用

在text。h標頭檔案中進行宣告 include using namespace std void display int,int 使用該函式來實現輸出 在texxt。cpp中進行定義,注意第一行,很重要因為不是c 標準庫中的標頭檔案,所以不能用 而要用 括起標頭檔案 include text.h ...

C 的標頭檔案宣告與使用問題,c 在標頭檔案中宣告一個類,但是在主函式定義該類的變數時卻出錯了。怎麼回事?

每個c 標頭檔案都會有對應的函式庫相支援,一般ide編譯器 會完成這個處理,如果回沒有,則需要開發者自己答增加相應的函式庫。函式庫中有標頭檔案中的函式的具體實現內容。如果是自定義的函式和標頭檔案,則需要開發者自己完成相應的函式與實現了。標準e68a8462616964757a686964616f31...

C 標頭檔案中pragma once和ifndef之類的

為什麼編譯器不自己限制對一個檔案只包含一次 因為對同一個檔案包含兩次可能是部分 需要,我就在一個比較成熟的專案裡面看到過 對一個標頭檔案包含兩次的,大致原理如下 標頭檔案f.h裡面 有兩部分,分別被 macro a 和macro b包括著,在g.c裡面某個地方,先定義了macro a,然後inclu...