24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1779  |  回复: 9
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

三星2010

木虫 (小有名气)

[求助] 请matlab高手看一下这个问题怎样编程才好,附程序代码,谢谢!

主要工作就是求解隐函数方程,参数及方程如下:
taof=7.2;
Gf=0.576;
delta1=0.034;
deltaf=0.16;
b1=25;
E1=250000;
t1=5.12;
b2=400;
E2=10000;
t2=20;
L=1200;
eql=600;
beta=b2*E2*t2/(b1*E1*t1);
lamda=((taof^2/2/Gf*(1/E1/t1+b1/b2/E2/t2)))^0.5;
lamda1=(lamda^2*2*Gf/(delta1*taof))^0.5;
lamda2=(lamda^2*2*Gf/(deltaf-delta1)/taof)^0.5;
参数a和h满足一下关系l
amda2/lamda1*sinh(lamda1*(L-a-h))- cot(lamda2*h)*cosh(lamda1*(L-a-h)-1/beta/sin(lamda2*h)=0
我能肯定的是a从0单调增大至892.806169,h的范围大致是[135,150]我想要的结果是将a的变化区间若干等分,比如1000等分,对每一个a去求对应的h并将这两个参数输出.
我自己编写的程序如下:
for i=1:1:892.9/0.001
    a(i)=i*0.001-0.001;
error=1;
  for j=135/0.001:1:150/0.001
    h1(j)=j*0.001;
    error1(j)=lamda2/lamda1*sinh(lamda1*(L-a(i)-h1(j)))- ...
                cot(lamda2*h1(j))*cosh(lamda1*(L-a(i)-h1(j)))- ...
                1/beta/sin(lamda2*h1(j));
       if error>abs(error1(j))
    error=abs(error1(j));
       h(i)=h1(j);
       end
end
if L break;
end
ltpu(i)=lamda2/lamda1*tanh(lamda1*(L-h(i)-a(i)))*cos(lamda2*h(i))+sin(lamda2*h(i));
ltpb(i)=lamda2/((lamda1)^2*delta1*b1*E1*t1)*(1+cos(lamda2*h(i))/(beta*cosh(lamda1*(L-a(i)-h(i)))));
ltp(i)=ltpu(i)/ltpb(i);
lts(i)=deltaf+ltp(i)*a(i)/(b1*E1*t1);
end
plot(lts,ltp,'b');
程序运行后总提示h未定义,不知道是哪里出了问题,有没有更好的办法求解啊,我都被这个问题折磨晕了,请大家出手相助!

[ Last edited by 三星2010 on 2012-12-26 at 16:36 ]
回复此楼
静心,合力
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

三星2010

木虫 (小有名气)

引用回帖:
7楼: Originally posted by dbb627 at 2012-12-28 14:39:01
taof=7.2;
Gf=0.576;
delta1=0.034;
deltaf=0.16;
b1=25;
E1=250000;
t1=5.12;
b2=400;
E2=10000;
t2=20;
L=1200;
eql=600;
beta=b2*E2*t2/(b1*E1*t1);
lamda=((taof^2/2/Gf*(1/E1/t1+b1/b2/E2/t2))) ...

这个运行的很好!结果也可以接受,只是我觉得少点什么,比如若将来碰到的问题含有三个参数,该方法能否比较容易推广至三维情形?最主要的是我现在还没有弄明白我编的程序问题出在何处。。。
静心,合力
8楼2012-12-28 20:10:29
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 10 个回答

chembetsey

木虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
三星2010: 金币+10, 有帮助, 我不能确定h到底是多少维的,可以这样预定义吗? 2012-12-27 11:30:00
h是一个一维矩阵,你需要先定义一下,如:h=zeros[1000]
2楼2012-12-26 23:57:16
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

chembetsey

木虫 (小有名气)

【答案】应助回帖

你可以定义一个足够大的就是了,虽然有点浪费内存。
如果你知道维数大小,就定义成指定的大小。

» 本帖已获得的红花(最新10朵)

3楼2012-12-28 00:49:29
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

dbb627

荣誉版主 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
>> taof=7.2;
Gf=0.576;
delta1=0.034;
deltaf=0.16;
b1=25;
E1=250000;
t1=5.12;
b2=400;
E2=10000;
t2=20;
L=1200;
eql=600;
beta=b2*E2*t2/(b1*E1*t1);
lamda=((taof^2/2/Gf*(1/E1/t1+b1/b2/E2/t2)))^0.5;
lamda1=(lamda^2*2*Gf/(delta1*taof))^0.5;
lamda2=(lamda^2*2*Gf/(deltaf-delta1)/taof)^0.5;
syms a h
f=lamda2/lamda1*sinh(lamda1*(L-a-h))- cot(lamda2*h)*cosh(lamda1*(L-a-h))-1/beta/sin(lamda2*h);
ezplot(f,[0 900])

» 本帖已获得的红花(最新10朵)

The more you learn, the more you know, the more you know, and the more you forget. The more you forget, the less you know. So why bother to learn.
4楼2012-12-28 09:05:17
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见