❶ matlab怎麼用for語句求圓周率
matlab怎麼用for語句求圓周率? 由萊布尼茲級數可知,π/4=1-1/3+1/5-1/7+······
所以,我們通過for和while循環語句來求解。求解方法如下:
1、首先寫出用∑求和符號表示的表達式,即
∑(-1)^j*(1/n)
2、用for循環語句,寫出求解其和的累加值,即
S=0;
for i=1:100 %這里100是可變的值
S=S+(-1)^j*(1/n)
end
3、計算π值,即
π=4S
4、可執行的代碼如下
clear all,clc
%萊布尼茲級數
S=0;
for n=1:10000
S=S+(-1)^(n-1)*(1/(2*n-1));
end
PI_value=4*S
%梅欽公式
S=0;
for n=1:100
S=S+(-1)^(n-1)*(4*(1/5)^(2*n-1)/(2*n-1)-(1/239)^(2*n-1)/(2*n-1));
end
PI_value=4*S
5、擴展知識
從上述運行結果來看,用萊布尼茲級數和梅欽公式計算π值,梅欽公式比萊布尼茲級數收斂比較快,但兩者的計算精確位數為15)。
❷ 用matlab寫程序求圓周率(精度e=10^-7),求大神幫助,萬分感謝
圓周率的計算方法很多,我提供一個:
n=1;
absol=0.1;
while
absol>1e-7
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);
absol=abs(double(pi-y));
disp('絕對誤差大於1e-7,再計算')
n=n+1;
end
disp('絕對誤差小於1e-7,不再計算')
s=sprintf('計算次數n=%d',n);
disp(s)
Pi=y
❸ Matlab蒙特卡洛法計算圓周率怎麼寫最快
function piva = PiMonteCarlo(n)
% PiMonteCarlo(n),用隨機投點法模擬圓周率pi,作出模擬圖. n為投點次數,可以是非負整數標量
% 或向量.
% piva = PiMonteCarlo(n),用隨機投點法模擬圓周率pi,返回模擬值piva. 若n為標量(向
% 量),則piva也為標量(向量).
x = 0;y = 0;d = 0;
m = length(n); % 求變數n的長度
pivalue = zeros(m,1); % 為變數pivalue賦初值
% 通過循環用投點法模擬圓周率pi
for i = 1:m
x = 2*rand(n(i),1)-1; % 隨機投點的橫坐標
y = 2*rand(n(i),1)-1; % 隨機投點的縱坐標
d = x.^2+y.^2;
pivalue(i) = 4*sum(d <= 1)/n(i); % 圓周率的模擬值
end
if nargout == 0
% 不輸出圓周率的模擬值,返回模擬圖
if m > 1
% 如果n為向量,則返回圓周率的模擬值與投點個數的散點圖
figure; % 新建一個圖形窗口
plot(n,pivalue,'k.'); % 繪制散點圖
h = refline(0,pi); % 添加參考線
set(h,'linewidth',2,'color','k'); % 設置參考線屬性
text(1.05*n(end),pi,'\pi','fontsize',15); % 添加文本信息
xlabel('投點個數'); ylabel('\pi的模擬值'); % 添加坐標軸標簽
else
% 如果n為標量,則返回投點法模擬圓周率的示意圖
figure; % 新建一個圖形窗口
plot(x,y,'k.'); % 繪制散點圖
hold on;
% 繪制邊長為2的正方形
h = rectangle('Position',[-1 -1 2 2],'LineWidth',2);
t = linspace(0,2*pi,100); % 定義一個角度向量
plot(cos(t),sin(t),'k','linewidth',2); % 繪制單位圓
xlabel('X'); ylabel('Y'); % 添加坐標軸標簽
title(['Pi的模擬值: ' num2str(pivalue)]); % 添加標題
axis([-1.1 1.1 -1.1 1.1]); axis equal; % 設置坐標軸屬性
end
else
piva = pivalue; % 輸出圓周率的模擬值
end
=============================================
p=PiMonteCarlo([1000:5000:50000])'
p =
Columns 1 through 7
3.2200 3.1093 3.1280 3.1328 3.1286 3.1500 3.1428
Columns 8 through 10
3.1427 3.1452 3.1472
❹ 怎樣計算圓周率的方法,包括matlab方法
在Matlab軟體環境下可運行的程序。
1、用積分函數int()求解。在命令窗口中輸入
>>fun=4./(1+x.*x);
>>p=int(fun,0,1)
運行結果
p =
pi
2、復化梯形法計算圓周率π。在命令窗口中輸入
>> PI_Calculation
運行結果
復化梯形法解
n=1,p=3.100000,r=0.100000
n=2,p=3.131176,r=0.031176
n=3,p=3.138988,r=0.007812
n=4,p=3.140942,r=0.001953
n=5,p=3.141430,r=0.000488
n=6,p=3.141552,r=0.000122
n=7,p=3.141582,r=0.000031
n=8,p=3.141590,r=0.000008
❺ 一個Matlab的程序求圓周率
#include <cstdlib.h>
#include <iostream.h>
#include <fstream.h>
#define N 30015
using namespace std;
void mult (int *a,int b,int *s)
{
for (int i=N,c=0;i>=0;i--)
{
int y=(*(a+i))*b+c;
c=y/10;
*(s+i)=y%10;
}
}
void divi (int *a,int b,int *s)
{
for (int i=0,c=0;i<=N;i++)
{
int y=(*(a+i))+c*10;
c=y%b;
*(s+i)=y/b;
}
}
void incr(int *a,int *b,int *s)
{
for (int i=N,c=0;i>=0;i--)
{
int y=(*(a+i))+(*(b+i))+c;
c=y/10;
*(s+i)=y%10;
}
}
bool eqs(int *a,int *b)
{
int i=0;
while (((*(a+i))==(*(b+i)))&&(i<=N)) i++;
return i>N;
}
int main(int argc, char *argv[])
{
int lpi[N+1],lls[N+1],lsl[N+1],lp[N+1];
int *pi=lpi,*ls=lls,*sl=lsl,*p=lp;
for (int i=0;i<=N;i++)*(pi+i)=*(ls+i)=*(sl+i)=*(p+i)=0;
memset(pi,0,sizeof(pi));
memset(ls,0,sizeof(ls));
memset(sl,0,sizeof(sl));
memset(p,0,sizeof(p));
*pi=*ls=*sl=1;
for (int i=1;true;i++)
{
mult(ls,i,sl);
divi(sl,2*i+1,ls);
incr(pi,ls,p);
if (eqs(pi,p)) break;
int *t;
t=p;
p=pi;
pi=t;
if (i%50==0) cout << i << " ";
}
cout << endl;
mult(p,2,pi);
ofstream fout("pi.txt");
fout << *pi << ".";
for (int i=1;i<=N;i++)
{
fout << *(pi+i);
if (i%10==0) fout << " ";
if (i%80==0) fout << endl;
}
return EXIT_SUCCESS;
}
註:①運行時會有數據彈出,那是無關緊要的,只為了加快了感覺速度;
②最後的txt文本里有30015位,其中最後15位可能是錯的。
③程序中的<,>是大寫的請改成小寫。
❻ 怎麼用迭代法計算π
利用公式π/4≈1-1/3+5/1-7/1+……,直到最後一項的絕對值小於10的-5次方
#include<iostream.h>
void main(void)
{
int i=1,k;
double y=1;
do
{switch(i%2)
{
case 0:y=y+(1.0/(1+2*i));
case 1:y=y-(1.0/(1+2*i));
}
i++;
}while(2*i<=99999);
cout<<"pi="<<4*y<<' ';
}
圓周率用希臘字母 π(讀作pài)表示,是一個常數(約等於3.141592654),它是一個無理數,即無限不循環小數。在日常生活中,通常都用3.14代表圓周率去進行近似計算。而用十位小數3.141592654便足以應付一般計算。即使是工程師或物理學家要進行較精密的計算,充其量也只需取值至小數點後幾百個位。
1965年,英國數學家約翰·沃利斯(John Wallis)出版了一本數學專著,其中他推導出一個公式,發現圓周率等於無窮個分數相乘的積。2015年,羅切斯特大學的科學家們在氫原子能級的量子力學計算中發現了圓周率相同的公式。
❼ matlab迭代計算(萊布尼茲公式計算pi)
clear all
clc
flag=-1;
counter=1;
fore=100;
now=0;
while abs(fore)>10^-6
flag=flag*-1;
fore=1/counter*flag;
now=now+fore;
counter=counter+2;
end
format long;
mypi=now*4
❽ matlab用公式π/4≈1-1/3+1/5-1/7+…求圓周率π的近似值,直到最後一項絕對值小於10-6(編寫腳本文件
如何用公式π/4≈1-1/3+1/5-1/7+…求圓周率π的近似值,直到最後一項絕對值小於10^-6。用matlab的for循環語句可以實現。
1、首先將1-1/3+1/5-1/7+…,用求和符號來簡化,即Σ(-1)^(n-1)*1/(2*n-1)
2、令s=0,這樣便於累加,即s=s+(-1)^(n-1)*1/(2*n-1)
3、當s(n)-s(n-1)<10^-6,則認為達到預期目的。此時的s(n)就是我們要求的值(π/4)
4、實現上述功能的代碼。
s=0;
n=1;
while 1
s1=s;
s=s+(-1)^(n-1)*1/(2*n-1);
if abs(s-s1)<1e-6
n
disp('逼近值'),s
disp('π/4'),pi/4
return
end
n=n+1;
end
5、當絕對值小於10^-3的結果(因小於10^-6的運行時間較長)
❾ 計算圓周率matlab中sqrt(1-x.*x)是什麼意思
就是計算y的值,如果y也小於1,那麼就在圓裡面,不然就在圓外面,然後通過概率計算圓周率
❿ 用matlab求π的近似值 π/4=1-1/3+1/5-1/7……直到某一項的絕對值小於10^-6
如下:
y=0;
for n=1:1000000%%%
xx=(-1)^(n-1)/(2*n-1);
if abs(xx)>10^(-6)
y=y+xx;
else
break
end
end
fprintf('π的近似值為%.6f ,共需迭代%d步 ',y*4,n)。
介紹
MATLAB和Mathematica、Maple並稱為三大數學軟體。它在數學類科技應用軟體中在數值計算方面首屈一指。行矩陣運算、繪制函數和數據、實現演算法、創建用戶界面、連接其他編程語言的程序等。
MATLAB的基本數據單位是矩陣,它的指令表達式與數學、工程中常用的形式十分相似,故用MATLAB來解算問題要比用C,FORTRAN等語言完成相同的事情簡捷得多。