24小时热门版块排行榜    

查看: 2122  |  回复: 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的回帖
相关版块跳转 我要订阅楼主 艳雪加油 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 085600材料与化工调剂 +5 A-哆啦Z梦 2026-03-23 10/500 2026-03-23 19:49 by A-哆啦Z梦
[考研] 279分求调剂 一志愿211 +16 chaojifeixia 2026-03-19 18/900 2026-03-23 19:44 by stone_128
[考研] 070300化学求调剂 +7 苑豆豆 2026-03-20 7/350 2026-03-23 18:38 by macy2011
[考研] 276求调剂 +3 YNRYG 2026-03-21 4/200 2026-03-23 08:31 by 醉在风里
[考研] 石河子大学(211、双一流)硕博研究生长期招生公告 +3 李子目 2026-03-22 3/150 2026-03-22 21:01 by 怎么释怀
[考研] 一志愿西安交通大学材料工程专业 282分求调剂 +11 枫桥ZL 2026-03-18 13/650 2026-03-22 20:26 by edmund7
[考研] 一志愿华中农业071010,总分320求调剂 +5 困困困困坤坤 2026-03-20 6/300 2026-03-22 17:41 by hxsm
[考研] 环境学硕288求调剂 +6 皮皮皮123456 2026-03-22 6/300 2026-03-22 16:52 by i_cooler
[考研] 354求调剂 +7 Tyoumou 2026-03-18 10/500 2026-03-22 11:11 by 人来盛
[考博] 招收博士1-2人 +3 QGZDSYS 2026-03-18 4/200 2026-03-22 10:25 by QGZDSYS
[考研] 0856材料专硕353求调剂 +4 NIFFFfff 2026-03-20 4/200 2026-03-22 09:49 by 2026paper
[考研] 085600材料与化工306 +4 z1z2z3879 2026-03-21 4/200 2026-03-21 23:44 by ms629
[考研] 280求调剂 +11 咕噜晓晓 2026-03-18 12/600 2026-03-21 22:40 by ACS Nano——
[考研] 297求调剂 +11 戏精丹丹丹 2026-03-17 12/600 2026-03-21 17:47 by ColorlessPI
[考研] 266求调剂 +3 哇呼哼呼哼 2026-03-20 3/150 2026-03-21 16:46 by barlinike
[考研] 299求调剂 +4 某某某某位 2026-03-21 4/200 2026-03-21 16:30 by barlinike
[考研] 330求调剂0854 +3 assdll 2026-03-21 3/150 2026-03-21 13:01 by 搏击518
[考研] 332求调剂 +3 凤凰院丁真 2026-03-20 3/150 2026-03-21 10:27 by luoyongfeng
[考研] 求调剂 +6 Mqqqqqq 2026-03-19 6/300 2026-03-21 08:04 by JourneyLucky
[考研] 二本跨考郑大材料306英一数二 +3 z1z2z3879 2026-03-17 3/150 2026-03-21 02:29 by JourneyLucky
信息提示
请填处理意见