本人按照有限元基础教程写的matlab程序,显示too many inputs arguments,这是怎么回事儿啊

本人按照有限元基础教程写的matlab程序,显示too many inputs arguments,这是怎么回事儿啊,第1张

你函数定义的时候只有五个参数,调用的时候却有7个参数。

function k= Bar2D2Node_stiffness(E, A, x1, y1, alpha) 改成

function k = Bar2D2Node_stiffness(E, A, x1, y1, x2, y2, alpha)

基于有限元和MATLAB软件的结构动力学计算和它在工程数值仿真中的应用,包括有限元的基本方法和步骤、结构的动力特性和响应分析、单元的质量矩阵和刚度矩阵的建立及典型结构的动力学分析、工程应用和数值仿真等内容。

求解方法:Nastran 材料库位于Utilities _ Materials _

Material Session File Library菜单下。

选中需要的材料单击Apply按钮就会把相应的材料添加进模型材料中。

nastran是1966年美国国家航空航天局(NASA)为了满足当时航空航天

工业对结构分析的迫切需求主持开发大型应用有限元程序。

在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function y=zhidao_kuzub(a,x)

%其中a,b,c分别用a(1),a(2),a(3)代替

y=a(1)+a(2)/(x+a(3));

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

以下是测试:在Matlab下面输入:

%先由已经的x和已知的a,b,c来产生y,然后通过x,y

%验证一下:能否得到我们刚才所选用的参数a,b,c

x=1:20;

a=1;

b=2;

c=3;

y=zhidao_kuzub([a,b,c],x);

[A,res]=lsqcurvefit('zhidao_kuzub',ones(1,3),x,y);

A

得到的结果:

A =

10029 19451 29007

跟a,b,c的值大致一样。

以下是你的问题:

你设好x,y后,在Matlab下输入:

[A,res]=lsqcurvefit('zhidao_kuzub',ones(1,3),x,y);

A

就可以了。

clc

clear

tic;

% n 是行与列划分的格子数,对整个[0,1][0,1]有n^2个划分,can为方程中的参数k

%这里我们用1,2,3按逆时针来表示一个三角形的各个顶点

% s是一个n^210的关联矩阵,s(i,1)表示第i个三角形,s(i,2),s(i,3),s(i,4)分别表示第i个三角形的1,2,3所对应的顶点

% s(i,5),s(i,6);s(i,7),s(i,8);s(i,9),s(i,10)分别表示顶点1,2,3所代表的坐标

%生成关联矩阵s

%A是总刚矩阵

%声明符号变量x y

n=20;

can=20;

s=zeros(2n^2,10);

h=1/n;

st=1/(2n^2);

A=zeros((n+1)^2,(n+1)^2);

syms x y;

for  k=1:1:2n^2

        s(k,1)=k;

        q=fix(k/(2n));

        r=mod(k,(2n));

        if (r~=0)

            r=r;

        else r=2n;q=q-1;

        end

        if (r<=n)

            s(k,2)=q(n+1)+r;

            s(k,3)=q(n+1)+r+1;

            s(k,4)=(q+1)(n+1)+r+1;

            s(k,5)=(r-1)h;

            s(k,6)=qh;

            s(k,7)=rh;

            %%

            % 

            %   for x = 1:10

            %       disp(x)

            %   end

            % 

            s(k,8)=qh;

            s(k,9)=rh;

            s(k,10)=(q+1)h;

        else

            s(k,2)=q(n+1)+r-n;

            s(k,3)=(q+1)(n+1)+r-n+1;

            s(k,4)=(q+1)(n+1)+r-n;

            s(k,5)=(r-n-1)h;

            s(k,6)=qh;

            s(k,7)=(r-n)h;

            s(k,8)=(q+1)h;

            s(k,9)=(r-n-1)h;

            s(k,10)=(q+1)h;

        end

end

%下面生成基函数L(i)表示第i个点顶点的基函数

%生成单刚矩阵d

%生成单刚矩阵并将其加入总纲矩阵

d=zeros(3,3);

B=zeros((n+1)^2,1);

b=zeros(3,1);

%生成A的总刚

for   k=1:1:2n^2

     L(1)=(1/(2st))((s(k,7)s(k,10)-s(k,9)s(k,8))+(s(k,8)-s(k,10))x+(s(k,9)-s(k,7))y);

     L(2)=(1/(2st))((s(k,9)s(k,6)-s(k,5)s(k,10))+(s(k,10)-s(k,6))x+(s(k,5)-s(k,9))y);

     L(3)=(1/(2st))((s(k,5)s(k,8)-s(k,7)s(k,6))+(s(k,6)-s(k,8))x+(s(k,7)-s(k,5))y);

     for i=1:1:3

        for j=i:3

            d(i,j)=int(int(((((diff(L(i),x))(diff(L(j),x)))+((diff(L(i),y))(diff(L(j),y))))-((can^2)L(i)L(j))),x,0,1),y,0,1);

            d(j,i)=d(i,j);

        end

     end   

     for i=1:1:3

         for j=1:1:3

             A(s(k,(i+1)),s(k,(j+1)))=A(s(k,(i+1)),s(k,(j+1)))+d(i,j);

         end

     end

     for i=1:1:3

         b(i)=int(int((L(i)),x,0,1),y,0,1);

         B(s(k,(i+1)),1)=B(s(k,(i+1)),1)+b(i);

     end

      

end

%下面根据边界条件来求解有限元方程组Mx=B,齐次边界条件约掉了很多项

M=zeros((n+1)^2,n^2);

j=n^2;

for i=(n^2+n):-1:1

    if ((mod(i,(n+1)))~=1)

        M(:,j)=A(:,i);

        j=j-1;

    else continue

    end

end

%preanswer是未知点的值是(n+1)^2(n^2)的

preanswer=M\B;

%得到所有节点的值

answer=zeros((n+1)^2,1);

j=1;

for i=1:1:(n^2+n)

    if ((mod(i,(n+1)))~=1)

        answer(i)=preanswer(j);

        j=j+1;

    else answer(i)=0;

    end

end

%%

%   for x = 1:10

%   for x = 1:10

%   for x = 1:10

%       disp(x)

%   end

%       disp(x)

%   end

%       disp(x)

%   end

%生成求解后的图

Z=zeros((n+1),(n+1));

for i=1:1:(n+1)^2

      s=fix(i/(n+1))+1;

      r=mod(i,(n+1));

      if(r==0)

          r=n+1;

          s=s-1;

      else

      end

      Z(r,s)=answer(i);

end

[X,Y]=meshgrid(1:-h:0,0:h:1);

surf(X,Y,Z);

 

 

 

toc;

t=toc;

以上就是关于本人按照有限元基础教程写的matlab程序,显示too many inputs arguments,这是怎么回事儿啊全部的内容,包括:本人按照有限元基础教程写的matlab程序,显示too many inputs arguments,这是怎么回事儿啊、matlab有限元结构动力学分析与工程应用的源程序怎么用、matlab调用nastran求解等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9305661.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存