带积分的二元方程组,未知数在积分中,能用matlab程序求解吗

带积分的二元方程组,未知数在积分中,能用matlab程序求解吗,第1张

如何用matlab求解带积分的二元方程组?分析题主给出的求解代码存在着下列几个方面的问题:

问题一,由于给出的被积函数含有未知变量x1、x2,所以用integral函数不能求其积分值,而出现出错警告;

解决思路,设置未知变量x1、x2分别为某具体值,然后再用integral函数求其积分值。

问题二,在这里使用 vpasolve函数求解变量x1、x2不是太恰当;由于方程里含有不完整的积分式,所以用 vpasolve函数无法得到解。

解决思路,使用fsolve函数求解其方程的数值解。

解决步骤:

1、创建求解带积分的二元方程组函数,f =func(x)。其内容:

f1=@(t)exp(-(1-x2)t)/t; %定义方程

f2=@(t)exp(-x1t)/t; %定义方程

S1=integral(f1,1,+inf); %求积分值

S2=integral(f2,1,+inf); %求积分值

f = [x1-S1,x2-(1- S2)]; %

2、用fsolve函数求解。即

sol = fsolve(@func,rand(1,2));

x1=sol(1) %x1的解

x2=sol(2) %x2的解

3、完善代码后运行可以得到

x1 = 052761

x2 = 047239

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

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

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

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

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

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

MATLAB上重积分的计算方法综述

MATLAB中采用数值方法计算重积分,我所知范围内有以下资源可用:

1、对于积分上下限为固定值的情况,可以使用dblquad和triplequad函数;

2、对于积分上下限不是固定值的情况(即所谓一般区域的重积分),有以下几种方法:

最笨的做法是所谓的拓展函数法,也就是把被积函数乘上一个与积分限有关的逻辑表达式,然后调用dblquad或triplequad。这种做法效率很低,误差大,而且对于复杂积分区域的逻辑表达式也比较难写,所以很少用。

从2009a开始,增加了对一般区域二重积分的计算函数quad2d,但没有一般区域三重积分的计算函数。

第三方NIT工具箱有二重积分的quad2dggen函数。

从2012a开始,增加了integral、integral2和integral3函数。这几个函数比起早期的quad系列函数有不少改进,比如支持瑕积分以及任意区域的重积分,如果使用的是2012a之后的版本,建议使用这组函数。我猜测这几个函数应该也可以移植到早期的版本上使用,但没试。

如果使用的MATLAB版本较低(但至少应在70以上),可以使用SimWe仿真科技论坛rocwoods 版主提出的方法,该方法主要使用匿名函数以及arrayfun两种工具,受到不少人的推崇,还出版了一本相关的书(当然,只是部分内容)。我这里使用的就是这种方法。

借助于符号数学工具箱的int函数,即使不能求出显式解,多数情况下也能使用vpa得到足够精度的结果,但耗时往往较长(具体情况与符号运算内核有关)。

实例

1、三重积分

>> a=1;b=2;

>> quadl(@(xx) arrayfun(@(x) quadl(@(yy) arrayfun(@(y) quadl(@(z) a(8-b)^2/((x-1)^2+y^2+z^2)^2,15,sqrt(2405-y^2-(x-1)^2)),yy),-sqrt(0156-(x-1)^2),sqrt(0156-(x-1)^2)),xx),1,1394968)

ans =

    00405

2、二重积分

>> a=1;b=2;

>> quadl(@(xx) arrayfun(@(x) quadl(@(y) a(8-b)^2/((x-1)^2+y^2+(x^2+y^2)^2)^3,x^2-2,x^3-1),xx),1,4)

ans =

    17039

说明

1、不太清晰,有些符号看不太清楚(尤其是积分限),请自行认真核实。

2、第一题的三重积分,我把积分上限原来的1395进行微调,改为1394968,这是因为,如果按照1395计算,则y的积分限根号下的内容可能取值

>> 0156-(1395-1)^2

ans =

 -25000e-005

从而导致结果出现复数。

3、关于我使用的方法,要说清楚需要花点时间。度娘不让贴链接,如果想详细了解,你可以自行搜索一下“一般区域二重、三重积分MATLAB计算方法”相关的内容。我上传的附件是该论坛另一位高手bainhome 把相关内容做成PDF文件,可供参考。不过,我觉得如果花点时间看看论坛原帖的讨论,可能有更大收获。

4、我使用符号的习惯与rocwoods原作略有区别。

代码就是昨天写的那样:

syms x3

n=x3^2;

t1=1+2i;

J=int(n,x3,t1,x3)

得到的结果是

J =

1/3x3^3+11/3+2/3i

这个结果是很容易检验的:因为x^2的不定积分是1/3x^3,现在,把积分上限x3代入,即可得到上式中的第一项1/3x3^3,而把积分下限代入则得到后面两项(注意负号):

>> -1/3(t1)^3

ans =

           366666666666667 +     0666666666666667i

这里因为t1直接用数值量而非符号量,所以显示出来的是浮点数的形式。

我没有自己看你的程序,不过通过图可以看得清楚啊,实际输出用‘o’表示,预测的用‘+’表示。第一个图估计是初始化,也就是第一步,预测还没有开始,还是相等的点。而下图表示,已经预测结束,与实际基本吻合。

以上就是关于带积分的二元方程组,未知数在积分中,能用matlab程序求解吗全部的内容,包括:带积分的二元方程组,未知数在积分中,能用matlab程序求解吗、如何将电路的状态方程写入matlab程序产生数据、求助大神,这样的积分如何积(a,b根据不同值求出来的中间值),用matlab编写程序,或者c++都可以等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/9850050.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存