24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2004  |  回复: 10
本帖产生 1 个 博学EPI ,点击这里进行查看

zhaoyanqiao

铁虫 (正式写手)

[求助] 我想请问一个matlab编程的问题,sin(v/2)=3*v/14/pi

我想求解“sin(v/2)=3*v/14/pi;”,不知道matlab程序如何编写,恳请高人解答,并麻烦附上程序代码,谢谢了

» 猜你喜欢

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

向大家学习
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖置顶 ( 共有1个 )

luomia

木虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
zhaoyanqiao: 金币+10, 博学EPI+1, ★★★★★最佳答案, 非常感谢,我怎么就没想到迭代呢 2012-07-07 13:43:11
引用回帖:
7楼: Originally posted by zhaoyanqiao at 2012-07-07 09:40:24
v=0:0.1:10;
y1=sin(v/2);
y2=3*v/14/pi;
plot(v,y1)
hold on
plot(v,y2)
grid on

可以看到,在v5.5左右时有一个交点,也就是我所需要的值...

迭代法程序如下:
function v=diedai(tol,a,n)
v=a;
f=0;
for i=1:n
    f=14*pi*sin(v/2)/3;
    if abs(f-v)<=tol
        break;
    else
        v=f;
    end
end
end
不过迭代次数很惊人
diedai(0.0001,5,20000)

ans =

   -0.3535

>> diedai(0.0001,5,200000)

ans =

  -13.6383

>> diedai(0.0001,5,2000000)

ans =

   -5.5123

可以看到一共应有3个解,0,+/-5.5123
一次次萍水相逢
9楼2012-07-07 11:32:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

不是不想

新虫 (小有名气)

【答案】应助回帖

s=solve('sin(v/2)-3*v/14/pi=0 ')      试一下
2楼2012-07-06 14:13:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

luomia

木虫 (著名写手)

【答案】应助回帖

>> s=solve('sin(v/2)=3*v/14/pi');
>> s

s =

0
一次次萍水相逢
3楼2012-07-06 15:02:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhaoyanqiao

铁虫 (正式写手)

引用回帖:
2楼: Originally posted by 不是不想 at 2012-07-06 14:13:07
s=solve('sin(v/2)-3*v/14/pi=0 ')      试一下

>> s=solve('sin(v/2)-3*v/14/pi=0 ')

s =

14/3*sin(0)*pi

这个不是我想要的结果,谢谢回复
向大家学习
4楼2012-07-06 21:19:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhaoyanqiao

铁虫 (正式写手)

引用回帖:
3楼: Originally posted by luomia at 2012-07-06 15:02:39
>> s=solve('sin(v/2)=3*v/14/pi');
>> s

s =

0

对不起,程序运行下来是这样的:
>> s=solve('sin(v/2)=3*v/14/pi');
>> s

s =

14/3*sin(0)*pi

>>
仍然不是我想要的结果
我需要的是除了0之外的那个值。
向大家学习
5楼2012-07-06 21:20:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

luomia

木虫 (著名写手)

【答案】应助回帖

引用回帖:
5楼: Originally posted by zhaoyanqiao at 2012-07-06 21:20:36
对不起,程序运行下来是这样的:
>> s=solve('sin(v/2)=3*v/14/pi');
>> s

s =

14/3*sin(0)*pi

>>
仍然不是我想要的结果
我需要的是除了0之外的那个值。...

大哥,你这个问题只有0解。sin(v/2)=3*v/14/pi等价于v=14*sin(v/2)/(3*pi)。然后你可以到matlab里输入
>> v=0:50;
>> f=14*sin(v/2)/(3*pi);
>> plot(v,f)
>> grid on
>> axis equal
你就会看到不可能存在其它解。
一次次萍水相逢
6楼2012-07-07 07:52:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhaoyanqiao

铁虫 (正式写手)

引用回帖:
6楼: Originally posted by luomia at 2012-07-07 07:52:46
大哥,你这个问题只有0解。sin(v/2)=3*v/14/pi等价于v=14*sin(v/2)/(3*pi)。然后你可以到matlab里输入
>> v=0:50;
>> f=14*sin(v/2)/(3*pi);
>> plot(v,f)
>> grid on
>> axis ...

v=0:0.1:10;
y1=sin(v/2);
y2=3*v/14/pi;
plot(v,y1)
hold on
plot(v,y2)
grid on

可以看到,在v5.5左右时有一个交点,也就是我所需要的值
向大家学习
7楼2012-07-07 09:40:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

luomia

木虫 (著名写手)

【答案】应助回帖

引用回帖:
7楼: Originally posted by zhaoyanqiao at 2012-07-07 09:40:24
v=0:0.1:10;
y1=sin(v/2);
y2=3*v/14/pi;
plot(v,y1)
hold on
plot(v,y2)
grid on

可以看到,在v5.5左右时有一个交点,也就是我所需要的值...

你这个问题由于涉及到PI,需要指定计算精度。用常规迭代法很难收敛,以下程序希望能有所帮助。
>> for v=5:0.00000001:6;
f=14*pi*sin(v/2)/3;
if abs(f-v)<=0.000001
break;
end
end
>> vpa(v)

ans =

5.5122612

>> vpa(f)

ans =

5.5122622

>>

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

一次次萍水相逢
8楼2012-07-07 11:09:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhaoyanqiao

铁虫 (正式写手)

送鲜花一朵
引用回帖:
8楼: Originally posted by luomia at 2012-07-07 11:09:53
你这个问题由于涉及到PI,需要指定计算精度。用常规迭代法很难收敛,以下程序希望能有所帮助。
>> for v=5:0.00000001:6;
f=14*pi*sin(v/2)/3;
if abs(f-v)<=0.000001
break;
end
end
>> vp ...

非常感谢,这种编程方法我学习了
向大家学习
10楼2012-07-07 13:45:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zhaoyanqiao 的主题更新
信息提示
请填处理意见