matlab中如何输出数值解

作者&投稿:掌垄 (若有异议请与网页底部的电邮联系)
如何用MATLAB求积分的数值解~

对于你问题,可以这样解决。即
x=double(solve(f2))
根据你提供图片算式,发现你编写的算式代码有点问题。正确方式为
B=10^6;Tf=2*10^(-3);theta=10^(-3);
beta=theta*Tf*B/log(2);
syms y x
eq0=(1/(x^(1/(beta+1))))*(1/(y^(beta/(beta+1))))*exp(-y/10);
f=int(eq0,y,x,+inf)-10;
x=double(solve(f))
运行结果

你可能误解了解析解与数值解的来源。

solve给你的是解析解,你得到解析解以后,给参数赋值,然后再使用eval()函数,即可得到结果(但不是你说的数值解)。

如果需要数值解,用积分来说吧,我们有辛普森(simposon),Trapzoidal等方法,解方程还有gradient based等。

这些Matlab也有相关的函数。

建议你看一本书,叫做:Computaitonal Methods for Engineers,里面都是用Matlab实现数值解的方法。

1、打开matlab软件主界面,如图所示。

2、在命令窗口输入内容后,加上分号,回车后,输出数据不显示。若内容后面不带分号,回车后,输出数据可显示。如图所示。

3、在脚本文件里,可以选用disp显示函数对输出内容进行显示。如图所示。

4、也可以用fprintf函数显示数据,格式为fprintf(format,data),format为打印数据格式,data代表打印的标量或数组。如图所示。

5、fprintf函数括号内的%6.2代表第一个数据项占有6个字符宽度,小数点后的数值表示有2位小数,
表示换行。如图所示。



如果使用int计算定积分无法得到显式解,可用double(g)或vpa(g)获得数值结果(后者可以指定有效数字的位数,默认为32位)。

 

根据实际测试,在6.5和2013a上都可以求出来,但2007b上面求解失败,原因不明。

>> syms x
>> g=int(-sin(x)*(((157*(1 - (79535835963070513903504789767225*sin(x)^2)/81129638414606681695789005144064)^(1/2))/100 - (1 - 78419152826149003888299582518893161/32451855365842672678315602057625600*sin(x)^2)^(1/2))^2/(2*((157*(1 - (79535835963070513903504789767225*sin(x)^2)/81129638414606681695789005144064)^(1/2))/100 + (1 - (78419152826149003888299582518893161*sin(x)^2)/32451855365842672678315602057625600)^(1/2))^2) + ((1 - (79535835963070513903504789767225*sin(x)^2)/81129638414606681695789005144064)^(1/2) - (157*(1 - (78419152826149003888299582518893161*sin(x)^2)/32451855365842672678315602057625600)^(1/2))/100)^2/(2*((1 - (79535835963070513903504789767225*sin(x)^2)/81129638414606681695789005144064)^(1/2) + (157*(1 - (78419152826149003888299582518893161*sin(x)^2)/32451855365842672678315602057625600)^(1/2))/100)^2) - 1),0,asin(113712479216728525/176766285374291968))
Warning: Explicit integral could not be found.
> In D:\MATLAB6p5oolbox\symbolic\@sym\int.m at line 58
 
g =
 
int(-sin(x)*(1/2*(157/100*(1-8830251636901045/9007199254740992*sin(x)^2)^(1/2)-(1-2720710907474673/1125899906842624*sin(x)^2)^(1/2))^2/(157/100*(1-8830251636901045/9007199254740992*sin(x)^2)^(1/2)+(1-8502221585858353/3518437208883200*sin(x)^2)^(1/2))^2+1/2*((1-8830251636901045/9007199254740992*sin(x)^2)^(1/2)-157/100*(1-8502221585858353/3518437208883200*sin(x)^2)^(1/2))^2/((1-8830251636901045/9007199254740992*sin(x)^2)^(1/2)+157/100*(1-8502221585858353/3518437208883200*sin(x)^2)^(1/2))^2-1),x = 0 .. 786769134575155/1125899906842624)
 
>> double(g)
ans =
          0.20913681519715
>> vpa(g)

ans =

.20913681519714970155060790992650


)数值解(numerical solution)则是采用某种计算方法,例如如有限元的方法,数值逼近,插值的方法,
得到的解。其结果为数值形式,而不能随意给出自变量并求出计算值。当无法通过微积分求得解析解时,这时便只能利用数值分析的方式来求其数值解。在数值分析的过程中,首先会将原方程式加以简化,以利后来的数值分析。例如,会先将微分符号改为差分符号等。然后再用传统的代数方法将原方程式改写成另一方便求解的形式。这时的求解步骤就是将一独立变量带入,求得相依变量的近似解。因此利用此方法所求得的相依变量为一个个分离的数值〈discretevalues〉,不像解析解为一连续的分布,而且因为经过上述简化的动作,所以可以想见正确性将不如解析法来的好。

例如:

x^2=10;

则x=sqrt(10)为解析解;

而x=3.1623为数值解。

使用函数g1=eval(g)试试


在matlab中怎么输入希腊字母啊?
matlab中用转义符来输入希腊字母的方法:希腊字母等特殊字符用 \\加拼音,如:α \\alpha,β \\beta、γ \\gamma,θ \\theta,Θ \\Theta,Г \\Gamma,δ \\delta,Δ \\Delta,ξ \\xi,Ξ \\Xi,η \\elta,ε \\epsilong,ζ \\zeta,μ \\miu,υ \\nu,τ \\tau,λ \\lamda,∧ \\Lamda,π \\...

Matlab中如何输出希腊字母?
Matlab的命令窗口中是没有办法输出希腊字母的,但是画图的时候可以在图中输出希腊字 母。希腊字母等特殊字符用 \\加拼音 表示,拼音首字母大写表示大写的希腊字母,小写表 示小写的希腊字母。如下面的命令:1、figure(1)2、clf 3、title('\\alpha')4、xlabel('\\beta')5、ylabel('\\Gamma')结果如下...

matlab如何输入不等于符号
matlab中不等于输入方法如下:1、首先,&&和||是短路版本的逻辑与和逻辑或,称为short-circuit运算符。短路逻辑运算符的两边必须是逻辑标量值。比如单个逻辑变量,逻辑表达式都可以。2、我们首先写一个函数calcsum,该函数如果被调用会输出一行信息,并返回a+b+c。3、对于&&符号(与),通过观察输出结果...

matlab命令提示符怎么打出来?
在 MATLAB 中,命令提示符通常用于显示当前的 MATLAB 状态,并等待用户输入 MATLAB 命令。在 MATLAB 命令窗口中,命令提示符通常显示为两个大于号 >>。要在 MATLAB 命令窗口中显示命令提示符,只需要在命令窗口中按下 Enter 键即可。当 MATLAB 完成上一条命令的执行或等待用户输入新的命令时,命令提示...

Matlab中希腊字母怎么输入
Matlab的命令窗口中是没有办法输出希腊字母的,但是画图的时候可以在图中输出希腊字母。希腊字母等特殊字符用 \\加拼音 表示,拼音首字母大写表示大写的希腊字母(如果有的话),小写表示小写的希腊字母。如下面的命令:figure(1);clf;title('\\alpha');xlabel('\\beta');ylabel('\\Gamma');结果如下:...

matlab中不等于怎么输入
matlab中的不等于2113命令5261为“~=”。matlab中的不等于命令“~=”表示过程:1、打开桌4102面的matlab应用软件。2、在matlab的红色区域位1653置“命令行窗口”中输入命令。3、通过程序验证不等于命令“~=”。输入a=1,b=2,输入不等于命令“a~=b”。输出结果为1,结果正确,a不等于b。4、通过...

matlab中不等于怎么输入
1、首先需要打开电脑的桌面,如图所示,点击matlab图标进入软件。2、然后进入之后,如图所示,可以看到右侧的命令行窗口的下面输入需要编辑的内容。3、最后,matlab中不等于输入就是~=,举例子可以看一下a~=b,~标志在matlab里面就会在上面,这样就可以输入了。

MATLAB中的平方怎么输入? 谢谢高手指导。比如说x.^2,X和2之间的那个符 ...
1、第一步打开matlab,在命令行窗口输入a=3^2,如下图所示:2、第二步按回车键之后,可以看到结果为9,表示3的平方,如下图所示:3、第三步命令行窗口输入 b=power(4,2),表示4的平方,如下图所示:4、第四步按回车键,可以看到结果为16,power函数可以表示是数字的几次方,后面是2就是平方...

matlab中怎么输入指数
方法和详细的操作步骤如下:1、第一步,打开matlab后,直接在命令窗口中输入e,然后按Enter键确认,可以看到显示了未定义的变量,见下图,转到下面的步骤。2、第二步,执行完上面的操作之后,基于e的指数函数,可以用exp(n)表示,在命令行窗口中的幂为e的五次幂,见下图,转到下面的步骤。3、第三...

如何在matlab中输入一个矩阵
3.在上一步中,函数图形的可见性(visible)已经关闭(off),也就是被隐藏起来了,接着我们得把plot函数做出的图形给保存起来,具体以.png的格式,看图 4.以我们自己命名图片的名字,本文这次命名为baidu,同时展示效果如图:扩展另一个功能:Matlab给系统自动生成的窗体Figure1改名称 1当我们调用plot(...

拜泉县15642426119: 如何用matlab求下面一阶微分方程组的数值解 -
蔽会肥儿: 用matlab求下面一阶微分方程组的数值解 此微分方程可以用ode45()函数求的其数值解.其解过程为

拜泉县15642426119: 如何用matlab求解微分方程组的数值解 -
蔽会肥儿: 在Matlab下输入:edit zhidao_feiying.m,然后将下面两行百分号之间的内容,复制进去,保存 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function y=zhidao_feiying(t,x) a=1; b=2; c=3; d=4; ...

拜泉县15642426119: matlab 数值解比如有方程 y^3+x^2+3x - 2y=1 其中x的区间为0到10 如何让matlab求解数值解y呢? -
蔽会肥儿:[答案] x = 0; feqn = @(y) y^3+x^2+3*x-2*y-1; y = fzero(feqn, 1); 这样就可以求出x=0时y的解.不断改变x就可以求出对应的y.

拜泉县15642426119: matlab中怎么输出一个变量的值 -
蔽会肥儿: 在MATLAB中,可以使用sprintf来格式化输出变量. MATLAB的sprintf用法几乎和C中的printf一样,参数都是printf(FORMAT,A,...) MATLAB的sprintf会返回一个字符串,当不使用分号;时,可以直接在屏幕输出. MATLAB的sprintf语法为[s, errmsg] = sprintf(format, A, ...) 可以把矩阵A做数据格式的转换,格式就是format参数. 例子: Str = [65 66 67 pi]; sprintf('%s %f', Str) 可得: ans = ABC 3.141593

拜泉县15642426119: matlab求方程数值解 -
蔽会肥儿: >> syms a1 a2 c1 c2 %以下的值你自己改一下 aa1=1; cc1=2; aa2=3; cc2=4; [x5,y5]=solve('y5=a1*x5+c1','y5=a2*x5+c2','x5','y5'); xx5=subs(subs(subs(subs(x5,a1,aa1),a2,aa2),c1,cc1),c2,cc2) yy5=subs(subs(subs(subs(y5,a1,aa1),a2,aa2),c1,cc1),c2,cc2)%%%%%subs(表达式,变量,变量的值),就是将表达式里面的变量,用变量的值代进去.

拜泉县15642426119: matlab求二元方程组数值解 -
蔽会肥儿: 程序: clear[x y]=solve('A1=x*(y-B1)','A2=x*(y-B2)','x','y')x =-(A1 - A2)/(B1 - B2)y =(A1*B2 - A2*B1)/(A1 - A2)clear的话是把之前的内存变量删除.目的是防止出错. 这里用的是solve函数.如果是一元一次方程,没有其他符号则直接可以solve...

拜泉县15642426119: 求高手用matlab求数值解 -
蔽会肥儿: 你没有给出参数的具体值,我只好编了.function hh fsolve(@myfun,[100,10]) function f=myfun(x) T=x(1);t=x(2); c1=1;c2=9;a=8;b=3;c=4;h=5;k=6;m=7; f(1)=c2*(T-t)*(a+1/2*b*(T-t)+1/3*c*(T^2+T*t+t^2)); f(2)=(c*t^2+b*t+a)*((c1+c2+h/m+k/m^2)*exp(m*t)-...

拜泉县15642426119: matlab中求常微分方程的数值解 -
蔽会肥儿: t0 = 0; tf = 5; % y'' = (2-3y-2ty')/(1+t^2) dy = @(t,y) [y(2);(2-3*y(1)-2*t*y(2))/(1+t^2)]; [T,Y] = ode45(dy,[t0 tf],[0 1]); plot(T,Y(:,1))

拜泉县15642426119: 用matlab解方程组的数值解,急 -
蔽会肥儿: 解对初值很敏感, 需要提供初值试了试,当初值取很大时解收敛于V=0.072,R=35.622,C=1.2618

拜泉县15642426119: 如何使用matlab用梯形法解常微分方程dy/dx=y/x - y^2/x,y(1)=0.5,求出其数值解 -
蔽会肥儿:[答案] y=dsolve('Dy=y/x-y^2/x','y(1)=0.5','x') y = 1/(1/x + 1) 梯形公式: y(1)=0.5;x(1)=1;h=0.1; for n=1:99 x(n+1)=x(n)+h; y(n+1)=y(n)+h*( y(n)/x(n)-y(n)^2/x(n)); y(n+1)=y(n)+h/2*( y(n)/x(n)-y(n)^2/x(n) +y(n+1)/x(n+1)-y(n+1)^2/x(n+1) ); end plot(x,y,'y')

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网