⑴ 用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)
例如: