Matlab编程问题,求大神帮忙

供稿:hz-xin.com     日期:2025-05-22
matlab编程问题

这个不简单吗?用个循环赋值就行了啊
for i=1:150
a(2,i)=b(1,i)
end
具体如下,a,b我随意赋值
a=zeros(200);
b=zeros(1,150);
for i=1:200
for j=1:200
a(i,j)=i+j;
end
end
for i=1:150
b(1,i)=i;
end
for i=1:150
a(2,i)=b(1,i);
end

下面是我对这道题思路:
1:
对于第一题的微分方程组在matlab中输入[f,g]=dsolve('Df=exp(f*sin(t)+g)','Dg=exp(g*cos(t))+f','t')答案是 Explicit solution could not be found,即没有解析解,因此只能求其近似解,也就是数值解。

求解微分方程的数值解需要知道“函数的初值”“自变量的范围”,即f(0)=?,g(0)=?,变量t的取值范围是多少,然后迭代运算,得到在给定定义域内的近似值。
2:
差分法也就是我们知道的欧拉法(Euler)"思想是用先前的差商近似代替倒数",直白一些的编程说法即:f(i+1)=f(i)+h*f(x,y)其中h是设定的迭代步长,若精度要求不高,一般可取0.01。在定义区间内迭代求解即可。
龙哥库塔法一般用于高精度的求解,即高阶精度的改进欧拉法。
常用的是四阶龙哥库塔:
编程语言如下:
y(i+1)=y(i)+h*(k1+2*K2+2*k3+k4)/6;
k1=f(xi,yi)
k2=f(xi+h/2,yi+h*k1/2);
k3=f(xi+h/2,yi+h*k2/2);
k4=f(xi+h,yi+h*k3);
设置终止条件迭代求解。

思想就是这样,代码如下:
%% 龙哥库塔or欧拉法求解微分方程
t=0:0.01:3; %自变量范围
f = [];
g = [];
f(1) = 0.1; %f初值
g(1) = 1; %g初值

h=0.001;
for i=1:length(t)
%% 欧拉法

% f(i+1) =f(i)+h*(exp(f(i)*sin(t(i)))+g(i));
% g(i+1) =g(i)+h*(exp(g(i)*cos(t(i)))+f(i));

%% 龙哥库塔
kf1 = exp(f(i)*sin(t(i)))+g(i);
kf2 = exp((f(i)+kf1*h/2)*sin(t(i)+h/2))+g(i);
kf3 = exp((f(i)+kf2*h/2)*sin(t(i)+h/2))+g(i);
kf4 = exp((f(i)+kf3*h)*sin(t(i)+h))+g(i);
f(i+1) = f(i) + h*(kf1+2*kf2+2*kf3+kf4)/6;

kg1 = exp(f(i)*cos(t(i)))+f(i);
kg2 = exp((f(i)+kg1*h/2)*cos(t(i)+h/2))+f(i);
kg3 = exp((f(i)+kg2*h/2)*cos(t(i)+h/2))+f(i);
kg4 = exp((f(i)+kg3*h)*cos(t(i)+h))+f(i);
g(i+1) = g(i) + h*(kg1+2*kg2+2*kg3+kg4)/6;
end
figure(1)
plot(t,f(1:length(t)),t,g(1:length(t)));
legend('f函数','g函数')

1、使用sort函数对矩阵元素进行排序

2、使用randint函数生成随机整数,使用find函数找到相应的矩阵元素。

程序如下:

%程序1

x=randn(5,5)

x=sort(x,2)

%程序2

y=randint(5,5,[1 100])

y(find(mod(y,3)==0))=1

y(find(mod(y,7)==0))=1

y(find(mod(y,5)==0))=0

结果为:



a = round(100*rand(round(100*rand(1)),round(100*rand(1))));
% 生成元素是100以内随机整数的矩阵,
% 矩阵的行数和列数都是100以内的随机整数
a = sort(a,2); % 按行排序
for i = 1:numel(a)
if ~mod(a(i),5) % 被5整除的赋0
a(i) = 0;
elseif ~mod(a(i),3) % 被3整除的赋1
a(i) = 1;
elseif ~mod(a(i),7) % 被7整除的赋1
a(i) = 1;
end
end
%祝你好运~

用MATLAB编程解决最短距离问题(很急,大神帮忙)
H2(1), 'YData', H2(2));set(h.AH1, 'XData', [A(1) H1(1)], 'YData', [A(2) H1(2)]);set(h.BH1, 'XData', [B(1) H1(1)], 'YData', [B(2) H1(2)]);set(h.H1H2, 'XData', [H1(1) H2(1)],

Matlab编程问题,求大神帮忙
1、使用sort函数对矩阵元素进行排序 2、使用randint函数生成随机整数,使用find函数找到相应的矩阵元素。程序如下:程序1 x=randn(5,5)x=sort(x,2)程序2 y=randint(5,5,[1 100])y(find(mod(y,3)==0))=1 y(find(mod(y,7)==0))=1 y(find(mod(y,5)==0))=0 结果为:a = round...

求大神帮忙啊~Matlab错误使用 .* 矩阵维度必须一致。出错 Untitled3 (l...
在编程过程中遇到的错误提示是:Matlab错误使用.*矩阵维度必须一致。具体出错的代码行是spread_sig=signal.*y32;经分析,问题出在变量t的定义以及信号处理上的点乘运算。首先,t的定义为t=0:0.001:1,生成了一个1001个元素的行向量。然而,信号信号(signal)是一个5000个元素的行向量。这导致了两个...

各位matlab大佬,请问出现这种问题咋解决?
若想判断某个函数是否为系统函数,可以通过 F1 键获取帮助信息。将鼠标定位在函数名上按下 F1,如果系统没有该函数,会弹出提示信息。若根据程序逻辑判断应计算点点之间的距离,可以尝试定义一个名为 distance 的自定义函数。这样,程序将优先调用此函数,避免调用可能不存在的系统函数。在 MATLAB 中,矩阵...

MATLAB编写程序用四阶龙格库塔法求解常微分方程组,自己写了算的出错...
在使用MATLAB编写程序求解常微分方程组时,我尝试了四阶龙格-库塔法,但结果并不理想。我的代码如下:[t,x]=rk4(@(t,x)[-x(1),-x(3),x(2)],0,2,[1,-1,0],0.01) %函数文件 此外,我还定义了一个函数文件rk4,代码如下:function [t,x]=rk4(funname,t0,t1,x0,dt) t=[];...

关于用matlab编程最小二乘法求解的问题,请大神帮忙,工科数学问题
-65 -65 -65 -67 -66 -68 -68 ... -70 -71 -72 -73 -75 -75 -76 -76];p=polyfit(log(d),RSSI,1);n=-p(1)\/10;A=p(2);plot(d,RSSI,'o');hold on;plot(d,-10*n*log(d)+A,'r');hold off;legend('原始数据','拟合曲线');title(['n=' num2str(n) ', ...

求助编程大神!!matlab
1、创建自定义极小值函数,其主要代码 if pc*pf>1024 %判断pc*pf是否小于等于1024 f1=inf;else f1=c\/pc*f\/pf;end 2、使用for循环语句,分别将c和f值赋值给自定义函数for i=1:5c=c0(i);f=f0(i);。。。end 3、使用ga函数求其pc和pf值,即A=[];b=[];Aeq=[];beq=[];lb=[0...

一个关于矩阵中元素排序的matlab编程问题,希望能有高手帮忙。很着急...
2 3 2;9 8 3 1;0 7 6 4;2 3 5 7];%原矩阵a b=zeros(size(a));%b为中间矩阵,大小与a相同 c=[1;4;3;2];%新的排列顺序 b(1,:)=a(c(1),:);b(2,:)=a(4,:);b(3,:)=a(2,:);b(4,:)=a(3,:);]for i=1:size(c)b(i,:)=a(c(i),:);end a=b ...

运用Matlab编程,使实现任意输入一个正整数n,求和得sum=1+2+...+n...
n=3;%n为输入值(可用input)s=sum([1:n])n

MATLAB的热传导方程的编程不知道错那了,请大神帮忙看看,万分感谢
第一,u(0,:)=0,这个是不对的。Matlab的数组下标都是从1起始的。如果是取u的第一个元素,需要用u(1,:)第二,u(72:100,1)=(-10*x).\/3+10.\/3,这个语句有问题。注意x是一个100维的行向量,而u只有72:100,所以,需要给将x修改为x(72:100)。第三,在循环中u(1:99,j+1)这个...