⑴ 用Matlab進行數值分析
數據擬合,插值這塊就夠用了。
⑵ matlab怎麼做數值分析
用matlab軟體做數值分析相對其他數學要方便的多,如求解非線性方程的數值解,微分方程的數值解,數學模型的預測等等多比較實用。
⑶ 數值分析 Doolittle分解 用matlab做
根者稿逗據Doolittle分解格式, 可以用matlab分解A矩陣為一個下三角矩陣L與首賣上三角矩陣U的乘積。
其實現過程為:
第一步:初始化
1、初始化上三角陣的第一行
2、初始化下三敬薯角陣的第一列
第二步:前向分解計算
⑷ MATLAB數值分析的介紹
《MATLAB數值分析》以最新版MATLAB為平台,介紹了數值分析方法與圖形可視化。全書共分9章,第1、2章講解了MATLAB基礎知識,第3~9章分別講解了誤差、插值法與曲線擬合、線性方程組的數值解法、非線性方程求解喚物森、數值微分與數值積分、矩陣特徵值計算和常微分方程的數值解。MATLAB以其獨特的魅力,改變了傳統數值分析的編程觀念,從而成為實現上述目標的有利螞握工具。 《MATLAB數值分析》可作為理工科各專業本科生、研究生以及應用MATLAB的相關科技人員學習和畝MATLAB數值分析、建模、模擬的教材或參考書。
⑸ 如何用matlab求方程的數值解
fun=@(x,y)y.*log10(y)-x創建關於x,y的匿名函數
log10(x)由於Matlab中自然對數的符號是log(與我們數學上的不同),以10為底的對數符號是log10,同理有卜搜log2,但是沒有log3等哦
vpa將得到的符號解轉化為指定精度的小數,比如vpa('sqrt(2)',10)將sqrt(2)表示10位精度的小數
fzero是Matlab求解一元函數零點的內置函數
fsolve是Matlab中求解方程組解(可以求解復數)的內置函數,功能強於fzero
fval是返回fun(x)的值,也就是說fzero和茄敗fsolve返回方程的解x,那麼此時的fun(x)就是fval
這個方法比較多 可以數值也可以解析求解
1.解析求解
>> solve('顫弊顫y*log10(y)=3','y')
ans =
3*log(10)/lambertw(3*log(10))
>> vpa(ans)
ans =
4.
2.數值解法這個可以使用fsolve和fzero,前者的功能更加強大,但是對於這個問題fzero就可以了
>>x=3;
>>fun=@(y)y*log10(y)-x;
%使用fsolve
>> [x,fval]=fsolve(fun,rand)
Optimization terminated: first-order optimality is less than options.TolFun.
x =
4.5555
fval =
3.9620e-008
%使用fzero
>> [x,fval]=fzero(fun,5)
x =
4.5555
fval =
-8.8818e-016
⑹ 用matlab求解數值計算問題,matlab中已有各種數值計
用matlab求解數值計算問題方法:
1、使用MATLAB中提供的ode45,ode23等函數,將微分方程直接輸入函數,即可得到所求解的解析解。
2、使用MATLAB中提供的函擾譽數linsolve,solve,inv等,將方程組參數輸入函數,即可得到所求解的解析解。
3、使用緩明段MATLAB中提供的fsolve函數槐磨,將非線性方程參數輸入函數,即可得到所求解的解析解。
4、使用MATLAB中提供的fminsearch,fmincon等函數,將最優化問題參數輸入函數,即可得到所求解的解析解。
⑺ 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('與理論值誤差')
⑻ 我在學數值分析這門課,其中好多地方用到matlab,想請問關於數值分析的matlab應該怎樣學
下面是我寫的,放心用去啦~~~
%超鬆弛迭代(SOR方法)
function [x k flag]=SOR(A, b, eps ,w,maxl)
%A為方程組的系數矩陣
%b為方程組的右端向量
%eps為精度要求
%maxl為最大迭代次數,預設值為100
%w為超鬆弛因子,默認值為1
%x為方程組的解
%k為迭代次數
%flag為指標變數
%賦初值:
if nargin<5 maxl=100;end
if nargin<4 w=1;end
if nargin<3 eps=1e-5;end
n=length(b); k=0;
x=zeros(n,1); y=zeros(n,1); flag='OK';
%開始迭代:
while true
y=x; %y,z均為輔助變數
for i=1:n
z=b(i);
for j=1:n
if j~=i
z=z-A(i,j)*x(j);
end
end
if abs(A(i,i))<1e-10|k==maxl
flag='failure';return;
end
z=z/A(i,i);x(i)=(1-w)*x(i)+w*z;
end
if norm(y-x,inf)<eps
break;
end
k=k+1;
end
%Jacobi迭代法解線性方程組
function [x k flag]=Jacobi(A, b, eps ,maxl)
%A為方程組的系數矩陣
%b為方程組的右端向量
%eps為精度要求
%maxl為最大迭代次數,預設值為100
%x為方程組的解
%k為迭代次數
%flag為指標變數
%賦初值:
if nargin<4 maxl=100;end
if nargin<3 eps=1e-5;end
n=length(b); k=0;
x=zeros(n,1); y=zeros(n,1); flag='OK';
%開始迭代:
while 1
for i=1:n
y(i)=b(i);
for j=1:n
if j~=i
y(i)=y(i)-A(i,j)*x(j);
end
end
if abs(A(i,i))<1e-10|k==maxl
flag='failure';return;
end
y(i)=y(i)/A(i,i);
end
if norm(y-x,inf)<eps
break;
end
x=y; k=k+1;
end
稍微調試肯定可以通過,都是經過測試的,記得給我分數呦,謝啦~~~
⑼ matlab 數值分析
初始值不是那樣輸入的
⑽ 如何用Matlab編程計算二階常微分方程組的數值解
用Matlab編程計算二階常微分方程組的數值解的方法有很多種,最常用有ode45函數。
ode45函數的使用格式:
【t,y】=ode45(odefun,tspan,y0)
例如: