24小时热门版块排行榜    

查看: 2334  |  回复: 6

815292578

木虫 (著名写手)

[求助] matlab计算一个递推公式,请大神指点啊... 已有2人参与

已知条件:
d=1;
angle=45*pi/180;
L0=d*tan(angle);
H0=0;
x=[1,2,3,4,5] %x是一个数组
n=5;
h=(pi/2-angle)/n;
%下面是递推公式
L(i)=(L(i-1)*tan(x(i))*tan(angle+i*h)+tan(angle+i*h)*(d-H(i-1)))/(1+tan(x(i))*tan(angle+i*h));
H(i)=(d*tan(x(i))*tan(angle+i*h)-L(i-1)*tan(x(i))+H(i-1))/(1+tan(x(i))*tan(angle+i*h))

由于matlab学习时间不长,对上面的两个递推公式编写了很长时间都没有成功啊,希望高手指点一下,给出相关程序,先谢谢喽....
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
815292578: 金币+10, ★★★很有帮助, 多谢你的回复... 2014-07-29 14:48:40
1stOpt试试:
CODE:
Constant d=1, angle=45*pi/180, L0=d*tan(angle), H0=0, n=5, h_=(pi/2-angle)/n;
LoopConstant x=[1,2,3,4,5], i=[1,2,3,4,5], LL=[L0, L(4)], HH=[H0, H(4)];
Function
L=(LL*tan(x)*tan(angle+i*h)+tan(angle+i*h_)*(d-HH))/(1+tan(x)*tan(angle+i*h_));
H=(d*tan(x)*tan(angle+i*h)-LL*tan(x)+HH)/(1+tan(x)*tan(angle+i*h));

L        H
0.933261546709751        -1.49879649117998E-15
-0.0237958087696211        -0.0197234133869153
5.59451160589342        -0.103821834803187
6.24538579861417        0.160555187260027
-0.248318617485342        1.42828219257098

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

2楼2014-07-29 14:39:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

815292578

木虫 (著名写手)

送红花一朵
引用回帖:
2楼: Originally posted by dingd at 2014-07-29 14:39:57
1stOpt试试:

Constant d=1, angle=45*pi/180, L0=d*tan(angle), H0=0, n=5, h_=(pi/2-angle)/n;
LoopConstant x=, i=, LL=, HH=;
Function
L=(LL*tan(x)*tan(angle+i*h)+tan(angle+i*h_)*(d-HH))/(1+tan(x)* ...

十分感谢你的回复啊,1stopt这个软件不会用啊,能否用matlab编写啊?现在在学习matlab软件。
3楼2014-07-29 14:48:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hytao2012

铁杆木虫 (正式写手)

木头虫子

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
815292578: 金币+40, ★★★★★最佳答案, 感谢你的回复,金币不多请见谅。还有点问题请帮忙看一下,谢谢... 2014-07-29 16:40:14
原谅我看不懂里面的关系,但是大致是这样的,你自己可以改
clear; clc;
d=1; n=5;
x=[1,2,3,4,5];
angle=45*pi/180;
h=(pi/2-angle)/n;

L=zeros(5, 1);
H=zeros(5, 1);
L(1)=d*tan(angle);
H(1)=0;
for i=1:4
    L(i+1)=(L(i)*tan(x(i))*tan(angle+(i+1)*h)+tan(angle+(i+1)*h)*(d-H(i)))/(1+tan(x(i+1))*tan(angle+(i+1)*h));
    H(i+1)=(d*tan(x(i))*tan(angle+i*h)-L(i)*tan(x(i))+H(i))/(1+tan(x(i))*tan(angle+(i+1)*h));
end
display(L);
display(H);
4楼2014-07-29 15:23:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

815292578

木虫 (著名写手)

引用回帖:
4楼: Originally posted by hytao2012 at 2014-07-29 15:23:36
原谅我看不懂里面的关系,但是大致是这样的,你自己可以改
clear; clc;
d=1; n=5;
x=;
angle=45*pi/180;
h=(pi/2-angle)/n;

L=zeros(5, 1);
H=zeros(5, 1);
L(1)=d*tan(angle);
H(1)=0;
for i=1:4
    ...

非常感谢你的回复,你的程序可以运行,谢谢...
这里还有点问题想请教一下,我的程序中x值是未知的,是我自己事先求出来然后又进行计算的,源程序是这样的:

Dj=8.425;  
k=0.235;
t=1/(2*k);
theta=45.27*pi/180;
d=1;
a=theta;
b=pi/2;
n=20;
h=(b-a)/n;
x=[];
for i=1:1:n;
    psaiI=theta+(i-1)*h;
    z=fsolve(@(z)tan(psaiI)*sqrt((1-(2*z-1)/z^2)*(1-1/((2*z-1)^t)^2))-1/((2*z-1)^t)-sqrt((2*z-1)/z^2),1);  %数值解求出z
    xx=fsolve(@(x)cos(x)/sin(psaiI-x)-sqrt(z^2/(2*z-1)),0);   %数值解求出x
    X=[x,xx];
    x=X;   %将x放入一个X数组中,为了下一步程序的调用
end
X    %程序运行到这里是可以的,下面直接接入你提供的程序,出现了错误!
L=zeros(n, 1);
H=zeros(n, 1);
L(1)=d*tan(angle);
H(1)=0;
for i=1:1:n-1
    L(i+1)=(L(i)*tan(X(i))*tan(angle+(i+1)*h)+tan(angle+(i+1)*h)*(d-H(i)))/(1+tan(X(i+1))*tan(angle+(i+1)*h));
    H(i+1)=(d*tan(X(i))*tan(angle+i*h)-L(i)*tan(X(i))+H(i))/(1+tan(X(i))*tan(angle+(i+1)*h));
end
display(L);
display(H);
能否在麻烦你帮我看看这个程序怎么修改啊?matlab刚刚学习实在是不懂啊....
5楼2014-07-29 16:38:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hytao2012

铁杆木虫 (正式写手)

木头虫子

引用回帖:
5楼: Originally posted by 815292578 at 2014-07-29 16:38:32
非常感谢你的回复,你的程序可以运行,谢谢...
这里还有点问题想请教一下,我的程序中x值是未知的,是我自己事先求出来然后又进行计算的,源程序是这样的:

Dj=8.425;  
k=0.235;
t=1/(2*k);
theta=45.27*p ...

你给的变量换了,一开始是angle,后来是theta。还有,我的程序 i 可能比较换乱,需要你自己改正。
6楼2014-07-29 17:48:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

815292578

木虫 (著名写手)

引用回帖:
6楼: Originally posted by hytao2012 at 2014-07-29 17:48:00
你给的变量换了,一开始是angle,后来是theta。还有,我的程序 i 可能比较换乱,需要你自己改正。...

好的,我自己检查一下,谢谢帮忙啊...
7楼2014-07-30 20:28:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 815292578 的主题更新
信息提示
请填处理意见