楼主: julie_qu
1808 9

求matlab编程 [推广有奖]

  • 0关注
  • 0粉丝

初中生

61%

还不是VIP/贵宾

-

威望
0
论坛币
19 个
通用积分
0.1500
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
478 点
帖子
8
精华
0
在线时间
24 小时
注册时间
2011-9-27
最后登录
2024-5-21

楼主
julie_qu 发表于 2012-3-21 20:51:25 |AI写论文
3论坛币
求高人帮我编个批量解方程的程序:

p1=b0+(a1-x)*b0/(1+x)+(a2-x)*b1/(1+x)^2+(a3-x)*b2/(1+x)^3+(a4-x)*b3/x*(1+x)^4


p1 b0 b1 b2 b3  a1 a2 a3 a4 为已知变量,求x.

Book.xls (15.5 KB)


用牛顿法求解,x 的取值在0到1 之间。样本数据我已上传。

论坛币有限,求好心人帮助,不甚感激!

关键词:MATLAB编程 MATLAB atlab matla Mat matlab 好心人 程序 样本

沙发
小乖猫 发表于 2012-3-21 21:01:17
excel 单变量求解吧 哈哈
人生重要的不是所站的位置,而是所朝的方向。

藤椅
godyhand 发表于 2012-3-21 21:11:28

板凳
小乖猫 发表于 2012-3-21 21:26:00
如果表达式没错结果就是这样,但是有一点,有一个数字倒数第三个还是倒数第四个吧,好像解是发散的,没有适合x满足这个表达式,如果楼主想的是用牛顿法计算的话,可能我考虑更多的是实用性,反正结果是算出了
人生重要的不是所站的位置,而是所朝的方向。

报纸
julie_qu 发表于 2012-3-22 09:56:35
小乖猫 发表于 2012-3-21 21:26
如果表达式没错结果就是这样,但是有一点,有一个数字倒数第三个还是倒数第四个吧,好像解是发散的,没有适 ...
谢谢,有没有程序呢?我需要程序哈,拜托

地板
yiyeluo 发表于 2012-3-22 11:02:04
得小乖猫帮你拉

7
julie_qu 发表于 2012-3-22 12:06:55
急呀,求好心人帮助!帮我编个程序吧?

8
小乖猫 发表于 2012-3-23 02:12:25
matlab 解方程
1、 代数方程
(1)单个变量的方程:solve(f,t)——对f 中的符号变量t 解方程f=0(t 缺省值为x 或最接近x 的字母)

(2)多个变量的方程:


第一步:定义变量syms x y z …;
第二步:求解[x,y,z,...]=solve(‘eqn1′,’eqn2′,…,’eqnN’,'var1′,’var2′,…’varN’);
第三步:求出n位有效数字的数值解x=vpa(x,n);y=vpa(y,n);z=vpa(z,n);…。

例1:
syms a b x c
f=a*x^2+b*x+c
s=solve(f)
ss=solve(f,b)
f =a*x^2+b*x+c
s =
[ 1/2/a*(-b+(b^2-4*a*c)^(1/2))]
[ 1/2/a*(-b-(b^2-4*a*c)^(1/2))]
ss =-(a*x^2+c)/x

注:求解形如f(x)=q(x)形式的方程,则需要用单引号把方程括起来。
例:
s=solve(‘cos(2*x)+sin(x)=1′)
s =
[ 0]
[ pi]
[ 1/6*pi]
[ 5/6*pi]
例:求解方程组
[x,y]=solve(‘x^2+x*y+y=3′,’x^2-4*x+3=0′)
x =
[ 1]
[ 3]
y =
[ 1]
[ -3/2]
即解为(1,1)和(3,-3/2)



例2 :

二元二次方程组,共4个实数根;
还有的同学问,如何用matlab解高次方程组(非符号方程组)?举个例子好吗?
解答如下:
基本方法是:solve(s1,s2,…,sn,v1,v2,…,vn),即求表达式s1,s2,…,sn组成的方程组,求解变量分别v1,v2,…,vn。
具体例子如下:
x^2 + x*y + y = 3
x^2 – 4*x + 3 = 0
解法:
>> [x,y] = solve(‘x^2 + x*y + y = 3′,’x^2 – 4*x + 3 = 0′)
运行结果为
x =
1 3
y =
1 -3/2
即x等于1和3;y等于1和-1.5

>> [x,y] = solve(‘x^2 + x*y + y = 3′,’x^2 – 4*x + 3= 0′,’x',’y')
x =
1 3
y =
1 -3/2
结果一样,二元二方程都是4个实根。

(matlab 解方程)

2、 微分方程
dsolve(‘S’,'s1′,’s2′,…,’x')
其中S为方程,s1,s1,s3,…为初始条件,x 为自变量。方程S中用D表示求导数,D2,D3,…表示二阶、三阶等高阶导数;初始条件缺省时,给出带任意常数C1,C2,..的通解;自变量缺省值为t 。也可求解微分方程组。
例:
dsolve(‘Dy=1+y^2′)
ans =tan(t+C1)
y=dsolve(‘Dy=1+y^2′,’y(0)=1′,’x')
y =tan(x+1/4*pi)
x=dsolve(‘D2x+2*D1x+2*x=exp(t)’,'x(0)=1′,’Dx(0)=0′)
x =1/5*exp(t)+3/5*exp(-t)*sin(t)+4/5*exp(-t)*cos(t)

S=dsolve(‘Df=3*f+4*g’,'Dg=-4*f+3*g’) %解微分方程组
S =
f: [1x1 sym]
g: [1x1 sym]
计算结果返回在一个结构S中,为了看到其中 f,g的值,有如下指令
f=S.f
g=S.g

f =exp(3*t)*(cos(4*t)*C1+sin(4*t)*C2)
g =-exp(3*t)*(sin(4*t)*C1-cos(4*t)*C2)
人生重要的不是所站的位置,而是所朝的方向。

9
小乖猫 发表于 2012-3-23 02:14:14
把样本数据导入到矩阵变量,比如A,然后批量用循环可求解,matlab自带的solve函数无需用玄切法编写程序求解的
人生重要的不是所站的位置,而是所朝的方向。

10
xujing1990mail 发表于 2013-4-14 20:06:31
为什么我的结果变成了这个样子,呜呜
f =

    p1: [7x1 sym]
    p2: [7x1 sym]

>> a1=f.p1,a2=f.p2

a1 =

                                                                 -1/240000
                                         5192.5824021609778354807602654908
                                        -2.0620791512749016524368870681791
                                        -192.58240339337219873333902681931
                                        -199.97895405813681965383399512753
- 17029.673890418744341796465647226*i - 9898.9794848624302910539085115708
   17029.673890418744341796465647226*i - 9898.9794848624302910539085115708


a2 =

                                                                  1/240000
                                         5192.5824049735261943817297583651
                                        -199.97895396950348621025604093373
                                        -192.58240374113182523994250665794
                                        -2.0620705556600126002914217582987
   17029.673887996751523562568570006*i - 9898.9794862702821018322865611742
- 17029.673887996751523562568570006*i - 9898.9794862702821018322865611742

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-31 02:56