一维数组-如何用C程序解决一维变带宽数组存储的矩阵与向量相乘

问题描述

如何用C程序解决一维变带宽数组存储的矩阵与向量相乘

if(N1==0) nd=3*np; else nd=6*np; kd=new long[nd+1]; for(j=0;j<=nd;j++) kd[j]=0;
//确定每一自由度的最大半带宽及一维存储数组的最大值
for(j=1;j<=np;j++) { id1=0; for(i=0;i
if(j1!=j&&j2!=j) goto pas200; if(j1>j||j2>j) goto pas200; id2=abs(j2-j1); if(id2>id1) id1=id2; pas200:; }
//杆单元

if(N1==0) { id=3*(id1+1); if(j==1) kd[1]=1; if(j!=1) kd[3*j-2]=kd[3*j-3]+id-2; kd[3*j-1]=kd[3*j-2]+id-1; kd[3*j]=kd[3*j-1]+id; }

//定义一维存储矩阵数组
k=new float[kd[nd]+1]; kp=new float[kd[nd]+1]; for(i=1;i<=kd[nd];i++) { k[i]=0; }
//杆单元,求单刚,并组装总刚
if(N1==0) { for(ie=0;ie
inn=nln[ie]-(nln[ie]/50)*50-1; j1=nl1[ie]-1; j2=nl2[ie]-1; x1=npx[j1]; y1=npy[j1]; z1=npz[j1]; x2=npx[j2]; y2=npy[j2]; z2=npz[j2];
xx=x2-x1; yy=y2-y1; zz=z2-z1; ole=sqrt(xx*xx+yy*yy+zz*zz); s=sqrt(xx*xx+yy*yy);
ke[1][1]=nje*njA[nln[ie]-(nln[ie]/50)*50-1]/ole; ke[4][4]=ke[1][1]; ke[4][1]=-ke[1][1]; ke[1][4]=-ke[1][1]; if(s!=0) { t[1][1]=xx/ole; t[1][2]=yy/ole; t[1][3]=zz/ole; t[2][1]=-yy/s; t[2][2]=xx/s;
t[2][3]=0; t[3][1]=-t[2][2]*t[1][3]; t[3][2]=t[2][1]*t[1][3]; t[3][3]=s/ole; }
else { t[1][1]=0; t[1][2]=0; t[1][3]=1; t[2][1]=0; t[2][2]=1; t[2][3]=0; t[3][1]=-1; t[3][2]=0; t[3][3]=0; }
for(i=4;i
for(i=1;i
for(i=1;i
for(i=1;i
for(j=1;j
if(nn>ll) goto pas260; ij=kd[ll]+nn-ll; k[ij]=k[ij]+ke[n][l];
pas260:; }} }} }
这个程序得到一维变带宽存储的刚度矩阵K。如何实现K与位移向量相乘并得出计算结果

时间: 2024-10-28 01:06:15

一维数组-如何用C程序解决一维变带宽数组存储的矩阵与向量相乘的相关文章

数组 算法-在C++中如何实现一维变带宽存储的矩阵与向量相乘

问题描述 在C++中如何实现一维变带宽存储的矩阵与向量相乘 矩阵K存储在一维变带宽数组中,知道主对角元位置数组kd[].如何实现K与一位数组y[n]相乘.

vs2015-C语言数组的变长数组问题

问题描述 C语言数组的变长数组问题 VS2015为什么用不了变长数组,用const定义的也不能用,什么编辑器才能用?求大神帮助 解决方案 跟vs2015没关系,用list吧 解决方案二: c语言变长数组C语言变长数组C语言变长数组 解决方案三: 都不能,你用vecotr吧 解决方案四: c 有变长数组吗? 用stl库吧,向量或者list都可以 解决方案五: 用gcc编译,加上c99标志 解决方案六: c支持变长数组的吗?????????

oracle中变长数组varray,嵌套表,集合使用方法_oracle

创建变长数组类型 CREATE TYPE varray_type AS VARRAY(2) OF VARCHAR2(50); 这个变长数组最多可以容纳两个数据,数据的类型为 varchar2(50) 更改元素类型的大小或精度 可以更改变长数组类型和嵌套表类型 元素的大小. ALTER TYPE varray_type MODIFY ELEMENT TYPE varchar2(100) CASCADE; CASCADE选项吧更改传播到数据库中的以来对象.也可以用 INVALIDATE 选项使依赖对

编程-如何用C语言的一维数组对一个元素的增删改

问题描述 如何用C语言的一维数组对一个元素的增删改 今天老师讲了C语言的一维数组,就是大批量处理数据的一个工具,他说自己回去 思考增删改查,唯独删除我理解不到,哪位大神可否指点迷津!多谢多谢啦 解决方案 比如,你确认你的数组中存放的都是整数,你可以将这个元素置为-1表示删除.增加就是先检查你的数组中有没有-1的元素,如果有,就设置为你的值.如果全部都满了,就开一个更大的数组,把数据拷贝过去. 解决方案二: 数组是数据结构中的顺序存储结构,删除就是将其下标所在位置的中的内容置为空(也就是0),然后

代码-用c++解决一维数组元素分批问题

问题描述 用c++解决一维数组元素分批问题 有一个一维数组,都是整数,我需要对元素分批.元素之和不能超过一个既定的整数S.比如第一个元素自动成为B1.假定已经建立批B1,B2,...Bk,当前待分批的元素为j,则从B1开始,将j纳入最合适的批次中(也即Bi(1<=i<=k)总和没有超过S且S-∑Sj最小的批次),若均不能容纳,新建一个批次Bk+1.应该怎么编代码? 解决方案 这是一个历史根源很深的问题,貌似研究生课程的<最优化原理>也会涉及到类似于此的一个分配算法. 而在我们通信这

解析将多维数组转换为支持curl提交的一维数组格式

本篇文章是对将多维数组转换为支持curl提交的一维数组格式实现代码进行了详细的分析介绍,需要的朋友参考下   复制代码 代码如下: /**      * @desc    多维数组转化为支持curl提交数组      * @author    脚本之家    2013-07-8      */     public function toPost(array $params = array(), $pre = '')     {         $result = array();       

c++-C++编写一个扫描一维码128码的程序

问题描述 C++编写一个扫描一维码128码的程序 我现在想用zbar编写一个可以扫描一维码128码的一个程序,但是不知道怎么编写,哪位大神可以教教我,如果有源码的话是否可以让我看一下到底怎么编写,谢谢 解决方案 参考SourceForge.net的开源项目ZBar bar code reader 解决方案二: 你程序有问题,别人可以帮你看看,你直接让别人写,不合适!

如何用C#程序获得系统最新产生的日志?

问题描述 如何用C#程序获得系统最新产生的日志? 解决方案 解决方案二:范围也太宽了吧解决方案三:那就如何获取某个程序最新的错误日志!解决方案四:想要获得事件查看器中的内容?解决方案五:是的,要根据日期来获取的,请问如何解决?解决方案六:自己写日志,还是系统日志?自己写日志的话,好像有个log4net的可以用,系统日志的话,这个要网上搜搜了~解决方案七:调用系统的错误日志,我是要做个监测程序,程序一出错就可以马上得知!解决方案八:可以试一下EventLog.EntryWritten事件若要获取事

各位大神,传递图片问题,学长说是数组越界,不知道怎么解决

问题描述 各位大神,传递图片问题,学长说是数组越界,不知道怎么解决 图片传递代码图片接收代码 解决方案 不是内存溢出,而是有变量为null 解决方案二: 我觉得你的学长判断是错误的,因为错误消息已经写了:NullPointerException,这个异常消息的含义就是说有空对象调用了方法.所以不会是内存溢出(不完全排除,但可能性很小),而你所指出的那行代码上有一个空对象调用了方法. 我看过你的代码,你箭头所指向的代码一共有4个对象调用了方法,其中intent对象已经看到了你new的代码,所以它不