我知道這聽起來很搞笑,但我只是想知道。有關矩陣的問題
通常我們定義2x2
基質,它會在的形式,
A[1][1], A[1][2], A[2][1],A[2][2]
我們是否能夠編寫在該矩陣作爲0.5各元素的差的矩陣?我怎樣才能在C++中編寫簡單的代碼?因爲我正在處理雅可比安。
A[1][1] A[1][3/2] A[1][2]
A[3/2][1] A[3/2][3/2] A[3/2][2]
A[2][1] A[2][3/2] A[2][2]
我知道這聽起來很搞笑,但我只是想知道。有關矩陣的問題
通常我們定義2x2
基質,它會在的形式,
A[1][1], A[1][2], A[2][1],A[2][2]
我們是否能夠編寫在該矩陣作爲0.5各元素的差的矩陣?我怎樣才能在C++中編寫簡單的代碼?因爲我正在處理雅可比安。
A[1][1] A[1][3/2] A[1][2]
A[3/2][1] A[3/2][3/2] A[3/2][2]
A[2][1] A[2][3/2] A[2][2]
作爲可能的解決方案,您應該定義您自己的C++類,並使用數組索引的優選步驟並重載[]運算符。
[更新]這是這種類的原料例如:
class MyArray{
private :
int* pA;
unsigned int n;
float m_step;
public:
MyArray(unsigned int n, float step): pA(new int[n]), n(n), m_step(step){}
~MyArray(){ delete [] pA, n = 0 ;}
void populate(int p) {
for (unsigned int i = 0; i < n ; i++) {
pA[i] = p;
p++;
}
}
int& operator[](float i){ /** Calculate correct internal array index based on input i and specified m_step. Return array element value by calculated index */ }
const int& operator[](float i)const{ /** Calculate correct internal array index based on input i and specified m_step. Return array element value by calculated index */ }
unsigned int size(){ return n;}
unsigned int size()const { return n;}
};
你能解釋一下嗎?我還是不明白。抱歉。 – 2014-09-25 09:23:08
點擊此處查看更多詳情:http://www.cplusplus.com/forum/general/62240/這裏也是很好的代碼示例。 – 2014-09-25 09:26:19
代碼中涉及的矩陣很可能就像正常矩陣的值[i] = {1,2,3}。但我看不到其中一個涉及浮點數/雙數。 Huu .. – 2014-09-25 09:31:27
簡單的答案是否定的。在最低級別,索引是相對於數組起始的 偏移量,其對應於內存中的物理地址 ,並且物理地址始終爲 基數。
一個更普遍的答案是,你可以用它 可以訂購任何類型的,或支持平等和兼容 散列爲索引,只要使用std::map
或std::unordered_map
代替std::vector
。大致如下:
std::map<double, std::map<double>> A;
你的情況的問題是你用什麼類型的密鑰。 由於四捨五入的問題,double
是而不是 是明智的關鍵。 std::ratio
可能是適應性的;否則,你必須自己弄清楚一些事情。如果你很漂亮 確定這些值都將非常接近 整數,或者非常接近以.5
結尾的值,並且 的值將相當小,那麼您可能會使用 特殊排序:
struct Order
{
bool operator()(double lhs, double rhs) const
{
static double const epsilon = 0.25;
double l;
modf(2 * lhs + epsilon, &l);
double r;
modf(2 * rhs + expsilon, &r);
return l < r;
}
};
(這個假設,所有的指標都是非負)在這一點上,不過,你不妨創建自己的 矩陣,利用l
和r
,上面物理指標。
請注意,在C++中,3/2
是1
,而不是1.5
。
你需要從你奇怪的半空間重新映射到自然數。這只是關於重新標籤。 – 2014-09-25 09:11:26
你的意思是什麼意思? – 2014-09-25 09:23:42