24小时热门版块排行榜    

查看: 2294  |  回复: 11

艳雪加油

铜虫 (初入文坛)

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

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

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


发自小木虫Android客户端
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

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的回帖

pdl9527

专家顾问 (小有名气)

【答案】应助回帖

引用回帖:
8楼: Originally posted by 艳雪加油 at 2017-01-13 17:03:41
程序编的太好了,非常感谢!!只不过还有个小小的问题,要求最后是求角的。就是求出的ht要用到求角的公式里(一个公式),大神帮人帮到底,能不能把最后求角公式的matlab程序加到原先的程序里,能运行出来真是太谢 ...

简化了一下程序,以前的代码太冗长了,可读性太差:
CODE:
function question_21_new
clear;clc
%2017-1-13
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;
[ht,fval,exitflag,output] =fsolve(@(ht) quadl(@fun1,hs,ht)-Re,30);
if exitflag>0
    angle=ns*(a+hs)*cos(sita)*quadl(@fun2,hs,ht);
    fprintf('\n\n\t\tht = %4.5f\n\n\n\t\tAngle = %4.5f\n\n\n',ht,angle);
end
    function y=fun1(h)
        n=(h>=hs & h<=hs+1).*(1+(Ns+G*(h-hs))*1e-6)  +  (h>hs+1&h<=9).*(1+(N1*exp(-C1*(h-hs-1)))*1e-6)  +  (h>9&h<60).*(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
    function y=fun2(h)
        n=(h>=hs & h<=hs+1).*(1+(Ns+G*(h-hs))*1e-6)  +  (h>hs+1&h<=9).*(1+(N1*exp(-C1*(h-hs-1)))*1e-6)  +  (h>9&h<60).*(1+(N9*exp(-C9*(h-9)))*1e-6);
        y=1./((a+h).*(sqrt(n.^2.*(a+h).^2-ns.^2*(a+hs).^2*cos(sita).^2)));
    end
end

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

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

pdl9527

专家顾问 (小有名气)

【答案】应助回帖

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

ht位于第2区间:

        ht=1.64484

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

不好意思,还真有个地方错了,其它地方不要改,新建一个m文件,把最开始的代码复制进去,并且把第27行改为:
CODE:
    if exitflag(i)>0 && (ht(i)>=lb(i)&&ht(i)<=ub(i))

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

7楼2017-01-13 16:12:36
已阅   回复此楼   关注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的回帖
普通回帖

艳雪加油

铜虫 (初入文坛)

送红花一朵
引用回帖:
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的回帖

pdl9527

专家顾问 (小有名气)

【答案】应助回帖

引用回帖:
4楼: Originally posted by 艳雪加油 at 2017-01-13 11:36:31
就是ht运行的在三个区间都有,怎么确定在哪个区间呢?
...

程序没问题,你别乱改…

发自小木虫IOS客户端
5楼2017-01-13 16:05:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

pdl9527

专家顾问 (小有名气)

【答案】应助回帖

引用回帖:
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文件,这样就可以调 ...

你百度一下嵌套函数的用法…

发自小木虫IOS客户端
6楼2017-01-13 16:05:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

艳雪加油

铜虫 (初入文坛)

送红花一朵
引用回帖:
7楼: Originally posted by pdl9527 at 2017-01-13 16:12:36
不好意思,还真有个地方错了,其它地方不要改,新建一个m文件,把最开始的代码复制进去,并且把第27行改为:

    if exitflag(i)>0 && (ht(i)>=lb(i)&&ht(i)<=ub(i))
...

程序编的太好了,非常感谢!!只不过还有个小小的问题,要求最后是求角的。就是求出的ht要用到求角的公式里(一个公式),大神帮人帮到底,能不能把最后求角公式的matlab程序加到原先的程序里,能运行出来真是太谢谢啦!!
求大神帮我用matlab编个小程序。-2



发自小木虫Android客户端
8楼2017-01-13 17:03:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

艳雪加油

铜虫 (初入文坛)

送红花一朵
引用回帖:
9楼: Originally posted by pdl9527 at 2017-01-13 18:17:05
简化了一下程序,以前的代码太冗长了,可读性太差:

function question_21_new
clear;clc
%2017-1-13
a=6370;
Ns=320;
G=-39;
C1=0.1258;
C9=0.1404;
N1=281;
N9=104.6713;
hs=0.15;
Re=50;
sita=0 ...

实在太开心啦!运行结果没有警告更没有error!谢谢大神的程序,谢谢!!

发自小木虫Android客户端
10楼2017-01-13 20:09:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 艳雪加油 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 投票:  有多少人是今天查系统知道结果的? +15 爱看书的可乐 2026-08-26 17/850 2026-08-27 01:49 by xxniao123
[硕博家园] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +3 LIbGuocjEEYw 2026-08-26 3/150 2026-08-27 00:09 by Ie9AyIAvGbvs
[基金申请] 基金不中,共勉 +5 eulota 2026-08-26 5/250 2026-08-26 23:33 by young90
[基金申请] 看板上这么多中的,有点像50人群里49个人都是骗子的那种感觉…… +3 a089 2026-08-26 3/150 2026-08-26 23:21 by young90
[基金申请] 国自然面上复盘~欢迎讨论 +4 晴天加油 2026-08-26 5/250 2026-08-26 21:27 by 木风9012
[基金申请] 系统查不到 +10 董八千 2026-08-26 10/500 2026-08-26 16:30 by Equinoxhua
[基金申请] 出来了 +9 trojank 2026-08-26 9/450 2026-08-26 14:25 by 宝贝虫子
[基金申请] 哪位高人中了,把查询到的截图贴出来让我看看,让我长长见识 +4 yuleib84 2026-08-26 5/250 2026-08-26 13:40 by yuleib84
[基金申请] 科研孤儿太难了 +21 我4大白菜 2026-08-20 22/1100 2026-08-26 11:29 by nlgza
[基金申请] 国合可查了 +3 paperzjh 2026-08-26 3/150 2026-08-26 10:41 by LemmonTr
[基金申请] 今天务委会开完了,明天出结果吗 +19 angus9576 2026-08-25 23/1150 2026-08-26 10:03 by zp519
[基金申请] 在坚冰还盖着北海的时候,我看到了怒放的梅花。 (金币+10) +6 ziyangfang 2026-08-25 9/450 2026-08-25 20:26 by huagongfeihu
[基金申请] 某些机构,以效率低为荣,以效率低作为存在感 +9 yuleib84 2026-08-25 10/500 2026-08-25 17:14 by alexon
[基金申请] 今日不放榜?网传国自然预计 8 月 27 日可查结果 +17 医学老男孩 2026-08-20 22/1100 2026-08-25 15:36 by 医学老男孩
[基金申请] 人气不行了 +11 fansofjerry 2026-08-21 11/550 2026-08-25 11:04 by 孤独的英雄6
[教师之家] 导师吐槽:我怎么摊上了这么个极品研究生! +3 苏东坡二世 2026-08-23 3/150 2026-08-25 10:35 by shisan1313
[基金申请] 建议基金发布提前给出明确的时间点 +13 kulium 2026-08-21 16/800 2026-08-24 16:27 by superceng
[基金申请] 让我中一个面上吧! +13 大萍1987 2026-08-20 16/800 2026-08-24 10:23 by 太傻了
[基金申请] 时间戳又变了 +13 wuchongjun 2026-08-20 19/950 2026-08-21 17:21 by 紫杉醇
[基金申请] 应该是下周三26日公布了吧? +4 哈哈蛤? 2026-08-21 4/200 2026-08-21 10:58 by Vivilian
信息提示
请填处理意见