怎样用Matlab编写方程组程序。。。

怎样用Matlab编写方程组程序。。。,第1张

拉格朗日function y=lagrange(x0,y0,x)n=length(x0);m=length(x);for i=1:m z=x(i); s=00; for k=1:n p=10; for j=1:n if j~=k p=p(z-x0(j))/(x0(k)-x0(j)); end end s=py0(k)+s; end y(i)=s;end SOR迭代法的Matlab程序 function [x]=SOR_iterative(A,b)% 用SOR迭代求解线性方程组,矩阵A是方阵 x0=zeros(1,length(b)); % 赋初值 tol=10^(-2); % 给定误差界 N=1000; % 给定最大迭代次数 [n,n]=size(A); % 确定矩阵A的阶 w=1; % 给定松弛因子 k=1; % 迭代过程 while k<=N x(1)=(b(1)-A(1,2:n)x0(2:n)')/A(1,1); for i=2:n x(i)=(1-w)x0(i)+w(b(i)-A(i,1:i-1)x(1:i-1)'-A(i,i+1:n)x0(i+1:n)')/A(i,i); end if max(abs(x-x0))<=tol fid = fopen('SOR_iter_resulttxt', 'wt'); fprintf(fid,'\n用SOR迭代求解线性方程组的输出结果\n\n'); fprintf(fid,'迭代次数: %d次\n\n',k); fprintf(fid,'x的值\n\n'); fprintf(fid, '%128f \n', x); break; end k=k+1; x0=x; end if k==N+1 fid = fopen('SOR_iter_resulttxt', 'wt'); fprintf(fid,'\n用SOR迭代求解线性方程组的输出结果\n\n'); fprintf(fid,'迭代次数: %d次\n\n',k); fprintf(fid,'超过最大迭代次数,求解失败!'); fclose(fid); end Matlab中龙格-库塔(Runge-Kutta)方法原理及实现龙格-库塔(Runge-Kutta)方法是一种在工程上应用广泛的高精度单步算法。由于此算法精度高,采取措施对误差进行抑制,所以其实现原理也较复杂。该算法是构建在数学支持的基础之上的。龙格库塔方法的理论基础来源于泰勒公式和使用斜率近似表达微分,它在积分区间多预计算出几个点的斜率,然后进行加权平均,用做下一点的依据,从而构造出了精度更高的数值积分计算方法。如果预先求两个点的斜率就是二阶龙格库塔法,如果预先取四个点就是四阶龙格库塔法。一阶常微分方程可以写作:y'=f(x,y),使用差分概念。(Yn+1-Yn)/h= f(Xn,Yn)推出(近似等于,极限为Yn')Yn+1=Yn+hf(Xn,Yn)另外根据微分中值定理,存在0<t<1,使得Yn+1=Yn+hf(Xn+th,Y(Xn+th))这里K=f(Xn+th,Y(Xn+th))称为平均斜率,龙格库塔方法就是求得K的一种算法。利用这样的原理,经过复杂的数学推导(过于繁琐省略),可以得出截断误差为O(h^5)的四阶龙格库塔公式:K1=f(Xn,Yn);K2=f(Xn+h/2,Yn+(h/2)K1);K3=f(Xn+h/2,Yn+(h/2)K2);K4=f(Xn+h,Yn+hK3);Yn+1=Yn+h(K1+2K2+2K3+K4)(

分类: 电脑/网络 >> 程序设计 >> 其他编程语言

问题描述:

我第一次接触matlab,但老师就要求我们用它来编程了

无从下手

题目:

1。设方程的根为X=[-3,-5,-8,-9],编写MATLAB程序求他们对应的X多项式的系数。

2。 设f(x)=1/((x-2)^2+01) +1/((x-3)^4+001),写出一个MATLAB函数程序f31m,使得调用f1时,x可用距阵代入,得出的f(x)为同阶距阵。画出x=[0,4]区间内的f31曲线。

我是新人,把所用分都拿出来了

忘哪位强人帮帮忙

在此谢过!

解析:

1设多项式为:x^4+ax^3+bx^2+cx+d=0

y=subs('x^4+ax^3+bx^2+cx+d=0',[-3 -5 -8 -9])

p=solve(y(1),y(2),y(3),y(4))

a=pa,b=pb,c=pc,d=pd

运行结果:

a =25

b =223

c =831

d =1080

验证:

X=roots([1 25 223 831 1080])

X =

-90000

-80000

-50000

-30000

2把以下2行文件存为f31m

function f=f31(x)

f=1/((x-2)^2+01) +1/((x-3)^4+001);

例如:

>> f31(2)

ans = 109901

>> f31([2 3 4;1 2 3])

ans =

109901 1009091 12340

09716 109901 1009091

3画出x=[0,4]区间内的f31曲线

>> fplot('1/((x-2)^2+01) +1/((x-3)^4+001)',[0,4])

要将电路的状态方程写入Matlab程序并产生数据,需要按照以下步骤进行 *** 作:

1 确定电路的状态方程:电路的状态方程描述了电路中各个元件的状态随时间变化的关系,通常是一组微分方程。根据电路的拓扑结构和元件特性,可以推导出电路的状态方程。

2 将状态方程转化为矩阵形式:将状态方程转化为矩阵形式,可以方便地在Matlab中进行计算。通常需要用到矩阵运算和微分方程求解方法。

3 编写Matlab程序:根据状态方程和矩阵形式,编写Matlab程序来求解电路的状态随时间的变化。程序中需要包括对初始条件的设定、微分方程求解方法的选择、时间步长的设置等。

4 运行程序并可视化数据:运行Matlab程序,得到电路状态随时间的变化数据。可以将数据可视化,比如绘制电路各个节点的电压随时间的变化曲线,来更直观地观察电路的动态响应。

总之,将电路的状态方程写入Matlab程序并产生数据需要深入了解电路的拓扑结构和元件特性,掌握矩阵运算和微分方程求解方法,以及熟悉Matlab编程技巧。

以上就是关于怎样用Matlab编写方程组程序。。。全部的内容,包括:怎样用Matlab编写方程组程序。。。、matlab编程问题、如何将电路的状态方程写入matlab程序产生数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10165658.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存