导航:首页 > 计算方法 > 计算方法及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实现相关的资料

热点内容
腰突手术后锻炼腰肌方法 浏览:235
感染性疾病治疗常规方法 浏览:915
捷达离合器行程长解决方法 浏览:982
女性肛周湿疹治疗方法 浏览:414
老年人玩电脑的方法 浏览:285
寻找真爱有哪些方法 浏览:552
如何才是最好的减肥方法 浏览:509
头孢拉定鉴别显色的方法是 浏览:962
电脑手机在线连接方法 浏览:629
什么方法治扁平疣 浏览:336
公主蛋糕怎么做的方法 浏览:401
打开膏肓穴有哪些方法 浏览:583
腈纶可用什么方法鉴别 浏览:96
足球对抗技战术训练方法180例 浏览:170
枕套的正确安装方法 浏览:296
工程资料教学方法 浏览:93
治疗青胎记最好的方法 浏览:332
肾阳虚腹泻最快治疗方法 浏览:136
吊扇变速器的安装方法 浏览:298
如何选择生茶存放方法和条件 浏览:525