简单的matlab解方程问题
发现解在+/-1.6附近 因此通过fsolve 来解非线性方程,不能得到其解析解,只能计算其数值解,通过限制其精度,达到自己的要求。 fsolve('funx',-1.7)即可求得 -1.6376 - 0.0000i fsolve('funx',1.5) 1.6376 + 0.0000i function [fx ] = funx( n ) %FUNX Summary of this function goes here % Detailed explanation goes here lanmuda=1.55; n1=1.6375696780514445567155543374853; n2=1.6443618413936927969908352393948; n3=1.6375696780514445567155543374853; c1=n2^2/n1^2; c2=n2^2/n3^2; k0=2*pi/lanmuda; r1=sqrt(n.^2-n1^2)*k0; r2=sqrt(n2^2-n.^2)*k0; r3=sqrt(n.^2-n3^2)*k0; fx=r2.*5-atan(c1.*r1./r2)-atan(c2.*r3./r2)-pi; end
这是因为solve命令在求解方程组时,和dsolve以及其他很多命令一样,并不会调用workspace里面保存的数据。可以进行人工赋值:
A=1;
B=2;
syms x y ;
[x y]=solve('x+A*y=10','x-B*y=1','x','y');
x=subs(x);
y=subs(y);
p1=180;p2=500;p3=60;p4=15;p5=2;%自己改
options = optimoptions('fsolve','Display','off');
f=@(x)[x(1)*sind(p3)+x(2)*cosd(x(3))-(4700-p1-p2);
x(1)*sind(p4)+x(2)*cosd(x(4))-(2200-p1-p2);
x(1)*cosd(p4)-x(2)*sind(x(4))-(x(1)*cosd(p3)-x(2)*sind(x(3)));
x(1)-p5*x(2)];
x=ones(4,1);
iteration=0;
while 1
iteration=iteration+1;
[x,v,flag]=fsolve(f,x,options);
if flag~=1
fprintf(1,'The solution is: x1 = %f, x2 = %f, x3 = %f, x4 = %f
',x);break
elseif iteration>10
disp('Can not find the solution!');
break
end
end
简单的matlab程序有点疑问求解
只保留一个循环即可。这样取出来的数才是第一列。a=[12,13,14;15,16,17;18,19,20;21,22,23];for j=1:4if rem(a(j),2)~=0s=s+a(j);endends
matlab 简单的积分问题
solve('0.528*20\/360=2.1*235*0.105*((0.0053-0.21)*log(x\/0.105)+2*(x-0.105))')得到结果:ans = [ .94507276150964685055407344999318e-1][ .11061505489053316459098974945385]就是说有两个解,其中 一个解为0.945*10^-1 另一个为0.1106 注意上面的log代表以e为底的对数(2....
跪求用mat lab解决电路问题的的代码
使用MATLAB的左除运算符求解线性方程组 I = A\\B;输出电流值 disp(I);这段代码首先定义了电阻的值和电源电压,然后定义了方程系数矩阵A和向量B,最后使用MATLAB的左除运算符(\\)求解线性方程组。运行这段代码,你将得到电流I的值。这是一个简单的例子,实际的电路问题可能更复杂,涉及到更多的电阻、...
一段用matlab模拟单缝衍射代码,求解释,急!!
clear lam=500e-9; %波长λ a= 1e-3; %单缝宽 f=1; % 屏与单缝之间的距离 xm= 3*lam*f\/a; %屏X轴最大范围 nx= 51; %取样数 xs=linspace(-xm,xm,nx); % X轴序列,中心为0 np=51; % 单缝抽样序列 xp=linspace(0,a,np); % 单缝序列 for i=1:n...
求大神matlab单目标规划问题找错
程序第四行错了 应该是:lb=zeros(3,1)修改后为:f=[-5;-4;-6];A=[1 -1 1;3 2 4;3 2 0];b=[20;42;30];lb=zeros(3,1);[x,fval,exitflag]=linprog(f,A,b)运行结果:Exiting: One or more of the residuals, duality gap, or total relative error has stalled:the dual...
单边实指数序列的matlab程序
有人抢答了啊,你的问题就是把上面代码放到一起了,把前半截放到一个m文件中,文件名取为dszsu 后面一半在放到一个m文件中,或者直接放到command窗口就可以了,你的前半截相当于自己写了一个matlab的函数,跟平时用的fft()这种函数没什么区别,你可以把前半截做成一个m文件dszsu,然后在coomand窗口...
matlab怎么计算方程组
1、对于比较简单的方程组,可以用solve()函数命令求解。如方程组 x + y = 1 ; x - 11y = 5 >>[x,y]=solve('x + y = 1','x - 11*y = 5')又如方程组 exp(x+1)-y²=10 ;ln(x)+3y=7 >>syms x y >>[x,y]=solve(exp(x+1)-y^2-10,log(x)+3*y-...
怎么用matlab解含有字母系数的方程组的解,举个简单例子
用法以这个为例:x+A*y=10 x-B*y=1 其中x,y为变量,A,B为字母系数.只要在Matlab中输入 syms x,y,A,B [x y]=solve('x+A*y=10','x-B*y=1','x','y')即可求出解 x = (A + 10*B)\/(A + B)y = 9\/(A + B)对于函数solve的具体用法,可以通过输入help solve来学习。
如何用Matlab求解偏微分方程,并画出图像
用Matlab求解偏微分方程,可以用pde工具箱来解决。例如,简单的点热源方程 求解步骤及主要函数:1、问题定义 2、创建具有单个因变量的PDE模型, createpde()3、创建几何结构并将其追加到PDE模型中,geometryFromEdges()4、使用边界条件,pdegplot()5、指定PDE系数 6、指定初始条件,setInitial...
求助大神帮忙写一个matlab程序,用来仿真单缝夫琅禾费衍射的问题,
lam=6328e-10;a=1e-3;D=1;ym=3*lam*D\/a;ny=51;ys=linspace(-ym,ym,ny);np=51;yp=linspace(0,a,np);for i=1:ny sinphi=ys(i)\/D;alpha=2*pi*yp*sinphi\/lam;sumcos=sum(cos(alpha));sumsin=sum(sin(alpha));B(i,:)=(sumcos^2+sumsin^2)\/np^2;end N=255;Br=(B...
绽咬骨刺: 比如解一道一元高次非线性方程,我们一般的解法是先确定方程的解所在的大致范围,然后用牛顿迭代法来算,很复杂. 这里我介绍用matlab来解方程,一个命令即可轻松得出方程的所有解. 工具/原料Matlab 解一元方程1 先举一例,解方程"x^2+100*x+99=0" 在matlab ”Command Window"中输入如下命令: x=solve('x^2+100*x+99=0','x') 见下图2 回车后,matlab就求出了这个一元二次方程的解.
易县15173481839: MATLAB简单的解方程问题A=1;B=2;syms x y ; [x y]=solve('x+A*y=10','x - B*y=1','x','y')我已经定义了A和B,怎么解出来的X,Y还是带A和B字母的解啊 - ?
绽咬骨刺:[答案] 这是因为solve命令在求解方程组时,和dsolve以及其他很多命令一样,并不会调用workspace里面保存的数据.可以进行人工赋值: A=1; B=2; syms x y ; [x y]=solve('x+A*y=10','x-B*y=1','x','y'); x=subs(x); y=subs(y);
易县15173481839: matlab的simulink如何解方程? - ?
绽咬骨刺: 首先要明确,simulink的作用为求解常微分方程(组)!且这是他唯一的作用!也就是说偏微分方程在simulink中是无法求解的,需要其他工具或软件作为接口.Dx=diff(A,n,dim)计算数值微分 用dsolve(''表达式1','表达是',...,'表达式n','初始值','独立变量'); 也可以用ode23或者ode45函数计算. 要查函数调用格式可以在matlab workspace输入>>help ode23即可.
易县15173481839: matlab怎样求解一元二次方程 - ?
绽咬骨刺: 一、工具:Matlab2012b 二、操作步骤: A.解一元方程【1】先举一例,解方程"x^2+100*x+99=0"在matlab ”Command Window"中输入如下命令:x=solve('x^2+100*x+99=0','x')见下图【2】回车后,matlab就求出了这个一元二次方程...
易县15173481839: 怎么在matlab中求解方程1+cosx*chx=0(需要方程前十个x值较小的解,ch函数在matlab中是cosh) - ?
绽咬骨刺:[答案] fun=@(x) 1+cos(x).*cosh(x); xx=(0:9)*pi+pi/2; z=zeros(size(xx)); for i=1:length(xx) z(i)=fzero(fun,xx(i)); end 因为cos和cosh都是偶函数,所以它的根正负对称的 这个函数是个超越函数,所以解析解不能用初等函数表示 我们可以重数值解法 因为cos(x)的根...
易县15173481839: matlab的方程式求解问题!(急)~ - ?
绽咬骨刺: 试试修改后的代码 handles.metricdata.M=4; handles.metricdata.a1=0.5; handles.metricdata.a2=0.35; M = handles.metricdata.M; for i=1:M-2 express=['a(',int2str(i),')=','handles.metricdata.','a',int2str(i)]; eval(express); end a%这边a为什么显示不是a=[...
易县15173481839: MATLAB中解方程问题a*exp(x)*x^2+b*exp(x)*x+c*exp(x)+d*x^2+e*x+f=0a,b,c,d,e,f为参数,x,用参数表示MATLAB中输入x=solve('a*exp(x)*x^2+b*exp(x)*x+c*... - ?
绽咬骨刺:[答案] 你要申明那些系数为符号变量,即 syms a b c d e f solve('a*exp(x)*x^2+b*exp(x)*x+c*exp(x)+d*x^2+e*x+f=0') 但是找不到收敛的解
易县15173481839: 用matlab解方程组的问题,五个方程求解四个未知数.方程:x+10496.108*y+10496.108^2*z+10496.108^3*t= - 3043766.03 x+10500.275*y+10500.275^2*z+... - ?
绽咬骨刺:[答案] 方程数大于未知量个数,属于超定方程组,一般没有精确解,只能求最小二乘解.matlab中可以利用左除或伪逆法求解. clear c1=10496.108; c2=10500.275; c3=10504.442; c4=10508.609; c5=10512.776; A=[1,c1,c1^2,c1^3; 1,c2,c2^2,c2^3; 1,c3,c3^2,c...
易县15173481839: 用matlab求解方程组 - ?
绽咬骨刺: 以前曾回答过相关的问题(编号2010907084650078548),虽然给了一些求解的方法,但结果始终不是很清晰,不能直观地解释为什么换了数据就不行.后来,我换了一种思路,应该可以很直观地说明不同的参数有的可以而有的不行,现简单...
易县15173481839: 新手,matlab怎么解方程 - ?
绽咬骨刺: 可以用solve函数,或者用roots函数等多种方法,例如:>> solve('x+1=0') ans =-1 作为新手建议找本书看看,或者百度一下,然后自己测试.