为什么四个矩阵都是long double有效数字最后得出的数字会有

以下试题来自:
填空题 请补充函数fun(),该函数的功能是:输出一个N&N矩阵,N由键盘输入,矩阵元素的值为随机数,并计算出该矩阵四周边元素的平均值,结果由函数返回。例如:当N=4时:
注章:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。 试题程序; #include<stdio.h> #include<conio.h> #include<stdlib.h> #define N 20 double fun(int a[ ][N],int n)
int i,j; int k; double s=0.0; double aver=0.0; printf(&*****The array*****\n&); for(i=0;i<n;i++)
for(j=0;j<n;j++)
a[i][j]=rand()%10; printf(&%4d&,a[i][j]); if( 【1】 ) s+=a[i][j];
printf(&\n&);
k= 【2】 ; aver= 【3】 ; return aver; main()
int a[N][N]; int n; double s; Clrscr(); printf(&*****Input the dimension of array N*****\n&); scanf(&%d&,&n); s=fun(a,n); printf(&***** THE RESULT *****\n&); printf(&The average is %2,3f\n&,s); [1] i==0||i==n-1||j==0||j==n-1
为您推荐的考试题库
你可能感兴趣的试题
热门相关试卷
最新相关试卷这个矩阵相加怎么算的?最后竟然变成了一个数字?_百度知道
这个矩阵相加怎么算的?最后竟然变成了一个数字?
A31 不是a31 对应的余子矩阵吗?
这样一来的话A31应该只有4阶呀几个4阶矩阵相加 怎么会得到一个5阶矩阵呢?参见图片
我有更好的答案
那个5阶行列式是D1D1是把D的第3行换成了1,1,1,2,2 得到的一方面D1的2,3行相同, 所以 D1 = 0另一方面, 把D1按第3行展开得 D1 = (A31+A32+A33)+2(A34+A35) 所以 (A31+A32+A33)+2(A34+A35) = 0那是行列式按第3行展开的结果!记原行列式为D
既然某一行/列乘上k加到另一行/列 行列式值没有变
D1是不是根据这样的方式由D变换得到的?如果是
D是怎么变化到D1的呢?
是根据题目的要求 和 展开定理 构造的D1与你说的那个行列式的性质无关你看看教材中行列式按行(列)展开定理吧
非常感谢你的回答 , 总是很快就有回复了 不过我还是不清楚D1是怎么来的...行列式的展开如何构造出D1呢?原行列式是D按照第三行展开 就是a31*A31
3* (-1)^(3+1)| 四阶矩阵|
= 某一个数然后 a31A31+a31A32+ ....求出来的是行列式的值, 而且在展开中出现的新的行列式阶数也比原行列式少一个呢
原行列式是D按照第三行展开 就是a31*A31
3* (-1)^(3+1)| 四阶矩阵|
= 某一个数然后 a31A31+a31A32+ ....你把D1这样展开一下看看不就是 D1 = 1*A31+1*A32+1*A33+2A34+2A35 = (A31+A32+A33)+2(A34+A35) 吗?这是我们想得到的结果, 所以那样构造了D1
哦 我可能明白了 是构造一个矩阵 , 使得这个这个新矩阵D1 的A31 A32。。。和D 的A31 A32..相同是吧?如果是这样的话 矩阵D1的a41应该是 2呀 为什么是3呢? 如果是3的话 D1的A35就和D的A35不一样了
是不是答案有点小错误?
哦 我可能明白了 是构造一个矩阵 , 使得这个这个新矩阵D1 的A31 A32。。。和D 的A31 A32..相同是吧?--就是这样! 并且要得到我们想要的结果果然, 还是你看的仔细是笔误
采纳率:88%
来自团队:
代数余子式是行列式,不是矩阵
A31是代数余子式,是划掉第3行和第1列后得到的那个4阶矩阵的行列式值,是一个数字!解答过程利用了行列式展开的逆过程,具体过程楼上说的很好。
这个是行列式相加。。。不是矩阵相加
其他1条回答
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。四元数和旋转矩阵的转换
我的图书馆
四元数和旋转矩阵的转换
[原]四元数和旋转矩阵互相转换
四元数的用途和好处我就不多说了。之前在网上找旋转矩阵和四元数相互转换的代码,找了几个都不大对劲,正反算算不过来,最后还是从osg源码里贴出来的这个,应该没什么问题,这里小bs一下wiki,ms是错的。这里给一个链接,
http://www.flipcode.com/documents/matrfaq.html以下是源文件:#include&iostream&#include&cmath&using
typedef double ValTstruct Qstruct
Mstruct Quat {ValType _v[4];//x, y, z, w/// Length of
the quaternion = sqrt( vec . vec )ValType length() const{&&& return
sqrt( _v[0]*_v[0] + _v[1]*_v[1] + _v[2]*_v[2] + _v[3]*_v[3]);}///
Length of the quaternion = vec . vecValType length2() const{&&&
return _v[0]*_v[0] + _v[1]*_v[1] + _v[2]*_v[2] +
_v[3]*_v[3];}};struct Matrix {ValType
_mat[3][3];};#define QX q._v[0]#define QY q._v[1]#define QZ
q._v[2]#define QW q._v[3]void Quat2Matrix(const Quat& q,
Matrix& m){&&& double length2 = q.length2();&&& if
(fabs(length2) &= std::numeric_limits&double&::min())&&&
{&&&&&&& m._mat[0][0] = 0.0; m._mat[1][0] = 0.0; m._mat[2][0] =
0.0;&&&&&&& m._mat[0][1] = 0.0; m._mat[1][1] = 0.0; m._mat[2][1] =
0.0;&&&&&&& m._mat[0][2] = 0.0; m._mat[1][2] = 0.0; m._mat[2][2] =
0.0;&&& }&&& else&&& {&&&&&&& double rlength2;&&&&&&& //
normalize quat if required.&&&&&&& // We can avoid the expensive sqrt in
this case since all 'coefficients' below are products of two q
components.&&&&&&& // That is a square of a square root, so it is possible
to avoid that&&&&&&& if (length2 != 1.0)&&&&&&& {&&&&&&&&&&&
rlength2 = 2.0/length2;&&&&&&& }&&&&&&& else&&&&&&& {&&&&&&&&&&&
rlength2 = 2.0;&&&&&&& }&&&&&&& &&&&&&& // Source: Gamasutra,
Rotating Objects Using Quaternions&&&&&&& //&&&&&&&
//http://www.gamasutra.com/features//quaternions_01.htm&&&&&&&
&&&&&&& double wx, wy, wz, xx, yy, yz, xy, xz, zz, x2, y2, z2;&&&&&&&
&&&&&&& // calculate coefficients&&&&&&& x2 = rlength2*QX;&&&&&&& y2
= rlength2*QY;&&&&&&& z2 = rlength2*QZ;&&&&&&& &&&&&&& xx = QX *
x2;&&&&&&& xy = QX * y2;&&&&&&& xz = QX * z2;&&&&&&& &&&&&&& yy
= QY * y2;&&&&&&& yz = QY * z2;&&&&&&& zz = QZ * z2;&&&&&&&
&&&&&&& wx = QW * x2;&&&&&&& wy = QW * y2;&&&&&&& wz = QW *
z2;&&&&&&& &&&&&&& // Note. Gamasutra gets the matrix assignments
inverted, resulting&&&&&&& // in left-handed rotations, which is contrary to
OpenGL and OSG's &&&&&&& // methodology. The matrix assignment has been
altered in the next&&&&&&& // few lines of code to do the right
thing.&&&&&&& // Don Burns - Oct 13, 2001&&&&&&& m._mat[0][0] = 1.0 -
(yy + zz);&&&&&&& m._mat[1][0] = xy -&&&&&&& m._mat[2][0] = xz +
&&&&&&& &&&&&&& &&&&&&& m._mat[0][1] = xy +&&&&&&&
m._mat[1][1] = 1.0 - (xx + zz);&&&&&&& m._mat[2][1] = yz -&&&&&&&
&&&&&&& m._mat[0][2] = xz -&&&&&&& m._mat[1][2] = yz +
&&&&&&& m._mat[2][2] = 1.0 - (xx + yy);&&& }}void
Matrix2Quat(const Matrix& m, Quat& q){&&& ValT&&&
ValType tq[4];&&& int&&& i,&&& // Use tq to store the largest
trace&&& tq[0] = 1 + m._mat[0][0]+m._mat[1][1]+m._mat[2][2];&&& tq[1] =
1 + m._mat[0][0]-m._mat[1][1]-m._mat[2][2];&&& tq[2] = 1 -
m._mat[0][0]+m._mat[1][1]-m._mat[2][2];&&& tq[3] = 1 -
m._mat[0][0]-m._mat[1][1]+m._mat[2][2];&&& // Find the maximum (could
also use stacked if's later)&&& j = 0;&&& for(i=1;i&4;i++) j =
(tq[i]&tq[j])? i :&&& // check the diagonal&&& if
(j==0)&&& {&&&&&&& /* perform instant calculation */&&&&&&& QW =
tq[0];&&&&&&& QX = m._mat[1][2]-m._mat[2][1];&&&&&&& QY =
m._mat[2][0]-m._mat[0][2];&&&&&&& QZ = m._mat[0][1]-m._mat[1][0];&&&
}&&& else if (j==1)&&& {&&&&&&& QW =
m._mat[1][2]-m._mat[2][1];&&&&&&& QX = tq[1];&&&&&&& QY =
m._mat[0][1]+m._mat[1][0];&&&&&&& QZ = m._mat[2][0]+m._mat[0][2];&&&
}&&& else if (j==2)&&& {&&&&&&& QW =
m._mat[2][0]-m._mat[0][2];&&&&&&& QX = m._mat[0][1]+m._mat[1][0];&&&&&&&
QY = tq[2];&&&&&&& QZ = m._mat[1][2]+m._mat[2][1];&&& }&&& else /*
if (j==3) */&&& {&&&&&&& QW = m._mat[0][1]-m._mat[1][0];&&&&&&& QX =
m._mat[2][0]+m._mat[0][2];&&&&&&& QY = m._mat[1][2]+m._mat[2][1];&&&&&&&
QZ = tq[3];&&& }&&& s = sqrt(0.25/tq[j]);&&& QW *=&&& QX
*=&&& QY *=&&& QZ *=}void printMatrix(const
Matrix& r, string name){cout&&"RotMat "&&name&&" =
"&&cout&&"\t"&&r._mat[0][0]&&"
"&&r._mat[0][1]&&"
"&&r._mat[0][2]&&cout&&"\t"&&r._mat[1][0]&&"
"&&r._mat[1][1]&&"
"&&r._mat[1][2]&&cout&&"\t"&&r._mat[2][0]&&"
"&&r._mat[2][1]&&"
"&&r._mat[2][2]&&cout&&}void
printQuat(const Quat& q, string name){cout&&"Quat
"&&name&&" =
"&&cout&&"\t"&&q._v[0]&&"
"&&q._v[1]&&" "&&q._v[2]&&"
"&&q._v[3]&&cout&&}int
main(){ValType phi, omiga,phi = 1.37 ; omiga
= 0.316 ; kappa = -1.1;&&& ValType
a1,a2,a3,b1,b2,b3,c1,c2,c3;&&& a1 = cos(phi)*cos(kappa) -
sin(phi)*sin(omiga)*sin(kappa);&&& a2 = -cos(phi)*sin(kappa) -
sin(phi)*sin(omiga)*cos(kappa);&&& a3 = -sin(phi)*cos(omiga);&&& b1
= cos(omiga)*sin(kappa);&&& b2 = cos(omiga)*cos(kappa);&&& b3 =
-sin(omiga);&&& c1 = sin(phi)*cos(kappa) +
cos(phi)*sin(omiga)*sin(kappa);&&& c2 = -sin(phi)*sin(kappa) +
cos(phi)*sin(omiga)*cos(kappa);&&& c3 = cos(phi)*cos(omiga);&&& &&&
M&&& r._mat[0][0] = a1;r._mat[0][1] = a2;r._mat[0][2] =
a3;r._mat[1][0] = b1;r._mat[1][1] = b2;r._mat[1][2] =
b3;r._mat[2][0] = c1;r._mat[2][1] = c2;r._mat[2][2] =
c3;printMatrix(r, "r");&&&&
//////////////////////////////////////////////////////////Quat
q;Matrix2Quat(r, q);printQuat(q, "q");Matrix
_r;Quat2Matrix(q, _r);printMatrix(_r, "_r");&&&
system("pause");return 0; }
TA的最新馆藏
喜欢该文的人也喜欢为什么程序运行出来h矩阵里面的数都是一样的_百度知道
为什么程序运行出来h矩阵里面的数都是一样的
i=imread('C:\Users\has\Desktop\频谱图.bmp');
i=double(i);
% 解决像素值相加最大显示为255的问题
% 所要求环形去两个圆的半径
我有更好的答案
表示矩阵A的共轭转置。即如果
其中i(上面有个尖)是虚数单位。那么
就是把各个元素取了共轭之后再转置。 当然如果A是实矩阵,那么根据上面的推导,A的共轭转置就是A的转置。
采纳率:74%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。四元数矩阵
四元数矩阵文章
你可能感兴趣的标签
热门资源推荐}

我要回帖

更多关于 double 有效数字 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信