一个Matlab的程序求圆周率
来源:百度知道 编辑:UC知道 时间:2024/05/27 09:19:26
别人写了一个割圆术求圆周率的matlab程序但是实施不了总是出现问题
function y=calpi(n)
syms a;
for i=1:n
a=sqrt(2-sqrt(4-a^2));
end
a=subs(a,'a','1')
y=3*2^n*vpa(a,n+5)
另外谁能解释一下最后两句?
我命名为calpi.m在命令提示符下打calpi(10)但是打不开,怎么改都不成,这个程序是上海交大的人写的,在网上找的,但是运行不了
function y=calpi(n)
syms a;
for i=1:n
a=sqrt(2-sqrt(4-a^2));
end
a=subs(a,'a','1')
y=3*2^n*vpa(a,n+5)
另外谁能解释一下最后两句?
我命名为calpi.m在命令提示符下打calpi(10)但是打不开,怎么改都不成,这个程序是上海交大的人写的,在网上找的,但是运行不了
程序没有任何问题
一些小问题吧:
(1)不要显示的在语句后面加上分号
(2)不知道你有没有保存在正确的路径上
(3)在命令符下先clear一下
我修改了一点点,你看一下:
function calpi(n)
syms a;
for i=1:n
a=sqrt(2-sqrt(4-a^2));
end
a=subs(a,'a','1');
y=3*2^n*vpa(a,n+5);
Pi=y
保存在work文件夹下,calpi.m
>>clear
>>calpi(100)
>>Pi =
3.1415926535897932384626433832795
你自己再弄一下,应该可以的!
我的matlab删掉了
自己help subs或者help vpa试试看吧
这个可以运行
以下是运行结果
>> calpi(1)
a =
(2-(4-(1)^2)^(1/2))^(1/2)
y =
3.105834
ans =
3.105834
>> calpi(10)
a =
(2-(2+(2+(2+(2+(2+(2+(2+(2+(2+(4-(1)^2)^(1/2))^(1/2))^(1/2))^(1/2))^(1/2))^(1/2))^(1/2))^(1/2))^(1/2))^(1/2))^(1/2)
y =
3.14159251166837760
ans =
3.14159251166837760
>>