Qiming
Posts:
10
Registered:
12/21/12
|
|
Re: get coefficients from a symbolic polynomial
Posted:
Jan 5, 2013 5:34 PM
|
|
"Nasser M. Abbasi" wrote in message <kca7tr$o64$1@speranza.aioe.org>... > On 1/5/2013 3:49 PM, Qiming wrote: > > > > > Hi Nasser: > > > > Thanks for your reply. > > > > In your case, actually only 'x' is symbolic, the coefficients 0,1,2,3 are already > >in numerical form. But my question is: what if 0,1,2,3 are all in symbolic forms? > > > > I only give a simple example so that you might think why can't I > >directly put 0,1,2,3 in the expression. However, in my real application, > >those coefficients long and complicated and are generated by MATLAB symbolic > >tool box. I just want to "retrieve" those coefficients for my future use. Of > >course I can check those coefficients from the command window, but I > >don't want to put them back in my code by hand. > > > > Qiming > > > > why is it so hard for someone to just make a simple example to explain > what they mean? one spends so much time writing words, instead of > making a simple code example. > > If you mean this: > > EDU>> syms x a b > EDU>> y=a*x^2+b*x+1; > > then do > > EDU>> coeffs(y,x) > [ 1, b, a] > > If you still mean something else, then make up a small example. Do not > explain in words, show a small Matlab example of the input polynomial > itself. complete and self contained example. I am sure you can make > one up if you try. > > --Nasser > > >
Nasser:
Okay, let me explain my questions more in details with an example.
What I'm trying to do is to test the Galerkin's method, the following is the part of the code where I have an issue:
------------------------------------------------------------------------------------------------------ clc; close all; clear all;
NumOrder = 2; % approximation order
t0 = 0; tf = 1; % time span for integration
syms x c1 c2; y_x = c1*x + c2*x^2; % trial function, 2nd order polynomial dy_x = diff( y_x, x ); residual_error = dy_x + y_x - 1; % residual error
% Take the inner product of residual error and basis function IP(1) = int( residual_error*x, t0, tf ); IP(2) = int( residual_error*x^2, t0, tf ); ... ... ... ------------------------------------------------------------------------------------------------------
If just run the code to where I provide, the MATLAB gives: IP(1) = (5*c1)/6 + (11*c2)/12 - 1/2 IP(2) = (7*c1)/12 + (7*c2)/10 - 1/3 What I need is the coefficient of IP, i.e., 5/6, 11/12, -1/2 and 7/12, 7/10, -1/3 c1 and c2 are the variables I need to solve. I want to construct a matrix A with the coefficents: A = [ 5/6, 11/12; 7/12, 7/10 ] and a vector b with b = [ 1/2; 1/3 ]; After that, I can solve c1 and c2 by A*c=b, or c = inv(A)*b, where c = [c1;c2]. That's what I really want to do.
Hope this time it's clear.
Qiming
|
|