24小时热门版块排行榜    

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

艳雪加油

铜虫 (初入文坛)

[求助] 求大神帮我用matlab编个小程序。 已有1人参与

用matlab编个小程序,式子的条件给的很充足,只不过我水平太低,求大神们帮助,在此先谢过了!

求大神帮我用matlab编个小程序。


发自小木虫Android客户端
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

pdl9527

专家顾问 (小有名气)

引用回帖:
10楼: Originally posted by 艳雪加油 at 2017-01-13 20:09:15
实在太开心啦!运行结果没有警告更没有error!谢谢大神的程序,谢谢!!
...

哈哈,并不是什么大神。

满意的话就给个最佳答案吧~

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

11楼2017-01-13 20:21:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 12 个回答

pdl9527

专家顾问 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
首先ht可能有三种情况,分别求这三种情况下的ht值,如果方程有解且求得的ht也满足假设的话则输出结果,发现当ht在第二区间的时候能够得到正确的结果。
CODE:
ht位于第2区间:

        ht=1.64484

当然使用fsolve的时候初值是随机设置的,你也可以改变初值看看在某个区间内是不是确实没有解,代码如下:
CODE:
function question_21
clear;clc
%2017-1-12
a=6370;
Ns=320;
G=-39;
C1=0.1258;
C9=0.1404;
N1=281;
N9=104.6713;
hs=0.15;
Re=50;
sita=0.0262;
ns=1.0003;
f1=quadl(@fun1,hs,hs+1);
f2=quadl(@fun2,hs+1,9);
%ht的值位于[hs,hs+1]中
[ht(1),fval,exitflag(1),output] =fsolve(@(ht) quadl(@fun1,hs,ht)-Re,hs);
%ht的值位于[hs+1,9]中
[ht(2),fval,exitflag(2),output] =fsolve(@(ht) f1+quadl(@fun2,hs+1,ht)-Re,5);
%ht的值位于[9,60]中
[ht(3),fval,exitflag(3),output] =fsolve(@(ht) f1+f2+quadl(@fun3,9,ht)-Re,30);
%输出正确的结果
lb=[hs,hs+1,9];
ub=[hs+1,9,60];
for i=1:3
    if fval>0 || (ht(i)>=lb(i)&&ht(i)<=ub(i))
        fprintf('ht位于第%d区间:\n\n\tht=%4.5f\n\n',i,ht(i))
    end
end
function y=fun1(h)
n=1+(Ns+G*(h-hs))*1e-6;
y=n.^2.*(a+h)./(sqrt(n.^2.*(a+h).^2-ns.^2*(a+hs).^2*cos(sita).^2));
end
function y=fun2(h)
n=1+(N1*exp(-C1*(h-hs-1)))*1e-6;
y=n.^2.*(a+h)./(sqrt(n.^2.*(a+h).^2-ns.^2*(a+hs).^2*cos(sita).^2));
end
function y=fun3(h)
n=1+(N9*exp(-C9*(h-9)))*1e-6;
y=n.^2.*(a+h)./(sqrt(n.^2.*(a+h).^2-ns.^2*(a+hs).^2*cos(sita).^2));
end
end

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

2楼2017-01-13 05:45:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

艳雪加油

铜虫 (初入文坛)

送红花一朵
引用回帖:
2楼: Originally posted by pdl9527 at 2017-01-13 05:45:27
首先ht可能有三种情况,分别求这三种情况下的ht值,如果方程有解且求得的ht也满足假设的话则输出结果,发现当ht在第二区间的时候能够得到正确的结果。

ht位于第2区间:

        ht=1.64484

当然使用fsolve的时候初 ...

首先,先谢谢!!通过运行呢,我发现了点问题:我感觉程序的最后好像多了个end,而且function y=fun1(h),function y=fun2(h),function y=fun3(h)在这个长长的程序中是不被识别的,可以另建三个m文件,这样就可以调用啦(所需的条件需再输入一遍),还有fval应该变成feval吧( ??_? ?)。那个,最后的运行结果还是有点问题(如图所示),期望大神可以再次帮忙,谢谢!!
求大神帮我用matlab编个小程序。-1



发自小木虫Android客户端
3楼2017-01-13 11:31:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

艳雪加油

铜虫 (初入文坛)

引用回帖:
3楼: Originally posted by 艳雪加油 at 2017-01-13 11:31:32
首先,先谢谢!!通过运行呢,我发现了点问题:我感觉程序的最后好像多了个end,而且function y=fun1(h),function y=fun2(h),function y=fun3(h)在这个长长的程序中是不被识别的,可以另建三个m文件,这样就可以调 ...

就是ht运行的在三个区间都有,怎么确定在哪个区间呢?

发自小木虫Android客户端
4楼2017-01-13 11:36:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见