導航:首頁 > 計算方法 > 計算方法及matlab實現

計算方法及matlab實現

發布時間:2022-12-23 23:32:06

A. 計算方法中的拉格朗日插值的Matlab實踐

Matlab中沒有現成的拉格朗日插值函數,必須編寫一個M文件實現拉格朗日插值。
設n個節點數據以數組x0, y0輸入(注意Matlab的數組下標從1開始),m 個插值點以數
組x輸入,輸出數組y 為m 個插值。

編寫一個名為lagrange.m的M文件:
function y=lagrange(x0,y0,x);
n=length(x0);m=length(x);
for i=1:m
z=x(i);
s=0.0;
for k=1:n
p=1.0;
for j=1:n
if j~=k
p=p*(z-x0(j))/(x0(k)-x0(j));
end
end
s=p*y0(k)+s;
end
y(i)=s;
end

B. 怎樣用matlab進行公式計算

例如,求x=1,3,6,4,9,7時,函數y=2*x^3+4*x^2+6*x+7得函數值。matlab命令如下:
syms x y
x=[1,3,6,4,9,7];
y=2.*x.^3+4.*x.^2+6.*x+7
次命令可以輸出x值對應的函數值,這里主要用到.*和.^,這兩種運算表示向量或者矩陣中對應元素之間相乘或者平方

C. 請問如下公式的計算如何用matlab實現

題主的提供公式的計算,可以用matlab的for循環語句來實現。

Xit=[。。。]; %n個數據

Xjt=[。。。]; %m個數據

for i=1:n

for j=1:m

syms k

Xi=Xit(i),Xj=Xjt(j)

Div=symsum(abs(Xi^k/Xi-Xj^k/Xj),1,19)

end

end

註:題主你的公式的下標似乎一樣,請確認。

D. matlab中批量循環計算的實現方法

在matlab中執行循環迭代的方法:
a是一個由nk個數組成的數組
對應的y也應該是由nk個數組成的數組
a=某數組;
b=某常數;
d=某常數;
for k=1:1:nk
c=1;
n=0;
errf=1;
while errf>1e-8&n<100%計算結果精度要求1e-8,如果迭代超過100次還不收斂,退出循環。
y(k)=a(k)*b*c;
c1=y*d;
errf=(c1-c)/c1;
c=c1;
n=n+1;
end

E. matlab實現歐拉法和RK-4方法的數值計算

程序已經寫了,不過步長你得自己調,當步長較小時,計算時間會很長
另外,tend是時間的終值,你可以設小一些。因為解析解為10*cos(x),我設成pi,就是計算半個周期。

x''(t)=-x(t)
引入y1=x,y2=x',則
y1'=y2
y2'=-x=-y1

初始條件為:
y1(0)=10;
y2(0)=0;

將下面兩行百分號之間的內容,保存成DiffEulerRk4.m
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function MaxDiffX=DiffEulerRk4(dt,PlotFlag)
%dt是步長
%PlotFlag是否作圖
if nargin<1
dt=0.01;
end
if nargin<2
PlotFlag=0;
end

f=inline('[y(2);-y(1)]','t','y'); %微分方程的右邊項
t0=0; %初始時刻
tend=pi; %計算的點數
tt=t0:dt:tend; %一系列離散的點
N=length(tt); %點數
y0=[10;0];

%%(1)歐拉法
EulerY=y0;
for i=2:N
EulerY(:,i)=EulerY(:,i-1)+dt*f(tt(i-1),EulerY(:,i-1));
end
EulerX=EulerY(1,:); %取x

%%(2)龍格庫塔法
RkY=y0;
for i=2:N
k1=f(tt(i-1), RkY(:,i-1));
k2=f(tt(i-1)+dt/2, RkY(:,i-1)+k1*dt/2);
k3=f(tt(i-1)+dt/2, RkY(:,i-1)+k2*dt/2);
k4=f(tt(i-1)+dt, RkY(:,i-1)+k3*dt);
RkY(:,i)=RkY(:,i-1)+(k1+2*k2+2*k3+k4)*dt/6;
end
RkX=RkY(1,:); %取x

%精確解
syms t
analytic=dsolve('D2x=-x','x(0)=10','Dx(0)=0','t');
rightdata=subs(analytic,t,tt);

if PlotFlag
plot(tt,EulerX,'b-',tt,RkX,'r--',tt,rightdata,'g-.')
legend('Euler','Runge-Kutta','analytic')
end

MaxDiffX=[max(abs(RkX-rightdata)),max(abs(EulerX-rightdata))];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

所有題,都得你自己調步長。
輸入:
DiffEulerRk4(0.01,1) %步長取0.01的計算結果,參數為1代表作圖,自己得修改步長

%%下面是變化
Error=[];
Dt=[5e-4,1e-3,2e-3,5e-3,0.01,0.05,0.1];
for dt=Dt %幾種步長,自行修改
dt %查看dt,步長小,計算量大
Error_1=DiffEulerRk4(dt); %不作圖
Error=[Error;Error_1]; %保存歐拉法誤差
end
semilogx(Dt,Error)
legend('Euler','RK4')
xlabel('步長')
ylabel('誤差')
title('與理論值誤差')

F. 如何用Matlab進行多項式除法運算

1、滑鼠右擊打開桌面上的matlab程序,如下圖所示,matlab運行需要一定的時間,不要著急。

G. 如何用matlab程序進行運算

首先你要明白以下幾點:
1、.m文件是一個程序計算過程,還是一個function。
2、裡面有哪些變數與你的數據有關。
知道上邊的兩個,就按部就班的修改一下,就能用了。
如果是個計算過程,直接運行就能用,在這之前,要確保變數名都一致,如果不一致,可以修改一下。
如果是個函數,要調用。調用參數也要正確。
希望對你有幫助~~

閱讀全文

與計算方法及matlab實現相關的資料

熱點內容
水準計算方法定義 瀏覽:203
如何排肺毒最有效的方法 瀏覽:480
跨欄跑過欄技術實踐教學方法 瀏覽:473
怎麼殺老甲魚最有效方法 瀏覽:672
怎樣快速通便拉得又多土方法 瀏覽:84
藍凈靈的使用方法 瀏覽:335
廣東pvc木飾面安裝方法 瀏覽:183
公司管理方法叫什麼 瀏覽:14
鑒別紅薯最好的方法 瀏覽:877
4g手機電話轉移在哪裡設置方法 瀏覽:428
禁食水的正確使用方法 瀏覽:436
水泥膨脹劑的使用方法 瀏覽:465
怎麼教股票開盤方法 瀏覽:674
582減198簡便方法 瀏覽:432
問題要有解決方法的名言 瀏覽:545
剩米飯和豆皮怎麼做好吃簡單方法 瀏覽:179
口才訓練16種方法 瀏覽:653
帶圓弧角正方形的周長尺寸計算方法 瀏覽:286
環境空氣中乙酸乙酯的檢測方法 瀏覽:105
兒童跳高鍛煉方法視頻 瀏覽:741